@@ -1576,4 +1576,116 @@ void testPropertyNotDefined2() throws XmpParsingException
15761576 ArrayProperty ap = (ArrayProperty ) cfa .getProperty (CFAPatternType .VALUES );
15771577 assertEquals ("[1, 2, 0, 1]" , ap .getElementsAsString ().toString ());
15781578 }
1579+
1580+ /**
1581+ * PDFBOX-6136: corner case of extension schema because of "xmlns="
1582+ *
1583+ * @throws XmpParsingException
1584+ */
1585+ @ Test
1586+ void testPDFBox6136 () throws XmpParsingException
1587+ {
1588+ // File 0018804.pdf (Italian parliament)
1589+ // xmlns="http://www.aiim.org/pdfa/ns/extension/" xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/"
1590+ String s =
1591+ "<?xml version=\" 1.0\" encoding=\" UTF-8\" standalone=\" no\" ?>\n " +
1592+ "<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d' bytes='6865'?><rdf:RDF xmlns:rdf=\" http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:iX=\" http://ns.adobe.com/iX/1.0/\" >\n " +
1593+ " <rdf:Description xmlns=\" http://www.aiim.org/pdfa/ns/extension/\" xmlns:pdfaExtension=\" http://www.aiim.org/pdfa/ns/extension/\" xmlns:pdfaProperty=\" http://www.aiim.org/pdfa/ns/property#\" xmlns:pdfaSchema=\" http://www.aiim.org/pdfa/ns/schema#\" about=\" \" >\n " +
1594+ " <pdfaExtension:schemas>\n " +
1595+ " <rdf:Bag>\n " +
1596+ " <rdf:li rdf:parseType=\" Resource\" >\n " +
1597+ " <pdfaSchema:namespaceURI>http://ns.adobe.com/pdfx/1.3/</pdfaSchema:namespaceURI>\n " +
1598+ " <pdfaSchema:prefix>pdfx</pdfaSchema:prefix>\n " +
1599+ " <pdfaSchema:schema>Adobe Document Info PDF eXtension Schema</pdfaSchema:schema>\n " +
1600+ " <pdfaSchema:property>\n " +
1601+ " <rdf:Seq>\n " +
1602+ " <rdf:li rdf:parseType=\" Resource\" >\n " +
1603+ " <pdfaProperty:category>internal</pdfaProperty:category>\n " +
1604+ " <pdfaProperty:description>ID of PDF/X standard</pdfaProperty:description>\n " +
1605+ " <pdfaProperty:name>GTS_PDFXVersion</pdfaProperty:name>\n " +
1606+ " <pdfaProperty:valueType>Text</pdfaProperty:valueType>\n " +
1607+ " </rdf:li>\n " +
1608+ " <rdf:li rdf:parseType=\" Resource\" >\n " +
1609+ " <pdfaProperty:category>internal</pdfaProperty:category>\n " +
1610+ " <pdfaProperty:description>Conformance level of PDF/X standard</pdfaProperty:description>\n " +
1611+ " <pdfaProperty:name>GTS_PDFXConformance</pdfaProperty:name>\n " +
1612+ " <pdfaProperty:valueType>Text</pdfaProperty:valueType>\n " +
1613+ " </rdf:li>\n " +
1614+ " <rdf:li rdf:parseType=\" Resource\" >\n " +
1615+ " <pdfaProperty:category>internal</pdfaProperty:category>\n " +
1616+ " <pdfaProperty:description>Company creating the PDF</pdfaProperty:description>\n " +
1617+ " <pdfaProperty:name>Company</pdfaProperty:name>\n " +
1618+ " <pdfaProperty:valueType>Text</pdfaProperty:valueType>\n " +
1619+ " </rdf:li>\n " +
1620+ " <rdf:li rdf:parseType=\" Resource\" >\n " +
1621+ " <pdfaProperty:category>internal</pdfaProperty:category>\n " +
1622+ " <pdfaProperty:description>Date when document was last modified</pdfaProperty:description>\n " +
1623+ " <pdfaProperty:name>SourceModified</pdfaProperty:name>\n " +
1624+ " <pdfaProperty:valueType>Text</pdfaProperty:valueType>\n " +
1625+ " </rdf:li>\n " +
1626+ " </rdf:Seq>\n " +
1627+ " </pdfaSchema:property>\n " +
1628+ " </rdf:li>\n " +
1629+ " <rdf:li rdf:parseType=\" Resource\" >\n " +
1630+ " <pdfaSchema:namespaceURI>http://ns.adobe.com/xap/1.0/mm/</pdfaSchema:namespaceURI>\n " +
1631+ " <pdfaSchema:prefix>xmpMM</pdfaSchema:prefix>\n " +
1632+ " <pdfaSchema:schema>XMP Media Management Schema</pdfaSchema:schema>\n " +
1633+ " <pdfaSchema:property>\n " +
1634+ " <rdf:Seq>\n " +
1635+ " <rdf:li rdf:parseType=\" Resource\" >\n " +
1636+ " <pdfaProperty:category>internal</pdfaProperty:category>\n " +
1637+ " <pdfaProperty:description>UUID based identifier for specific incarnation of a document</pdfaProperty:description>\n " +
1638+ " <pdfaProperty:name>InstanceID</pdfaProperty:name>\n " +
1639+ " <pdfaProperty:valueType>URI</pdfaProperty:valueType>\n " +
1640+ " </rdf:li>\n " +
1641+ " <rdf:li rdf:parseType=\" Resource\" >\n " +
1642+ " <pdfaProperty:category>internal</pdfaProperty:category>\n " +
1643+ " <pdfaProperty:description>The common identifier for all versions and renditions of a document.</pdfaProperty:description>\n " +
1644+ " <pdfaProperty:name>OriginalDocumentID</pdfaProperty:name>\n " +
1645+ " <pdfaProperty:valueType>URI</pdfaProperty:valueType>\n " +
1646+ " </rdf:li>\n " +
1647+ " </rdf:Seq>\n " +
1648+ " </pdfaSchema:property>\n " +
1649+ " </rdf:li>\n " +
1650+ " <rdf:li rdf:parseType=\" Resource\" >\n " +
1651+ " <pdfaSchema:namespaceURI>http://www.aiim.org/pdfa/ns/id/</pdfaSchema:namespaceURI>\n " +
1652+ " <pdfaSchema:prefix>pdfaid</pdfaSchema:prefix>\n " +
1653+ " <pdfaSchema:schema>PDF/A ID Schema</pdfaSchema:schema>\n " +
1654+ " <pdfaSchema:property>\n " +
1655+ " <rdf:Seq>\n " +
1656+ " <rdf:li rdf:parseType=\" Resource\" >\n " +
1657+ " <pdfaProperty:category>internal</pdfaProperty:category>\n " +
1658+ " <pdfaProperty:description>Part of PDF/A standard</pdfaProperty:description>\n " +
1659+ " <pdfaProperty:name>part</pdfaProperty:name>\n " +
1660+ " <pdfaProperty:valueType>Integer</pdfaProperty:valueType>\n " +
1661+ " </rdf:li>\n " +
1662+ " <rdf:li rdf:parseType=\" Resource\" >\n " +
1663+ " <pdfaProperty:category>internal</pdfaProperty:category>\n " +
1664+ " <pdfaProperty:description>Amendment of PDF/A standard</pdfaProperty:description>\n " +
1665+ " <pdfaProperty:name>amd</pdfaProperty:name>\n " +
1666+ " <pdfaProperty:valueType>Text</pdfaProperty:valueType>\n " +
1667+ " </rdf:li>\n " +
1668+ " <rdf:li rdf:parseType=\" Resource\" >\n " +
1669+ " <pdfaProperty:category>internal</pdfaProperty:category>\n " +
1670+ " <pdfaProperty:description>Conformance level of PDF/A standard</pdfaProperty:description>\n " +
1671+ " <pdfaProperty:name>conformance</pdfaProperty:name>\n " +
1672+ " <pdfaProperty:valueType>Text</pdfaProperty:valueType>\n " +
1673+ " </rdf:li>\n " +
1674+ " </rdf:Seq>\n " +
1675+ " </pdfaSchema:property>\n " +
1676+ " </rdf:li>\n " +
1677+ " </rdf:Bag>\n " +
1678+ " </pdfaExtension:schemas>\n " +
1679+ " </rdf:Description>\n " +
1680+ " <rdf:Description xmlns=\" http://www.aiim.org/pdfa/ns/id/\" xmlns:pdfaid=\" http://www.aiim.org/pdfa/ns/id/\" about=\" \" >\n " +
1681+ " <pdfaid:part>1</pdfaid:part>\n " +
1682+ " <pdfaid:conformance>B</pdfaid:conformance>\n " +
1683+ " </rdf:Description>\n " +
1684+ "</rdf:RDF><?xpacket end='r'?>" ;
1685+ final DomXmpParser xmpParser = new DomXmpParser ();
1686+ xmpParser .setStrictParsing (false );
1687+ XMPMetadata xmp = xmpParser .parse (s .getBytes (StandardCharsets .UTF_8 ));
1688+ assertEquals ("B" , xmp .getPDFAIdentificationSchema ().getConformance ());
1689+ assertEquals ((Integer ) 1 , xmp .getPDFAIdentificationSchema ().getPart ());
1690+ }
15791691}
0 commit comments