0

好的,这是我的问题:

我们使用 FOP 来创建“漂亮”的报告输出。如果用户想要一个文件,我们使用 pdf 选项,用于预览的 AWT 和用于打印它们的 -print 选项。我们正在使用 FOP 0.25.x,我完全认识到它不是最新版本,但升级到 0.95 似乎是一项我不一定想承担的不平凡的任务。

无论如何,我们的一位用户注意到,在将身份证(通过 FOP -print 选项生成)打印到身份证打印机时,卡片上的图像(员工的照片)有一些损坏......像绿色和红色的点和线。我们还发现,如果我们向其中一台 HP 彩色激光打印机发送完全相同的打印请求,它的打印效果很好。更奇怪的是,如果我们使用 FOP 创建 ID 卡的 PDF,然后通过卡片打印机上的 acrobat reader 打印,打印效果很好。

我最终发现它与图像的缩放有关……我们将 600 像素高的图像缩小到 120 像素。如果我缩小图像的大小,即使只是将它们减半,腐败也会显着下降。同样,当我放大图像时,腐败增加了。

所以我的问题是:有人知道这里发生了什么吗?或者曾经遇到过这样的事情?

由于我不知道为什么会发生这种情况,因此我不知道如何解决根本原因,但我一直在尝试各种解决方法:

1) 使用 FOP 创建图像的 pdf,然后通过 Java 打印。这似乎是一个显而易见的答案,但一些谷歌搜索表明通过 Java 打印 PDF 并非易事。我在 java.net 上看到过 PDF Renderer 项目,但对于单个非常具体的应用程序来说似乎相当庞大。

2) 在将图像提供给 FOP 之前尝试调整图像大小。这似乎也很简单,但是我们的各种用户可以根据需要为这些身份证设置样式表,并且在其中使用“pt”和“in”大小似乎很常见......我不知道有什么好的方法将其映射到像素大小调整。

如果有人对根本原因、使这些变通方法起作用和/或其他想法有任何见解,那么您将欠我的债。

4

2 回答 2

0

最确定的解释:
图像损坏?这是一个错误。

为什么不使用 0.95?迟早你必须升级,Apache 联盟不会修复 0.25.x 版本中的错误。

您不能希望为将来可能出现的每个错误找到解决方法。

于 2009-05-07T21:41:36.300 回答
0

我最终做了我在原始问题中提到的第二件事......即在将其提供给 FOP 之前调整它的大小。我发现我可以检索我正在打印的打印机的 dpi 并对其进行一些数学运算以获取像素大小。似乎在我的所有测试中都能完美运行......不是真正的解决方案,而是一个足够的解决方法。

于 2009-05-08T18:38:40.387 回答