Java iText:添加水印后没有EOF标记
我需要将水印添加到作为字节数组提供的现有pdf文件中。我使用示例作为指导,但我创建的pdf似乎缺少文件结尾标记和“startxref”关键字 有什么我没有做对的吗?还是缺少什么Java iText:添加水印后没有EOF标记,java,pdf,itext,Java,Pdf,Itext,我需要将水印添加到作为字节数组提供的现有pdf文件中。我使用示例作为指导,但我创建的pdf似乎缺少文件结尾标记和“startxref”关键字 有什么我没有做对的吗?还是缺少什么 PdfReader reader = new PdfReader(inputPDF); PdfStamper stamper; stamper = new PdfStamper(reader, outputPDF); PdfContentByte under = stamper.getUn
PdfReader reader = new PdfReader(inputPDF);
PdfStamper stamper;
stamper = new PdfStamper(reader, outputPDF);
PdfContentByte under = stamper.getUnderContent(1);
Font f = new Font(FontFamily.HELVETICA, 15);
Phrase p = new Phrase(watermarkText, f);
ColumnText.showTextAligned(under, Element.ALIGN_CENTER, p, 297, 550, 0);
stamper.close();
reader.close();
我用工具检查了pdf文件,发现以下错误:
Open file.
0x80410108 - E - The end-of-file marker was not found.
- File: Formular_TEST_Watermark_V1_0.pdf
0x8041010A - E - The 'startxref' keyword or the xref position was not found.
- File: Formular_TEST_Watermark_V1_0.pdf
0x80410108 - E - The end-of-file marker was not found.
- File: Formular_TEST_Watermark_V1_0.pdf
Close file.
编辑:
上面的代码是正确的,我后来在将pdf传输回主应用程序时犯了一个错误,并且错误地假设我在添加水印时一定犯了一个错误,因为我已经成功地传输了多次pdf,并且认为我不会犯错误。我的错
为了完整起见,inputPDF和outputPDF分别是ByteArrayInputStream和ByteArrayInputStream。多亏了Paulo Soares的提示,我找到了真正的罪魁祸首。问题中的水印代码本身是正确的,并且做了它应该做的事情。我相应地更新了问题。多亏了保罗·索雷斯的暗示,我找到了真正的罪犯。问题中的水印代码本身是正确的,并且做了它应该做的事情。我相应地更新了问题。看起来不错,但您没有显示如何保存文档以及保存到什么位置。例如,如果保存不正确,保存到web是出了名的容易失败。请将损坏的PDF。。。。请解释一下什么是
inputPDF
和outputPDF
。谢谢Paulo,你的提示让我走上了正轨。上面的代码是正确的,并且执行它应该执行的操作。将xmlencoded带水印的pdf返回主应用程序是错误发生的地方,我忽略了我在那里犯的一个错误。它看起来不错,但您没有显示如何保存文档以及保存到什么位置。例如,如果保存不正确,保存到web是出了名的容易失败。请将损坏的PDF。。。。请解释一下什么是inputPDF
和outputPDF
。谢谢Paulo,你的提示让我走上了正轨。上面的代码是正确的,并且执行它应该执行的操作。将xmlencoded带水印的pdf返回到主应用程序是错误发生的地方,我忽略了我在那里犯的一个错误。