好的,这是我的问题:
我们使用 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”大小似乎很常见......我不知道有什么好的方法将其映射到像素大小调整。
如果有人对根本原因、使这些变通方法起作用和/或其他想法有任何见解,那么您将欠我的债。