Java 删除页面已刷新
我用Excel文件中的数据创建了一个PDF文件。我不确定发生了什么,但当我试图删除一个PdfPage并将其插入其他位置时,它显示了警告消息“删除页面已刷新” 使用的代码非常简单:Java 删除页面已刷新,java,itext7,Java,Itext7,我用Excel文件中的数据创建了一个PDF文件。我不确定发生了什么,但当我试图删除一个PdfPage并将其插入其他位置时,它显示了警告消息“删除页面已刷新” 使用的代码非常简单: PdfDocument pdf = ...; .... PdfPage page = pdf.removePage(10); pdf.addPage(1, page); 但我得到了警告和错误: [main]WARN com.itextpdf.kernel.pdf.PdfPage-删除页面已关闭 已经被冲走了。线程“m
PdfDocument pdf = ...;
....
PdfPage page = pdf.removePage(10);
pdf.addPage(1, page);
但我得到了警告和错误:
[main]WARN com.itextpdf.kernel.pdf.PdfPage-删除页面已关闭
已经被冲走了。线程“main”中出现异常
com.itextpdf.kernel.PdfException:flush.page.cannot.be.added.or.inserted
在
com.itextpdf.kernel.pdf.PdfDocument.checkAndAddPage(PdfDocument.java:1473)
位于com.itextpdf.kernel.pdf.PdfDocument.addPage(PdfDocument.java:437)
老实说,我确实用其他一些PDF文件尝试了上述代码,它可以删除和插入页面。我的PDF文件可能的原因是什么
我的应用程序中使用的完整代码:
PdfWriter writer;
PdfDocument pdfDocument;
Document document;
try {
writer = new PdfWriter(FileConfigurator.getAbsoluteResultFilePath(),
new WriterProperties().addXmpMetadata().setPdfVersion(PdfVersion.PDF_1_7));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
//Initialize PDF document
pdfDocument = new PdfDocument(writer);
// Initialize document
document = new Document(pdfDocument);
pdf.copyPagesTo(10,10,pdf,1);pdf.removePage(10+1)代码>作为解决方法。也许你已经写了文件?正如在flush=write buffer
中,而不是flush=flush through the toilet
。基本上,这意味着在删除页面之前,您要删除的页面实际上已写入到输出流中。同一段代码可以在不同的输入上工作,但这并不能证明任何事情。iText7的默认行为是提前并经常刷新,以限制执行期间所需的内存量。异常表示该特定页面已经写入outputstream,因此不能再在代码中进行操作@Joop Eggen的代码应该会导致你想要的行为。通常,在插入和移动现有页面时,copyPagesTo
应该是您的默认方法
将触发一个NullPointerException,我认为我们应该将它复制到另一个topdf
中作为参数。我生成的PDF文件现在已经有60多页,里面有图片,但是仍然可以禁止刷新PDF吗?你能准确地展示你是如何创建文档的吗?我指的是您标记为…
的部分。您是否使用layout
模块中的Document
来创建内容?pdf.copyPagesTo(10,10,pdf,1);pdf.removePage(10+1)代码>作为解决方法。也许你已经写了文件?正如在flush=write buffer
中,而不是flush=flush through the toilet
。基本上,这意味着在删除页面之前,您要删除的页面实际上已写入到输出流中。同一段代码可以在不同的输入上工作,但这并不能证明任何事情。iText7的默认行为是提前并经常刷新,以限制执行期间所需的内存量。异常表示该特定页面已经写入outputstream,因此不能再在代码中进行操作@Joop Eggen的代码应该会导致你想要的行为。通常,在插入和移动现有页面时,copyPagesTo
应该是您的默认方法
将触发一个NullPointerException,我认为我们应该将它复制到另一个topdf
中作为参数。我生成的PDF文件现在已经有60多页,里面有图片,但是仍然可以禁止刷新PDF吗?你能准确地展示你是如何创建文档的吗?我指的是您标记为…
的部分。您是否正在使用布局
模块中的文档
创建内容?