【问题标题】:How to add a non-printable image in xsl / apache-fop如何在 xsl / apache-fop 中添加不可打印的图像
【发布时间】:2015-07-22 00:32:56
【问题描述】:

我正在尝试生成一个 xsl 以打印在工作正常的预印表中。

现在我想给用户一个更好的预可视化(在 pdf 屏幕版本中),添加一个背景图像,模拟纸张上的“预打印”stuf,为用户提供他正在打印的内容的“上下文”。

问题是:有什么方法可以在 xsl(使用 apache fop)中设置背景图像,仅在 pdf 中可见,但在打印版本中不可见?

感谢大家阅读或提供任何建议。

【问题讨论】:

  • 恐怕这根本不可能。 PDF 旨在描述文档的内容,完全独立于所使用的设备——它应该是屏幕,还是任何品牌的任何类型的打印机。因此,您无法拥有所需的功能。唯一的方法是生成两个不同的 PDF 文件。
  • 我很害怕,但希望有人找到了窍门

标签: java xml xslt apache-fop


【解决方案1】:

尽管如 cmets 所述,PDF 中的内容不能以物理打印副本的形式出现,但这里有一种可能的解决方法。根据您的用户最终将如何使用 FOP 进行 PDF 渲染以及您如何推动工作流程,可以在运行转换阶段之前将参数传递到 xslt 文件中,因此您可能会进行双重渲染对于同一个 PDF,一个在启用背景图像的情况下呈现给用户,一个被打印,您可以设置一个类似于他们在this Example 中所做的变量,并将其命名为 $isPreview 之类的东西,并且只需使用简单的 if 或选择语句来检查“Y”或“N”。

由于您要发送到打印机,您甚至可能希望利用 FOP 生成 Postscript 而不是 PDF 的能力,我已经非常广泛地使用此功能来使用 FOP 打印文档,同时还为电子生成 PDF 副本通过电子邮件或托管服务交付,我还没有发现 PDF 渲染与发送渲染后记文件后打印的内容之间存在任何差异,因此它也应该适合您。

正如我所说,这并不是您提出的问题的真正解决方案,但作为一种变通方法,如果您聪明地实施它,它可以为您带来理想的结果。

【讨论】:

  • 问题是我在 iframe 中显示 pdf,通常“打印”按钮是浏览器提供的按钮 :(
  • 在这种情况下,您应该看看是否可以在 iframe 中使用 CSS 叠加图像,这样您就只能在 iframe 中看到图像,忘记将图像插入 PDF,利用现有的网络技术使它看起来像它在那里一样,但是当你打印 PDF 时,它不应该打印在最终副本上,因为 PDF 本身不包含图像。
【解决方案2】:

我不认为不可能的说法是正确的,我只是不确定如何使用 FOP 创建这样的 PDF。当然,您可以添加图像字段。有人会使用按钮字段并将图像放在按钮中。然后,您将该按钮的属性设置为不打印(可打印错误)。

PDF 支持图片字段:https://answers.acrobatusers.com/adding-image-field-form-q41825.aspx

RenderX 支持 PDF 表单字段,但我看不出它们在哪里支持按钮内的图像,只有文本:http://www.renderx.com/reference.html#PDF%20Forms。但他们确实支持将字段设置为“可打印”。

【讨论】:

  • 这不太可能适用于 apache-fop,但我会看看。感谢您的建议
猜你喜欢
  • 1970-01-01
  • 2015-05-27
  • 2017-06-02
  • 2022-08-05
  • 2023-02-22
  • 2018-07-01
  • 2020-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多