Ich muss in Java (mit ITEXT) die folgenden XMP-Metadaten erstellen und in eine meiner PDF-Dateien einfügen.Itext erstellen XMP in pdf mit Java
<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>
Bis jetzt habe ich versucht, diesen Teil des Codes:
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());
Und die erstellte XMP ist die folgende:
<pdfaExtension:schemas>
<rdf:Bag>
<rdf:li>a</rdf:li>
</rdf:Bag>
Jetzt kann ich nicht auf verstehen, wie weiter zu gehen. Irgendeine Idee, wie man das macht?
Vielen Dank im Voraus
Was hast du probiert? Welche Version von iText benutzt du? Ab einer bestimmten Version 5.x.y (ich habe nicht geprüft, welche), verwendet iText eine Bibliothek von Adobe, um XMP zu erstellen. Mit iText 7 wurde die API vollständig geändert. Erwarten Sie daher keine Antwort, ohne die von Ihnen verwendete iText-Version freizugeben. –
Ich habe es versucht: XmpWriter w = neuer XmpWriter (baos); \t \t \t w.appendArrayItem (NamespaceExtension, "Schemata", "a"); \t \t \t \t \t \t w.close(); \t \t \t \t \t writer.setXmpMetadata (baos.toByteArray()); , die das schafft: ein Keine Ahnung, wie man weitergehen. Unter Verwendung von itext 5.5.8 –
Giamma
@Giamma bitte fügen Sie solche Klärungen der Frage hinzu (es gibt einen [edit] (http://stackoverflow.com/posts/38593088/edit) Link darunter); Code in Kommentaren ist schwer zu lesen. – mkl