gpt4 book ai didi

pdf - iText 在 sandbox.stamper.SuperImpose.java 中设置创建日期和修改日期

转载 作者:行者123 更新时间:2023-12-02 00:48:07 30 4
gpt4 key购买 nike

我正在尝试在 Superimposing content from one PDF into another PDF 中设置创建日期和修改日期示例 sandbox.stamper.SuperImpose.java。

原则(我认为)很明确:

使用getInfo()然后做

info.put(PdfName.CREATIONDATE, new PdfDate(calendar));

info.put("CreationDate", "D:20160508090344+02'00'");

取决于是否HashMap<String, String>或 PdfDictionary 可用。

但是在哪里呢?我似乎不太能找到插入代码的正确位置...我在覆盖原始 Title 属性时也遇到了麻烦。

最佳答案

请查看以下文件state.pdfstate_metadata.pdf .

前者的元数据如下所示:

enter image description here

后者的元数据如下所示:

enter image description here

您可以看到标题和日期已更改。

现在看一下 ChangeMetadata示例了解这是如何完成的:

public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
Map info = reader.getInfo();
info.put("Title", "New title");
info.put("CreationDate", new PdfDate().toString());
stamper.setMoreInfo(info);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
XmpWriter xmp = new XmpWriter(baos, info);
xmp.close();
stamper.setXmpMetadata(baos.toByteArray());
stamper.close();
reader.close();
}

更改标题很容易:

info.put("Title", "New title");

更改创建日期需要使用特定的日期格式,这就是我使用 PdfDate 对象的原因:

info.put("CreationDate", new PdfDate().toString());

旧版本的 iText 可能不允许更改创建日期,因此请确保您使用的是最新的 iText 版本。

修改日期会自动更改。使用当前日期,您无法覆盖它。

以下行仅更改 Info 字典中的元数据:

Map info = reader.getInfo();
info.put("Title", "New title");
info.put("CreationDate", new PdfDate().toString());
stamper.setMoreInfo(info);

如果您使用旧版本的 Adob​​e Reader,您将看到更改,但较新的 PDF 查看器会优先选择存储在 XMP 元数据流中的元数据。这意味着您还必须创建一个新的 XMP 流:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
XmpWriter xmp = new XmpWriter(baos, info);
xmp.close();
stamper.setXmpMetadata(baos.toByteArray());

当您说您已更改信息字典中的标题并且您没有看到更改时,您也应该尝试更改 XMP 元数据。在某些情况下(例如,当您需要满足 PDF/A 合规性时),具有两组相互矛盾的不同元数据的 PDF 被视为无效 PDF。

关于pdf - iText 在 sandbox.stamper.SuperImpose.java 中设置创建日期和修改日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37110820/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com