Java 如何通过覆盖IText中的原始文件来更改现有PDF的PDF版本?
我有以下代码来更改pdf文件的pdf版本。我不希望在最后有第二个文件,而是希望直接更新原始文件的pdf版本。因此,我的阅读和写作PDF是相同的:Java 如何通过覆盖IText中的原始文件来更改现有PDF的PDF版本?,java,pdf,itext,Java,Pdf,Itext,我有以下代码来更改pdf文件的pdf版本。我不希望在最后有第二个文件,而是希望直接更新原始文件的pdf版本。因此,我的阅读和写作PDF是相同的: WriterProperties wp = new WriterProperties(); wp.setPdfVersion(PdfVersion.PDF_1_6); PdfDocument pdfDoc = new PdfDocument(new PdfReader("orig.pdf"), new PdfWriter("orig.pdf", wp)
WriterProperties wp = new WriterProperties();
wp.setPdfVersion(PdfVersion.PDF_1_6);
PdfDocument pdfDoc = new PdfDocument(new PdfReader("orig.pdf"), new PdfWriter("orig.pdf", wp));
pdfDoc.close();
但是通过这样做,我得到了一个错误,Java运行时环境检测到了一个致命错误:。。。。无法写入核心转储。核心转储已被禁用
所以我想我不能用这种方式读写同一个文件。还有别的办法吗?我正在使用IText 7 for Java您不能。不可能同时读取和写入同一个PDF文件。您必须写入一个临时文件。您的临时文件也可以是内存流,它不必是磁盘上的文件。但您必须先关闭原始文件,然后才能对其进行写入
请记住,如果代码出错,则原始文件将被销毁。此问题并非特定于iText或PDF文件格式。任何结构文件格式都有同样的挑战。请参阅这是否回答了您的问题?