【问题标题】:Can Apache FOP be used to produce PDFs that can keep PDF-Clients from scaling and changing orientation?Apache FOP 能否用于生成 PDF 以防止 PDF 客户端缩放和改变方向?
【发布时间】:2012-03-05 00:01:17
【问题描述】:

我正在使用 apache fop 1.0 为我们的一位客户创建一些 pdf 文件。 pdf 的打印输出稍后由扫描仪读取。不幸的是,扫描仪无法处理缩放的打印输出,因此出现了一个问题,是否可以防止在 pdf-client 中缩放 pdf 以便必须以预定义的大小完成打印输出。我知道 pdf 加密的可能性,它可以用来防止打印,但我需要的有点不同。所以我的问题是:

  • 有没有办法强制 pdf 客户端在不缩放的情况下以定义的大小打印 pdf?
  • 也可以强制纸张方向吗?
  • 这有可能吗,可以用 apache fop 完成吗?

其实我不认为这是可能的,但任何帮助将不胜感激。

最好的问候

泰勒

【问题讨论】:

  • 你知道他们用的是什么pdf客户端吗?您是在谈论图像缩放还是文档本身?
  • 不,不幸的是它可能是任何客户。我正在寻找一种方法来防止整个文档本身的缩放和改变方向。哦,谢谢你的快速回复
  • 我知道您可以在 xsl-fo 标记中设置页面布局,但我认为从 fop 端以编程方式限制客户端发生的事情是不可能的。这将引发各种安全问题。您可以在 xsl-fo 中设置图像的缩放比例,但我从未见过整个文档的缩放比例。
  • 我同意,无论如何感谢您的确认。

标签: java pdf pdf-generation apache-fop


【解决方案1】:

您无法真正控制查看应用程序打印或显示 PDF 的方式。您能做的最好的事情就是附上一个ViewerPreferences 字典(ISO 32000:2008 的第 12.2 节)——但这只是对查看者的提示

【讨论】:

  • 有趣,但似乎 apache fop 不支持 ViewerPreferences,至少我在谷歌上搜索了几分钟找不到一些有用的信息,但我稍后会再试一试。谢谢你的提示。
  • @tyler,附加 ViewerPreferences 使用 Does FOP 2.1 support viewer preferences(对于 FOP 2.1)
【解决方案2】:

如果您从命令行使用 FOP,您可以查看fop -out list,它显示了 FOP 将生成的 mime 类型列表。另请参阅 a FOP FAQ on output formatsorg.apache.fop.apps.MimeConstants,了解您可以通过编程方式生成的输出格式列表。

为了避免重新调整大小,在这种情况下生成栅格(例如 PNG 或 TIFF)输出会有所帮助。例如,从命令行:

fop -xml data.xml -xsl transform.xslt -out "image/tiff" output.tiff

将生成一个 TIFF 文件。对 PNG 文件等使用 "image/png"

以编程方式,您可以,例如:

FopFactory fopFactory = FopFactory.newInstance();
FOUserAgent userAgent = fopFactory.newFOUserAgent();

TransformerFactory factory = org.apache.xalan.processor.TransformerFactoryImpl.newInstance();
Transformer transformer;

OutputStream out = new BufferedOutputStream(pdfOut[0].setBinaryStream(1L));

try {
  Fop fop = fopFactory.newFop(MimeConstants.MIME_PNG /* or MIME_TIFF */, userAgent, out);
  transformer = factory.newTransformer(new StreamSource(xsltIn.getCharacterStream()));
  Source src = new StreamSource(xmlIn.getCharacterStream());
  Result res = new SAXResult(fop.getDefaultHandler());
  transformer.transform(src, res);
} catch ...

【讨论】:

  • (避免)光栅输出的缩放将取决于应用程序以及您以与 pdf 相同的方式打印它的应用程序,不是吗?
猜你喜欢
  • 2012-10-25
  • 1970-01-01
  • 2022-11-25
  • 1970-01-01
  • 2017-10-02
  • 1970-01-01
  • 1970-01-01
  • 2019-10-13
  • 2012-08-11
相关资源
最近更新 更多