【发布时间】:2016-05-01 18:41:31
【问题描述】:
我有一个相当大的 asciidoc 文档,我将其动态转换为 PDF 以供我们的开发人员指南使用。由于该文档经常引用我们开发人员指南中记录的 Java 类,因此我们将它们直接转换为文档中的链接,例如:
In this block we create a new
https://www.codenameone.com/javadoc/com/codename1/ui/Form.html[Form]
named `hi`.
这在大多数情况下效果很好,并且在 HTML 中看起来很棒,因为对类的每个引用都直接导致其 JavaDoc,从而使引用/指南过程更加简单。
但是,当我们生成 PDF 时,我们最终会在某些页面上出现类似这样的内容:
通常我不会介意有很多脚注,甚至不会重复前一页的内容。但是,在这种情况下,指向 Container 的链接出现了 3 次。
我可以删除一些链接,但我不想这样做,因为它们在网络版本上很有意义。由于我也不知道分页符会落在哪里,所以我不想自己做。
这在我看来像是某处的错误,如果链接相同,则链接的脚注应该只生成一次。
如果这是要付出的代价,我可以删除文档中的所有链接脚注,尽管我希望能够根据具体情况执行此操作,以便某些链接保持可打印
【问题讨论】:
-
我不认为这是一个错误:根据 XSL-FO 的建议,脚注只是一个在输出中产生一个或多个区域的对象,而脚注文本是与另一个完全无关;没有“条件脚注”对象。不幸的是,在生成 FO 文件时自动避免“重复”脚注是不可能的,因为它需要知道分页符在哪里。我不知道这对您来说是否可行,但是使用 URL 创建可点击的链接而不是脚注呢?
-
那么我猜这是 asciidoc 隐藏的问题。这正是我要问的……请注意,我只是使用了 asciidoc 的超链接语法。有没有办法至少在 asciidoc 中的某些情况下禁用超链接的脚注?
-
AFAIK,为了生成 PDF 输出,AsciiDoc 将其源文本转换为 DocBook XML,然后使用 DocBook XSLT 样式表将其转换为 XSL-FO。我认为您需要自定义 XSLT 样式表或以某种方式对中间 DocBook XML 或 XSL-FO 文件进行后处理。
-
Antenna House FO 处理器(不是免费的)有一个扩展,似乎可以满足您的需求:antennahouse.com/xslfo/…。
-
我们是一个开源项目,虽然我不介意为看起来有点过分的软件付费!我可以预处理 asciidoc 文件并根据某些逻辑删除一些链接。我不想那样做。
标签: pdf-generation codenameone apache-fop asciidoc