Java iText : No EOF marker after adding watermark

标签 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.

编辑:

上面的代码是正确的,当我将pdf传输回主应用程序时,我在代码中犯了一个错误,并错误地假设我在加水印时一定犯了错误,因为我已经成功传输了多次pdf,并且认为我不会在那里犯错误。我的错。

为了完整起见,inputPDF和outputPDF是ByteArrayInputStream和ByteArrayInputStream。

最佳答案

多亏保罗·苏亚雷斯的提示,我找到了真正的罪魁祸首。问题中水印本身的代码是正确的并且执行了它应该执行的操作。我相应地更新了问题。

关于Java iText : No EOF marker after adding watermark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38614660/

相关文章:

java - JHipster - 网关如何在微服务中进行身份验证?

java - 将 LineSeparator 移动到页面底部

python - pyPdf 无法从我的 PDF 中的某些页面中提取文本

java - 如何在Jasper Report PDF导出中自动打开书签?

c# - 如何在 iTextSharp 中创建目录

java - 通过占位符选择输入字段 - 元素不可见

java - 为什么我会收到以下简单代码片段的异常?

pdf - 读取 MS Office 生成的 PDF 文件时出错

java - Jasper 报告错误 : compiler class not found : org. codehaus.mojo.jasperreports.MavenJavacCompiler

java - Spring Boot自定义通过抛出异常接收带有HTTP OPTIONS的响应