今天我在Chrome的打印行为中遇到了一个奇怪的错误。当我尝试使用Chrome (在Firefox中也是如此)打印动态创建的PDF时,PDF中的每个图像都会变小一点 (8mm)。而这种情况在Adobe Reader / Acrobat / MacOSX 默认打印机对话框中并不会发生。
让我更详细地解释一下我的代码:
动态PDF:
我使用prawn
来动态创建一个横向的A4 PDF,使用以下代码:
require 'prawn'
require "prawn/measurement_extensions"
class CustomPdf < Prawn::Document
def initialize(label) # A4
super({
:page_size => "A4",
:page_layout => :landscape,
:margin => 0,
:print_scaling => :none})
image "my_image.png", :width => 213.mm, :at => [3.mm, 3.mm]
end
end
PDF中嵌套的图像:
PDF中嵌套的图像尺寸为213mm x 70mm
,具有300 DPI
。以像素表示:2515x827。
我使用RMagick创建图像,但到目前为止,大小、dpi和其他所有内容似乎都没问题。因此目前不需要进一步的解释。
期望结果:
打印出的PDF将显示一个宽度为213厘米的图像。
实际结果:
打印出的PDF将显示一个宽度为205毫米的图像。
我到目前为止尝试过的:
- 将
prawn page_size
设置为小于A4(因为图像大小也不大于A4...)。 - 尝试更改
print_scaling
(有3种模式::none
、:AppDefault
、:something_except_the_other_ones
(在此阅读更多信息) - 给图像固定高度(70mm)
- 与
Chrome Printer Dialog
提供的各种设置玩耍 - 在Windows Chrome下测试(那里是213mm,很奇怪),也许与MacOSX Chrome有关?
- 不幸的是,在IE11下测试(205mm)。
这些都没有任何效果。我查看了Chromium的Bug报告人,并发现两个人可能与我的问题相同:
- https://code.google.com/p/chromium/issues/detail?id=97972
- https://code.google.com/p/chromium/issues/detail?id=67091
最后一个日期是2013年,但没有人说过任何实���适用于我的情况的东西。
示例
以下是宽度为2515像素的300 DPI图像示例: 如果Imgur将分辨率更改为72,则可以从存储库中获取示例图像(链接:https://github.com/posixpascal/chrome-printing-bug/blob/master/example.png)
以下是示例PDF文件
直接链接:Direct Link
GitHub PDF Viewer:https://github.com/posixpascal/chrome-printing-bug/blob/master/output.pdf
Github存储库,其中包含示例图像和pdf生成器脚本 https://github.com/posixpascal/chrome-printing-bug
不幸的是,我无法更改图像的宽度(甚至没有一个像素)。有人遇到过类似的问题吗?
任何想