xml - 使用 FOP 时无法向 PDF 添加附件

标签 xml pdf apache-fop

我有一个 XSL 文档,可以将 XML 文档转换为 PDF。它一直工作得很好,直到我被要求增强它,以便也可以向 PDF 添加附件。我搜索了一下,发现必须按以下方式编辑XSL才能实现这一点。

1. fo:root 元素应包含 xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf 属性。

  • 以下几行应添加在 fo:page-sequence 元素之前。

  • < pdf:embedded-file filename="myfile.text "src="url(file:///C:/Bill.txt"/>

    现在,当我运行转换时,出现以下错误。

    遇到未知的格式化对象“{ http://xmlgraphics.apache.org/fop/extensions/pdf }嵌入文件”(fo:declarations} 的子级。(没有可用的上下文信息)

    我在互联网上搜索了很多,但找不到解决方案。有人可以帮我吗?

    最佳答案

    显然,您的代码片段似乎尊重扩展元素 pdf:embedded-file 的文档(请注意,像 http://xmlgraphics.apache.org/fop/extensions/pdf 这样的命名空间 URI 只是一个标识符,它不一定指向 Web 资源)。

    但是,我使用 FOP 1.1 测试了这个简单的示例(顺便说一句,您没有说明您使用的是哪个版本的 FOP),并且它按预期工作:

    <?xml version="1.0" encoding="UTF-8"?>
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" 
        xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf">
        <fo:layout-master-set>
            <fo:simple-page-master master-name="one">
                <fo:region-body />
            </fo:simple-page-master>
        </fo:layout-master-set>
        <fo:declarations>
          <pdf:embedded-file filename="test.png" description="This is just an image" src="https://www.google.it/images/srpr/logo11w.png"/>
        </fo:declarations>
        <fo:page-sequence master-reference="one">
            <fo:flow flow-name="xsl-region-body">
                <fo:block><fo:basic-link external-destination="url(embedded-file:test.png)">Attached image</fo:basic-link></fo:block>
            </fo:flow>
        </fo:page-sequence>
    </fo:root>
    

    我能够生成您收到的错误消息(未知格式对象...)使用不正确的命名空间 URI,例如在开头或结尾添加空格;所以我建议你检查你的 pdf 命名空间声明是否完全像这样:

    xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf"
    

    关于xml - 使用 FOP 时无法向 PDF 添加附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28110607/

    相关文章:

    c# - 从运行时加载的XSD创建有效的XML(无xsd.exe)

    xml - XML 标记中的句点

    pdf - 如何等待应用程序在 VBScript 中启动?

    ubuntu - 在 Ubuntu 上将 fop 作为 www-data 运行

    java - 使用 Apache FOP 从大图像生成 PDF

    xsl-fo - 如何使用 XSL-FO 和 FOP 1.0 创建两列布局?

    XML Schema 抛出权限失败警告

    android - 以编程方式添加按钮不符合文本颜色

    pdf - 为什么即使内容相同,PDF 文件也不同?

    php - PDF 中的工具提示 : are they possible?