使用JSP和Jasper Reports,我制作了一个用于打印A4标签页的应用程序。
我必须根据不同的页面(2×5、2×7、3×10和3×11网格),不同的打印机(京瓷,OKI和HP)配置应用程序(在要生成的PDF页面上设置对齐)不同的PDF查看器(Adobe,Foxit和Nitro)。
示例:我在Jasper Reports中设置了一个A4页面,其网格为2×5,拥有Foxit Reader的用户将在Kyocera上打印该页面。如果另一个用户也有Kyocera,但使用的是Adobe Reader,则列之间的间隔会变小。但是,如果用户使用Foxit Reader,但可以在OKI上打印,则整个文档将保留甚至被剪切。
配置每个单独的标签页面是不可避免的,但是我是否可以不必为特定的PDF查看器或打印机(至少其中之一)设置页面对齐方式?这可能是跳过PDF生成或所有打印机都将解释的某些常规配置的一种方法-不管PDF查看器或打印机如何,我的页面打印都完全相同。
最佳答案
您确定这不是导致问题的Foxit Reader和/或Adobe Reader中的设置吗?
我知道在Adobe Reader中,Page Sizing & Handling
下的打印对话框中有一个设置。他们应该使用Actual Size
,以免对图像进行任何缩放或操作。
在福昕阅读器中,它位于Print Handling
下。您需要将缩放类型设置为None
。默认值似乎是Fit to Printer Margins
。
您不必为每个PDF阅读器和/或打印机的每个版本和组合做任何不同的事情。这是维护方面的噩梦,您不应该尝试执行此操作。他们每次购买新打印机时都必须进行更改,并且有可能在升级阅读器时进行更改。
最好的选择是弄清楚他们为什么会产生不同的结果,并解决该问题,而不是强求问题。我很确定这是与您的用户有关的培训问题,告诉他们这些设置应该可以解决问题。
更新:经过更多的挖掘之后,似乎可以在导出时设置“打印缩放比例”的值。创建JRPdfExporter
后,需要将JRPdfExporterParameter.PRINT_SCALING
设置为JRPdfExporterParameter.PRINT_SCALING_NONE
:
exporter.setParameter(JRPdfExporterParameter.PRINT_SCALING, JRPdfExporterParameter.PRINT_SCALING_NONE);
我不知道这是否也适用于Foxit Reader,但我认为会。