【问题标题】:Unable to add an attachment to a PDF while using FOP使用 FOP 时无法向 PDF 添加附件
【发布时间】:2015-01-23 13:05:44
【问题描述】:

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

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

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



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

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

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

【问题讨论】:

  • 如果我在浏览器上查找xmlgraphics.apache.org/fop/extensions/pdf,我会得到 HTTP 404 返回。那个网址对吗?
  • 当我尝试在浏览器中打开该链接时,我也遇到了这个错误。但这是我在他们的 output.pdf 文档(位于 \\fop-1.1\docs\1.1 目录下)中找到的 fop 文档中提供的说明

标签: xml pdf apache-fop


【解决方案1】:

显然,您的代码片段似乎尊重扩展元素 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"

【讨论】:

  • 使用 Apache FOP 2.2 实现按预期工作。
猜你喜欢
  • 1970-01-01
  • 2013-11-17
  • 2014-12-12
  • 1970-01-01
  • 2014-08-14
  • 1970-01-01
  • 1970-01-01
  • 2017-06-02
  • 2017-04-06
相关资源
最近更新 更多