当前位置: 首页 > 知识库问答 >
问题:

iText7读取已创建

薄高懿
2023-03-14

我正在将AsposePdf的使用替换为itext7。并且我需要阅读一个pdf文档的CreateDate属性与itext7库以及。

就目前而言,我是这样实施的:

PdfDocument doc = new PdfDocument(pdfReader);
string xmp = Encoding.UTF8.GetString(doc.GetXmpMetadata());
XElement xmpXml = XElement.Parse(xmp);

XElement dateElement = (from e in xmpXml.Descendants()
                                    where 0 == string.Compare(e.Name.LocalName, "CreateDate", true)
                                    select e).SingleOrDefault();

DateTime? createDateTime = null;
if (dateElement != null)
{
    createDateTime = DateTime.Parse(dateElement.Value);
}

但我不确定这是否是阅读Createdate这样的属性的正确方法。理论上:在pdf文档的不同版本中,CreateDate可能是在不同的地方编写的。或者XMP部分的XML结构可能会被更改。

因此,我希望iText7处理了提取CreateDate属性的逻辑。

有没有更好的方法来完成我在代码部分用IText7实现的事情?

谢谢你!

共有1个答案

东方森
2023-03-14

createdate/creationdate可以驻留在两个地方:文档信息字典和文档XMP元数据。

理论上,这些可能是不同步的,您将不得不选择哪一个给予优先,但通常所有主要的PDF生产者保持这些日期同步。

对于提取这两个值,iText提供了标准函数

// Info dictionary
String date = pdfDocument.getDocumentInfo().getMoreInfo("CreationDate");

// XMP metadata
if (pdfDocument.getXmpMetadata() != null) {
    XMPMeta meta = XMPMetaFactory.parseFromBuffer(pdfDocument.getXmpMetadata());
    XMPDateTime dateTime = meta.getPropertyDate(XMPConst.NS_XMP, PdfConst.CreateDate);
}

请注意代码是Java的,但应该很容易适应.NET

 类似资料:
  • 我正在尝试使用iText7库升级我的代码。以前我使用过iTextSharp库,但看起来iText7是全新的。我尝试阅读pdf文档,但在“未找到pdf标题”之间遇到了一个异常。这是我的密码 我做错了什么?

  • 读取专题信息 调用地址 http://api.bilibili.cn/sp 参数 字段 必选 类型 说明 spid false int 专题编号 title false string 专题名称 返回 返回值字段 字段类型 字段说明 spid int 专题SPID title string 专题名 pubdate int 发布日期 (UNIX Timestamp) create_at date 发布

  • 我正处于从iTextSharp转移到iText7的早期阶段,但很早就失败了。这是代码片段: 这将产生一个错误: 对象似乎是有效的,并且返回一个长度和返回。我已经成功地使用类似的代码来创建和写入一个PDF,但是不能从一个PDFReader对象创建一个PDF文档。我错过了一些简单的东西吗?谢谢

  • 我在我的项目中有下一个代码,它时不时地与

  • 我有一个场景,我需要用iText7库从pdf中获取签名信息。签名可能存在,也可能不存在。当我为没有任何数字签名的PDF实例化一个新的对象时,会出现异常 “没有相关的PdfWriter用于进行间接操作。” .如果有签名,就很好用。我不确定如何纠正这个异常。 更新为包含代码示例

  • 问题内容: 无论如何,我可以写到tempfile并将其包含在命令中,然后关闭/删除它。我想执行命令,例如:some_command / tmp / some-temp-file。 提前谢谢了。 问题答案: 如果需要带有名称的临时文件,则必须使用该功能。然后就可以使用了。有关详细信息,请阅读 http://docs.python.org/library/tempfile.html。