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

Rafael Witak commented on FOP-3137:
-----------------------------------

Argh, of course, that's right. Now this approach also produces the IOException. 

 

For completeness, here's my method:
{code:java}
// App.java

public static void main(String[] args) throws IOException, SAXException {
    try {
        // Setup directories and files

        File baseDir = new File(".");
        File outDir = new File(baseDir, "out");
        outDir.mkdirs();

        File xmlfile = new File(baseDir, "empty.xml"); // just contains <empty/>
        File xsltfile = new File(baseDir, "fo.xsl");
        File configfile = new File(baseDir, "fop.xconf");

        final FopFactory fopFactory = FopFactory.newInstance(configfile);

        FOUserAgent foUserAgent = fopFactory.newFOUserAgent();

        File pdffile = new File(outDir, "test.pdf");

        try (OutputStream out = new 
BufferedOutputStream(Files.newOutputStream(pdffile.toPath()))) {
            // Construct fop with desired output format
            Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, 
out);

            // Setup XSLT
            TransformerFactory factory = TransformerFactory.newInstance();
            Transformer transformer = factory.newTransformer(new 
StreamSource(xsltfile));

            // Setup input for XSLT transformation
            Source src = new StreamSource(xmlfile);

            // Resulting SAX events (the generated FO) must be piped through to 
FOP
            Result res = new SAXResult(fop.getDefaultHandler());

            // Start XSLT transformation and FOP processing
            transformer.transform(src, res);
        }
    } catch (Exception e) {
        e.printStackTrace(System.err);
        System.exit(-1);
    }
} {code}
And the fo.xsl:
{code:java}
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                xmlns:fo="http://www.w3.org/1999/XSL/Format";
                xmlns:fox="http://xmlgraphics.apache.org/fop/extensions";>
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="/">
        <fo:root>
            <fo:layout-master-set>
                <fo:simple-page-master master-name="A4-portrait"
                                       page-height="29.7cm" page-width="21.0cm" 
margin="2cm">
                    <fo:region-body/>
                </fo:simple-page-master>
            </fo:layout-master-set>
            <fox:external-document 
src="url('file:///C:\Users\***\***\FOP-Test\original.pdf')" />
        </fo:root>
    </xsl:template>
</xsl:stylesheet> {code}
The fop.xconf is just the standard one with the addition of 
{{<form-xobject>true</form-xobject>}} under {{<renderer 
mime="application/pdf">}}

 

> PDF Images - external-document layout broken
> --------------------------------------------
>
>                 Key: FOP-3137
>                 URL: https://issues.apache.org/jira/browse/FOP-3137
>             Project: FOP
>          Issue Type: Bug
>         Environment: Windows 10.0.19045 Build 19045
> Java 17
> FOP 2.8
> PDF Images 2.8
>            Reporter: Rafael Witak
>            Priority: Major
>         Attachments: image-2023-07-13-16-46-26-626.png, 
> image-2023-07-13-16-47-09-093.png, older.pdf, original.pdf, output.pdf
>
>
> When including the PDFs of one of our customers, the layout gets messed up, 
> turning this: 
> !image-2023-07-13-16-47-09-093.png|width=349,height=265!
> into this:
> !image-2023-07-13-16-46-26-626.png|width=350,height=284!
>  
> The customer recently switched to PDF 1.7, all of their PDFs get messed up 
> ever since. 
> There are no FOP events in the log, checking the resulting PDF with _pdfcpu_ 
> validates perfectly, even with strict mode on. 
> Setting strict-validation in the renderer also doesn't produce any errors. 
> The problem happens regardless of the version of FOP and fop-pdf-images used. 
> The FO input for reproduction can be reduced to 
> {{<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"}}
> {{xmlns:fox="http://xmlgraphics.apache.org/fop/extensions";>}}
> {{  <fo:layout-master-set>}}
> {{    <fo:simple-page-master master-name="simple">}}
> {{      <fo:region-body/>}}
> {{    </fo:simple-page-master>}}
> {{  </fo:layout-master-set>}}
> {{  <fox:external-document src="PDF/input.pdf" />}}
> {{{}</fo:root>{}}}{{{}{}}}
>  
> Various problems regarding layouts are mentioned in the "Known Issues". 
> There is also the general statement _"Apache FOP currently generates PDF 1.4. 
> If you include a PDF with a higher PDF version, the results may be 
> unpredictable."_ to be found (That said, setting different versions in the 
> renderer did not solve the problem).
> Please let me know, if this is out of scope for the project - and if it is, 
> please provide me with any workarounds you might know of!
>  
> (Included are one of the originals together with its output, as well as an 
> older PDF of the same customer which works as expected. )



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

Reply via email to