You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2025/12/07 11:30:14 UTC

svn commit: r1930323 - in pdfbox/branches/2.0/xmpbox/src/test: java/org/apache/xmpbox/xml resources/org/apache/xmpbox/xml

Author: tilman
Date: Sun Dec  7 11:30:14 2025
New Revision: 1930323

Log:
PDFBOX-3882: add test + test file

Added:
   pdfbox/branches/2.0/xmpbox/src/test/resources/org/apache/xmpbox/xml/PDFBOX-3882-dematbox.xml   (contents, props changed)
Modified:
   pdfbox/branches/2.0/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java

Modified: pdfbox/branches/2.0/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java
==============================================================================
--- pdfbox/branches/2.0/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java	Sun Dec  7 11:30:08 2025	(r1930322)
+++ pdfbox/branches/2.0/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java	Sun Dec  7 11:30:14 2025	(r1930323)
@@ -23,12 +23,17 @@ package org.apache.xmpbox.xml;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
+import java.util.List;
 
 import org.apache.xmpbox.XMPMetadata;
 import org.apache.xmpbox.schema.XMPMediaManagementSchema;
+import org.apache.xmpbox.schema.XMPSchema;
 import org.apache.xmpbox.schema.XMPageTextSchema;
+import org.apache.xmpbox.type.AbstractField;
 import org.apache.xmpbox.type.ArrayProperty;
+import org.apache.xmpbox.type.DefinedStructuredType;
 import org.apache.xmpbox.type.DimensionsType;
+import org.apache.xmpbox.type.PDFASchemaType;
 import org.apache.xmpbox.type.ResourceEventType;
 import org.apache.xmpbox.type.ResourceRefType;
 import static org.junit.Assert.assertEquals;
@@ -263,4 +268,33 @@ public class DomXmpParserTest
         assertEquals("DimensionsType{4.0 x 3.0 inch}", dim.toString());
         assertEquals("[NPages=IntegerType:7]", pageTextSchema.getProperty(XMPageTextSchema.N_PAGES).toString());
     }
+
+    /**
+     * PDFBOX-3882: Test attributes being used as properties to define an extension schema. Also
+     * verify the content of the actual extension schema.
+     *
+     * @throws IOException
+     * @throws XmpParsingException 
+     */
+    @Test
+    public void testPDFBox3882() throws IOException, XmpParsingException
+    {
+        InputStream is = DomXmpParser.class.getResourceAsStream("/org/apache/xmpbox/xml/PDFBOX-3882-dematbox.xml");
+        DomXmpParser dxp = new DomXmpParser();
+        dxp.setStrictParsing(false);
+        XMPMetadata xmp = dxp.parse(is);
+        List<AbstractField> allProperties = xmp.getPDFExtensionSchema().getSchemasProperty().getAllProperties();
+        assertEquals(1, allProperties.size());
+        PDFASchemaType pdfExtensionSchema = (PDFASchemaType) allProperties.get(0);
+        assertEquals("http://www.sagemcom.com/documents/xmlns/dematbox", pdfExtensionSchema.getNamespaceURI());
+        assertEquals("dematbox", pdfExtensionSchema.getPrefixValue());
+        XMPSchema extensionSchema = xmp.getSchema(pdfExtensionSchema.getNamespaceURI());
+        assertEquals(pdfExtensionSchema.getNamespaceURI(), extensionSchema.getNamespace());
+        assertEquals(pdfExtensionSchema.getPrefixValue(), extensionSchema.getPrefix());
+        ArrayProperty pageInfoProp = (ArrayProperty) extensionSchema.getProperty("PageInfo");
+        DefinedStructuredType dst = (DefinedStructuredType) pageInfoProp.getAllProperties().get(0);
+        assertEquals("[number=IntegerType:1]", dst.getProperty("number").toString());
+        assertEquals("[origNumber=IntegerType:1]", dst.getProperty("origNumber").toString());
+        is.close();
+    }
 }

Added: pdfbox/branches/2.0/xmpbox/src/test/resources/org/apache/xmpbox/xml/PDFBOX-3882-dematbox.xml
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ pdfbox/branches/2.0/xmpbox/src/test/resources/org/apache/xmpbox/xml/PDFBOX-3882-dematbox.xml	Sun Dec  7 11:30:14 2025	(r1930323)
@@ -0,0 +1,7 @@
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?><x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'><rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'><rdf:Description xmlns:dc='http://purl.org/dc/elements/1.1/' rdf:about=''><dc:title><rdf:Alt><rdf:li xml:lang="x-default">Dematbox_DocId=365899</rdf:li></rdf:Alt></dc:title><dc:creator><rdf:Seq><rdf:li></rdf:li></rdf:Seq></dc:creator></rdf:Description><rdf:Description xmlns:xmp='http://ns.adobe.com/xap/1.0/' rdf:about=''><xmp:CreatorTool>CrystalImage</xmp:CreatorTool><xmp:CreateDate>2017-07-24T10:18:18+00:00</xmp:CreateDate></rdf:Description><rdf:Description xmlns:pdf='http://ns.adobe.com/pdf/1.3/' rdf:about=''><pdf:Producer>CrystalImage v 2.24.01 (20170717) (Leht3 v. 9.1-ansic)(r=300,q=50,docfmt=pdf,crp,ibpd,frcdstr)</pdf:Producer></rdf:Description><rdf:Description rdf:about='' xmlns:pdfaid='http://www.aiim.org/pdfa/ns/id/' pdfaid:part='1' pdfaid:con
 formance='B'/><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:namespaceURI>http://www.sagemcom.com/documents/xmlns/dematbox</pdfaSchema:namespaceURI> <pdfaSchema:prefix>dematbox</pdfaSchema:prefix> <pdfaSchema:property> <rdf:Seq> <rdf:li rdf:parseType="Resource" pdfaProperty:name="PageInfo" pdfaProperty:valueType="seq PageInfo" pdfaProperty:category="internal" pdfaProperty:description="page information"/> </rdf:Seq> </pdfaSchema:property> <pdfaSchema:valueType> <rdf:Seq> <rdf:li rdf:parseType="Resource" pdfaType:type="PageInfo" pdfaType:namespaceURI="http://www.sagemcom.com/documents/xmlns/dematbox/PageInfo" pdfaType:prefix="PageInfo" pdfaType:des
 cription="page information"> <pdfaType:field> <rdf:Seq> <rdf:li rdf:parseType="Resource" pdfaField:name="number" pdfaField:valueType="Integer" pdfaField:description="Page number."/> <rdf:li rdf:parseType="Resource" pdfaField:name="origNumber" pdfaField:valueType="Integer" pdfaField:description="Page number in the original document."/> <rdf:li rdf:parseType="Resource" pdfaField:name="isCgv" pdfaField:valueType="Boolean" pdfaField:description="Was the page detected as CGV?"/> <rdf:li rdf:parseType="Resource" pdfaField:name="barcodeValue" pdfaField:valueType="Text" pdfaField:description="Was a barcode found in the page?"/> </rdf:Seq> </pdfaType:field> </rdf:li> </rdf:Seq> </pdfaSchema:valueType> </rdf:li> </rdf:Bag> </pdfaExtension:schemas> </rdf:Description><rdf:Description xmlns:dematbox="http://www.sagemcom.com/documents/xmlns/dematbox" rdf:about="">
+  <dematbox:PageInfo xmlns:PageInfo="http://www.sagemcom.com/documents/xmlns/dematbox/PageInfo">
+    <rdf:Seq>
+      <rdf:li rdf:parseType="Resource" PageInfo:number="1" PageInfo:origNumber="1"/>
+    </rdf:Seq>
+  </dematbox:PageInfo>
+</rdf:Description></rdf:RDF></x:xmpmeta><?xpacket end='w'?>
\ No newline at end of file