Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to embed external pdf/txt file into another using XSL-FO?

Is it possible to embed an external PDF or TEXT document into a master PDF by using XSL-FO/XSLT?

I have xslt stylesheet to produce PDF documents. But, the input XML contains inlined TEXT or Base64 encoded PDF documents. So what I do in my HTML version of my stylesheet I extract the TEXT or PDF and dump it on disk. Then in the xslt I have this:

<xsl:when test='(n1:text/@mediaType="application/pdf") or (n1:text/@representation="B64")'>
    <IFRAME name='documentFrame' id='documentFrame' WIDTH='100%' HEIGHT='65%' src='{$DOC_URI}'/>
</xsl:when>

For HTML conversion it is working perfectly. Is it possible to achieve the same result (embed document) inside a PDF? I have an XSLT for pdf generation but have been unsuccessful at accomplishing the same result.

I have tried add-ons for Apache FOP like this one (PDF Image Support):

 <fox:external-document src="my-doc.pdf"/>

Apparently it is only for images.

Any hints?

Thank you

like image 871
code-gijoe Avatar asked May 20 '11 18:05

code-gijoe


People also ask

What is XSL FO file?

XSL-FO (XSL Formatting Objects) is a markup language for XML document formatting that is most often used to generate PDF files. XSL-FO is part of XSL (Extensible Stylesheet Language), a set of W3C technologies designed for the transformation and formatting of XML data.

How does apache Fop work?

Apache™ FOP It is a Java application that reads a formatting object (FO) tree and renders the resulting pages to a specified output. Output formats currently supported include PDF, PS, PCL, AFP, XML (area tree representation), Print, AWT and PNG, and to a lesser extent, RTF and TXT. The primary output target is PDF.


1 Answers

So I found it is possible using my previous solution, I was just not doing it right. Check it out here: FOP Extension

Also, here is an example of how to use it:

<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="A4">
            <fo:region-body/>
        </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="A4">
        <fo:flow flow-name="xsl-region-body">
            <fo:block-container>
                <fo:block>Hello W3Schools</fo:block>    
                <fo:block>
                </fo:block>
            </fo:block-container>
        </fo:flow>
    </fo:page-sequence>

    <fox:external-document content-type="pdf" src="../example_file/test.pdf"/>
</fo:root>
like image 61
code-gijoe Avatar answered Oct 05 '22 02:10

code-gijoe