[ 
https://issues.apache.org/jira/browse/FOP-3217?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17927263#comment-17927263
 ] 

Joao Goncalves commented on FOP-3217:
-------------------------------------

[~jwillhoeft] I'm pretty sure the fix to FOP-3236 will fix your issue.

> Invalid XMP stream with Saxon on classpath
> ------------------------------------------
>
>                 Key: FOP-3217
>                 URL: https://issues.apache.org/jira/browse/FOP-3217
>             Project: FOP
>          Issue Type: Bug
>          Components: renderer/pdf
>    Affects Versions: 2.10
>         Environment: FOP 2.10
> Saxon 12.5 HE
> OpenJDK 21
> Fedora 41
>            Reporter: Jörn Willhöft
>            Priority: Major
>         Attachments: PDFA3Xmp.xconf, PDFXMP.fo
>
>
> FOP is generating an illegal XMP stream, when Saxon is in the classpath 
> resulting in invalid PDF/A3 files. I originally ran into this problem in 
> context of Apache Camel, but finally traced the issue back to FOP.  Here is a 
> reproducible test procedure.
> Please find the xconf and the static FO attached. I use the FOP binary 
> package from 
> [https://www.apache.org/dyn/closer.cgi?filename=/xmlgraphics/fop/binaries/fop-2.10-bin.tar.gz&action=download],
>  the current Saxon 12.5 HE and OpenJDK 21 on Fedora 41.
> Create PDF *without* Saxon:
> {noformat}
> $ fop-2.10/fop/fop -c PDFA3Xmp.xconf -fo PDFXMP.fo -pdf output-ok.pdf
> {noformat}
> Create PDF *with* Saxon:
> {noformat}
> $ export 
> CLASSPATH=SaxonHE12-5J/saxon-he-12.5.jar:SaxonHE12-5J/lib/xmlresolver-5.2.2.jar:SaxonHE12-5J/lib/xmlresolver-5.2.2-data.jar:SaxonHE12-5J/lib/jline-2.14.6.jar
> $ fop-2.10/fop/fop -c PDFA3Xmp.xconf -fo PDFXMP.fo -pdf output-saxon.pdf
> {noformat}
> Here the result *without* Saxon:
> {noformat}
> $ pdfinfo -meta output-ok.pdf
> {noformat}
> {code:xml}
> ...
>        <rdf:Description 
> xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/"; rdf:about="">
>            <pdfaExtension:schemas>
>                <rdf:Bag>
>                    <rdf:li rdf:parseType="Resource">
>                        <pdfaSchema:property 
> xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema#";>
>                            <rdf:Seq>
>                                <rdf:li rdf:parseType="Resource">
>                                    <pdfaProperty:name 
> xmlns:pdfaProperty="http://www.aiim.org/pdfa/ns/property#";>split</pdfaProperty:name>
>                                </rdf:li>
>                            </rdf:Seq>
>                        </pdfaSchema:property>
>                    </rdf:li>
>                </rdf:Bag>
>            </pdfaExtension:schemas>
>        </rdf:Description>
> ...
> {code}
>  
> Here the result *with* Saxon:
> {noformat}
> $ pdfinfo -meta output-saxon.pdf
> {noformat}
> {code:xml}
> ...
>      <rdf:RDF xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/"; 
> rdf:about="">
>         <pdfaExtension:schemas>
>            <rdf:Bag>
>               <rdf:li rdf:parseType="Resource">
>                  <pdfaSchema:property>
>                     <rdf:Seq>
>                        <rdf:li rdf:parseType="Resource">
>                           <pdfaProperty:name>split</pdfaProperty:name>
>                        </rdf:li>
>                     </rdf:Seq>
>                  </pdfaSchema:property>
>               </rdf:li>
>            </rdf:Bag>
>         </pdfaExtension:schemas>
>      </rdf:RDF>
> ...
> {code}
> Not only the namespace attributes xmlns:pdfaSchema and xmlns:pdfaProperty are 
> missing, but also the rdf:Description element is now called rdf:RDF (?!)
>  
> *Expected behavior:* the XMP stream should be technically equal, regardless 
> if Saxon or only the system's default XSLT transformer is available. In 
> particular, the result must be well-formed XML, including all used namespace 
> attributes.
> *Possible workaround:* The JVM's default XSLT transformer can be set back to 
> the system default with a Java command line parameter:
> {noformat}
> -Djavax.xml.transform.TransformerFactory=com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl"
> {noformat}
> *Caveat:* when Saxon is in the classpath there is probably a reason for this 
> and other parts of the application might expect Saxon to be the default. 
> These would now have to explicitly instantiate the Saxon transformer factory.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to