Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过覆盖IText中的原始文件来更改现有PDF的PDF版本?_Java_Pdf_Itext - Fatal编程技术网

Java 如何通过覆盖IText中的原始文件来更改现有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)

我有以下代码来更改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));
pdfDoc.close();
但是通过这样做,我得到了一个错误,Java运行时环境检测到了一个致命错误:。。。。无法写入核心转储。核心转储已被禁用


所以我想我不能用这种方式读写同一个文件。还有别的办法吗?我正在使用IText 7 for Java

您不能。不可能同时读取和写入同一个PDF文件。您必须写入一个临时文件。您的临时文件也可以是内存流,它不必是磁盘上的文件。但您必须先关闭原始文件,然后才能对其进行写入


请记住,如果代码出错,则原始文件将被销毁。

此问题并非特定于iText或PDF文件格式。任何结构文件格式都有同样的挑战。请参阅这是否回答了您的问题?