如何使用XSL-FO将外部pdf / txt文件嵌入到另一个文件中?

时间:2011-05-20 18:54:34

标签: xslt pdf pdf-generation xsl-fo

是否可以使用XSL-FO / XSLT将外部PDF或TEXT文档嵌入到主PDF中?

我有xslt样式表来生成PDF文档。但是,输入XML包含内联的TEXT或Base64编码的PDF文档。所以我在我的样式表的HTML版本中我提取TEXT或PDF并将其转储到磁盘上。然后在xslt中我有这个:

<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>

对于HTML转换,它完美运行。是否有可能在PDF中实现相同的结果(嵌入文档)?我有一个用于生成pdf的XSLT,但是却没有成功完成相同的结果。

我已经尝试过类似Apache FOP的附加组件(PDF Image Support):

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

显然它只适用于图像。

任何提示?

谢谢

2 个答案:

答案 0 :(得分:7)

所以我发现使用我之前的解决方案是可能的,我只是做得不对。看看这里: FOP Extension

此外,这是一个如何使用它的例子:

<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>

答案 1 :(得分:1)

自从我刚刚开始使用fop以来,代码gijoe响应非常晚,但你可以这样做(使用FOX扩展)

    <fo:block-container absolute-position="absolute">
        <fo:block>
            <fo:external-graphic src="src/main/resources/externalpdf/test.pdf"/>
            <fo:block-container absolute-position="absolute" left="0pt" top="100pt" right="200pt" bottom="270pt">
                <fo:block font-weight="bold" font-size="15pt" border="{$border}" text-align="center" line-height="18pt" font-style="italic">
                    Hello
                </fo:block>
            </fo:block-container>
        </fo:block>
    </fo:block-container>

将其嵌入到同一页面并用一些文字覆盖