Java iText:添加水印后没有EOF标记

时间:2016-07-27 13:41:03

标签: java pdf itext

我需要为现有的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。

1 个答案:

答案 0 :(得分:0)

感谢Paulo Soares的暗示,我找到了真正的罪魁祸首。问题中水印本身的代码是正确的,并且做了应该做的事情。我相应地更新了这个问题。