首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iText7阅读CreateDate

iText7阅读CreateDate
EN

Stack Overflow用户
提问于 2020-04-15 11:16:29
回答 1查看 378关注 0票数 1

我将把AsposePdf的用法改为iText7。我还需要阅读CreateDate属性的pdf文档以及itext7库。

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

代码语言:javascript
复制
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实现的吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-04-16 06:47:31

CreateDate/CreationDate有两个地方可以驻留: document字典和document元数据。

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

为了提取这两个值,iText提供了标准函数:

代码语言:javascript
复制
// 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。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61227358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档