如何将xmp填充到PDF页面的/ Metadata条目

时间:2017-02-13 22:43:08

标签: xml pdf itext metadata xmp

我正在开发一个项目,它将元数据嵌入到现有PDF的每个页面(PDF / A3标准)。我有xml文件和页面数量一样多,程序会将相应的xml文件作为元数据嵌入到页面中。

到目前为止,我的程序使用iText 5为每个页面添加/ Metadata条目,我还可以在每个页面的元数据条目中添加一个简单的字符串或文本,并且可以在PDF树下显示Adobe Acrobat Pro中的结构。        这是我的代码,其中向页面添加/元数据输入:

        writer.addPageDictEntry(PdfName.METADATA, new PdfString("123"));

到目前为止,问题是如何将xml添加到/ Metadata条目?我的xml文件是一些简单的树结构,我不知道如何将xml文件转换为PdfObject。通过iText开发者网站,它说每个页面中的/ Metadata条目应该包含xmp的引用,我不知道如何这样做。我应该将每个xml文件嵌入到一起,并将该部分的引用传递到每个页面的条目中吗?

This screenshot of acrobat pro shows what my program can do so far, click here to see the pic

1 个答案:

答案 0 :(得分:0)

addPageDictEntry()方法不是您所需要的。您应该尝试使用setPageXmpMetadata()方法。请参阅API docs

该方法接受byte[]。确保byte[]包含正确的XMP数据。该方法将在内部完成所有繁重的工作。也就是说:它将创建一个包含XML的流对象,它将从页面字典中添加一个引用到该流对象。您可能知道,PDF中禁止使用PDF流作为直接对象。

如果你想用艰难的方式,通过自己创建流对象,通过将引用添加到PdfWriter来获取引用,然后使用该引用作为值在页面词典中的一个条目,您可能会在这个问题的答案中找到灵感:How do I add XMP metadata to each page of an existing PDF using iTextSharp(或this example),但快捷方法应该更容易使用。