微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

附加模式下的 iText 7 嵌入文件不起作用

如何解决附加模式下的 iText 7 嵌入文件不起作用

PdfDocument pdfDoc = new PdfDocument(
        new PdfReader(in),new PdfWriter(destPath),new StampingProperties().useAppendMode());

PdfFileSpec spec = PdfFileSpec.createEmbeddedFileSpec(
        pdfDoc,annex.getInputStream(),annex.getFileName(),null,null);

pdfDoc.addFileAttachment(annex.getFileName(),spec);
log.info("add file attachment:{}",annex.getFileName());

pdfDoc.close();

解决方法

使用此代码和 iText 7.1.15,我测试了添加嵌入文件,有和没有 追加模式

String fileName = "test.txt";

StampingProperties stampingProp = new StampingProperties();
if (append)
    stampingProp.useAppendMode();

PdfDocument pdfDoc = new PdfDocument(new PdfReader(in),new PdfWriter(dest),stampingProp);
PdfFileSpec spec = PdfFileSpec.createEmbeddedFileSpec(pdfDoc,new FileInputStream(fileName),fileName,null,null);
pdfDoc.addFileAttachment(fileName,spec);
pdfDoc.close();

在这两种情况下,文件都被正确嵌入,并且在 PDF 查看器中打开生成的 PDF 文档时按预期显示。

输入和输出PDF的差异,只是为了验证第一个使用追加模式更新,第二个没有:

diff 1

diff 2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。