我需要在java(使用itext)中创建以下xmp元数据并将其放入我的pdf中。Itext使用Java创建PDF格式的XMP
<rdf:Description rdf:about="" xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/" xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema#" xmlns:pdfaProperty="http://www.aiim.org/pdfa/ns/property#" xmlns:pdfaType="http://www.aiim.org/pdfa/ns/type#" xmlns:pdfaField="http://www.aiim.org/pdfa/ns/field#"> <pdfaExtension:schemas>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<pdfaSchema:schema>ABI Assegni Schema</pdfaSchema:schema> <pdfaSchema:namespaceURI>http://abi.it/std/cheque/xmlns</pdfaSchema:namespaceURI> <pdfaSchema:prefix>assegni</pdfaSchema:prefix>
<pdfaSchema:property>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>IDDocumento</pdfaProperty:name> <pdfaProperty:valueType>Text</pdfaProperty:valueType> <pdfaProperty:category>external</pdfaProperty:category> <pdfaProperty:description>Identificativo univoco del documento</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>datachiusura</pdfaProperty:name> <pdfaProperty:valueType>Date</pdfaProperty:valueType> <pdfaProperty:category>external</pdfaProperty:category> <pdfaProperty:description>Data e ora della produzione del file</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>oggettodocumento</pdfaProperty:name> <pdfaProperty:valueType>Text</pdfaProperty:valueType> <pdfaProperty:category>external</pdfaProperty:category> <pdfaProperty:description>Oggetto del documento</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>soggettoproduttore</pdfaProperty:name> <pdfaProperty:valueType>soggetto</pdfaProperty:valueType> <pdfaProperty:category>external</pdfaProperty:category> <pdfaProperty:description>Soggetto produttore</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>destinatario</pdfaProperty:name> <pdfaProperty:valueType>soggetto</pdfaProperty:valueType> <pdfaProperty:category>external</pdfaProperty:category> <pdfaProperty:description>Destinatario</pdfaProperty:description>
</rdf:li> </rdf:Seq>
</pdfaSchema:property>
</rdf:li>
</rdf:Bag>
</pdfaExtension:schemas>
</rdf:Description>
直到现在我试过这个代码部分:
PdfReader reader = new PdfReader(baos.toByteArray());
PdfAStamper stamper = new PdfAStamper(reader, baos, PdfAConformanceLevel.PDF_A_1B);
String namespaceExtension = new String("http://www.aiim.org/pdfa/ns/extension/");
String namespaceSchema = new String("http://www.aiim.org/pdfa/ns/schema#");
String namespaceProperty = new String("http://www.aiim.org/pdfa/ns/property#");
String namespaceType = new String("http://www.aiim.org/pdfa/ns/type#");
String namespaceField = new String("http://www.aiim.org/pdfa/ns/field#");
XMPSchemaRegistry registry = XMPMetaFactory.getSchemaRegistry();
registry.registerNamespace(namespaceExtension, "pdfaExtension");
registry.registerNamespace(namespaceSchema, "pdfaSchema");
registry.registerNamespace(namespaceProperty, "pdfaProperty");
registry.registerNamespace(namespaceType, "pdfaType");
registry.registerNamespace(namespaceField, "pdfaField");
XmpWriter w = new XmpWriter(baos);
w.appendArrayItem(namespaceExtension, "schemas", "a");
w.close();
writer.setXmpMetadata(baos.toByteArray());
而创建XMP如下:
<pdfaExtension:schemas>
<rdf:Bag>
<rdf:li>a</rdf:li>
</rdf:Bag>
现在,我不能就如何去理解。任何想法如何做到这一点?
在此先感谢
你试过了什么?您使用的是哪种版本的iText?从某个5.x.y版本(我没有检查哪一个版本)开始,iText使用Adobe提供的库来创建XMP。对于iText 7,API完全改变了,所以请不要期望没有共享您正在使用的iText版本的答案。 –
我试过这个: XmpWriter w = new XmpWriter(baos); \t \t \t w.appendArrayItem(namespaceExtension,“schemas”,“a”); \t \t \t \t \t \t w.close(); \t \t \t \t \t \t writer.setXmpMetadata(baos。toByteArray()); 创建此: 一个 如何去不知道。使用itext 5.5.8 –
Giamma
@Giamma请在问题中添加这样的说明(其下有一个[编辑](http://stackoverflow.com/posts/38593088/edit)链接);评论中的代码很难阅读。 – mkl