ITEXT-大型PDF生成优化

ITEXT-大型PDF生成优化,itext,Itext,我必须生成大型PDF文件,其中包含30000行的表格。我必须生成大约40个文件,这需要19个小时。有谁能为同样的问题提出优化的方法。大部分时间由document.add(table)方法占用 我正在使用ITEXT 5.4 我使用了larElement接口的特性,在我的表中有40到96列 我可以稍后发布代码。下面是伪代码 public void createTable(rs,document){ PdfpTable table = new PdfPTable(96) table.s

我必须生成大型PDF文件,其中包含30000行的表格。我必须生成大约40个文件,这需要19个小时。有谁能为同样的问题提出优化的方法。大部分时间由document.add(table)方法占用

我正在使用ITEXT 5.4

我使用了larElement接口的特性,在我的表中有40到96列

我可以稍后发布代码。下面是伪代码

public void createTable(rs,document){
    PdfpTable table = new PdfPTable(96)
    table.setComplete(false);

    int K=1;

    while(rs.next) {

        for(int i=1,i <=columnCount;i++) {

            PdfPCell cell = new PdfPCell();

            Chunk chunk = new Chunk(rs.getString(i))

            cell.addElement(chunk);

            table.addCell(cell)

        }
        k++;
    }

    if(k%==10000) {
        document.add(table);
    }

    table.setComplete(true);
    document.add(table);
}
public void createTable(rs,文档){
PdfpTable表格=新PdfpTable(96)
表.setComplete(假);
int K=1;
while(rs.next){

对于(int i=1,我没有看到你的代码,我们帮不了你太多,但我可以说那太长了。我刚刚建立了一个30000行的表,有四列,只花了几秒钟。看看这篇文章,它展示了如何间歇性刷新表以减少内存消耗,这可能会对你有所帮助。它是C语言,但你应该是一个我能很容易地翻译出来。@ChrisHaas的答案中的示例使用了一个4列表格,而您有40列表格。在我看来,这表明您应该比他更早地刷新表格。相反,您应该晚很多时间刷新表格!他选择1000行作为断点,您可以选择10000行。@Ashish刷新将帮助我避免内存问题。我不知道我没有内存问题。我想减少时间。如果我减少flush count document.add()方法,wull会调用更多的时间,这也会增加生成时间。我可能格式化了错误的代码,但正如@mkl所说的,看起来你是在循环外部而不是内部刷新。