You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iText C#:如何修改或移除PDF元数据中的创建日期?

如何修改或移除PDF元数据中的创建日期(基于iText)

当然可以修改或移除PDF的创建日期啦!你之前遇到的问题我太懂了——直接操作writer.Info其实只是在修改元数据字典的副本,你的修改根本不会同步到正在生成的PDF里。下面分两种场景,结合不同版本的iText给你正确的操作方法:

一、如果你用的是iText 5.x版本

移除创建日期

你需要先获取当前的元数据字典,移除CREATIONDATE字段后,再把修改后的字典设置回PdfWriter:

// 假设你已经初始化了Document和PdfWriter实例
PdfDictionary metadata = writer.getInfo();
// 移除创建日期字段
metadata.remove(PdfName.CREATIONDATE);
// 将修改后的元数据设置回writer,让生效
writer.setInfo(metadata);

修改为自定义创建日期

同样的逻辑,先获取字典,修改后再设置回去:

PdfDictionary metadata = writer.getInfo();
// 设置你想要的日期,比如2017年1月1日
metadata.put(PdfName.CREATIONDATE, new PdfDate(new DateTime(2017, 1, 1)));
writer.setInfo(metadata);

二、如果你用的是iText 7.x版本

iText 7的API做了优化,操作起来更直观,直接通过PdfDocument的文档信息对象修改即可:

移除创建日期

// 初始化PdfDocument和PdfWriter
PdfDocument pdfDoc = new PdfDocument(new PdfWriter("output.pdf"));
PdfDocumentInfo docInfo = pdfDoc.getDocumentInfo();
// 直接移除创建日期
docInfo.remove(PdfName.CREATIONDATE);

// 别忘了关闭文档,确保修改写入
pdfDoc.close();

修改为自定义创建日期

PdfDocument pdfDoc = new PdfDocument(new PdfWriter("output.pdf"));
PdfDocumentInfo docInfo = pdfDoc.getDocumentInfo();
// 设置自定义创建日期
docInfo.setCreationDate(new PdfDate(new DateTime(2017, 1, 1)));

pdfDoc.close();

简单来说,核心就是:别直接修改Info返回的副本,一定要通过官方提供的API把修改后的元数据同步回PDF实例里,这样你的修改才会真正生效。

内容的提问来源于stack exchange,提问作者PraiseTheBaud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 02:29:08