我需要为现有的pdf文件添加水印作为字节数组提供。我使用this示例作为指导,但我创建的pdf似乎缺少文件结束标记和' startxref'关键字。
我有什么不对的吗?还是缺少的东西?
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();
我使用this工具检查了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.
编辑:
上面的代码是正确的,我在将代码转移回主应用程序时在代码中犯了一个错误,并且错误地做出了假设我在加水印时一定犯了错误,因为我已经成功地多次传输了pdfs,并且以为我不会在那里犯错。我的坏。
为了完整性,inputPDF和outputPDF是ByteArrayInputStream和ByteArrayInputStream。
答案 0 :(得分:0)
感谢Paulo Soares的暗示,我找到了真正的罪魁祸首。问题中水印本身的代码是正确的,并且做了应该做的事情。我相应地更新了这个问题。