PDF 中的 XSL-FO 超链接 - 打印关闭查看打开 - 天线之家

Posted

技术标签:

【中文标题】PDF 中的 XSL-FO 超链接 - 打印关闭查看打开 - 天线之家【英文标题】:XSL-FO Hyperlinks in PDF - Print Off View On - Antenna House 【发布时间】:2018-04-03 17:39:28 【问题描述】:

我正在生成带有链接的 PDF 文件,并希望它们在 PDF 查看器中查看时的显示方式与打印时不同。查看链接时,链接周围应有蓝色边框,但打印时不应有边框。

我正在使用 Antenna House Formatter v6.3,并且知道您可以使用 axf:layer-settings 和 axf:layer 创建图层并控制这些图层的打印和查看行为。但是我没有成功实现上述行为(我只能让整个链接在打印中消失,而不仅仅是边框)。

有什么方法可以使用 Antenna House 扩展或其他方式在通过 XSL-FO 和格式化引擎生成的 PDF 中创建链接,以便在查看和打印时具有不同的外观?

【问题讨论】:

让我回复你。应该可以通过覆盖两个版本的文本来实现,例如,作为fo:inline-container 内的两个相对定位的块(前提是链接内没有换行符)。 非常感谢,链接不会包含任何换行符:) 【参考方案1】:

试试这个。您可能需要调整 baseline-shift 值,具体取决于您的字体:

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
  xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
  axf:layer-settings="'layer4' view off print on,'layer5' view on print off export off">
...
<fo:block space-before="1em">abcd <fo:inline-container alignment-baseline="baseline" baseline-shift="-3pt">
    <fo:block-container position="absolute" axf:layer="layer5">
        <fo:block>
            <fo:basic-link border="thin solid blue" alignment-baseline="baseline" external-destination="http://www.antennahouse.com/">Antenna House</fo:basic-link>
        </fo:block>
    </fo:block-container>
    <fo:block-container axf:layer="layer4">
        <fo:block>
            <fo:basic-link border="thin solid transparent" external-destination="http://www.antennahouse.com/">Antenna House</fo:basic-link>
        </fo:block>
    </fo:block-container>
</fo:inline-container> efgh</fo:block>

需要 PDF 1.5 或更高版本。见https://www.antennahouse.com/product/ahf65/ahf-ext.html#pdf-layer

【讨论】:

像魅力一样工作。 当将最外层的fo:block 上的text-align 设置为"center""right" 时,结果变得有点奇怪。这两层似乎相互抵消。您是否知道为什么以及是否有办法在使用text-align="right" 时生成两个图层?

以上是关于PDF 中的 XSL-FO 超链接 - 打印关闭查看打开 - 天线之家的主要内容,如果未能解决你的问题,请参考以下文章

从子记录(或超链接)获取数据以在 netsuite 高级 html pdf 中打印

如何为 xsl-fo 中的每个页面添加页眉和页脚以生成 pdf

Java 更新和删除PDF中的超链接

如何访问 PDF 文档 (iPhone) 中的超链接?

FOP XSL-FO 锚定在外部目的地

使用 XSL-FO 在 .NET 中生成 PDF