Chrome:如何以原始尺寸打印 PDF(100%,否 scaling/shrinking)

Chrome: How to print PDF with original size (100%, no scaling/shrinking)

今天我在 Chrome 的打印行为中遇到了一个奇怪的错误。 当我尝试使用 Chrome(也在 Firefox 中打印动态创建的 PDF 时,PDF 中的每个图像都变小了一点(8 毫米)。 这在 Adob​​e Reader/Acrobat/MacOSX 默认打印机对话框中都不会发生。

让我解释一下到目前为止我的代码:

动态PDF:

我使用 prawn 使用此代码动态创建 PDF A4(横向格式):

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 毫米的图像。

到目前为止我尝试了什么

这些都没有做任何事情。 我查看了 Chromium 的 Bugreporters,发现 2 个人可能和我有同样的问题:

最后一个是在 2013 年触及的,但没有人说出任何对我的情况真正有用的东西。


例子

这是一个宽度为 2515 像素的 300 DPI 图像示例: 如果 Imgur 将分辨率更改为 72,您可以从存储库中提取示例图像 (link: https://github.com/posixpascal/chrome-printing-bug/blob/master/example.png)

这是一个示例 PDF

直接LinkDirect Link

GitHub PDF 查看器https://github.com/posixpascal/chrome-printing-bug/blob/master/output.pdf


Github 包含示例图像和 pdf 生成器脚本的存储库 https://github.com/posixpascal/chrome-printing-bug

不幸的是我不能改变图像的宽度(连一个像素都不能)。 有人遇到过同样的问题吗?

有什么想法吗?我想这是一个有趣的谜题...:x


当我打印带有 Chrome 的纯图像或网站时,有一个 'Use Original Size' 或“100% 大小”选项,我在打印 PDF 时没有。

我也试过制作一个网页而不是 PDF 并将图像宽度设置为 213mm 也没有用...

这是我使用 windows 系统和 Mac ( Yosemite )

所见的测试结果

Windows :

在 Chome 中打印 PDF:完美 - 213 毫米

在 IE 中打印:完美 - 213 毫米。以前较少(大约 205-210ish)。所以更改了默认打印设置:

Selected the Print option -> Used Print Dialog -> Selected the printer -> Print Preferences -> Advanced -> Paper Size -> Changed scaling manually -> tested A4, A5 and so on.-> A5 ( for some reason gave me 213 )

所以我搬到了Mac。

Mac 结果:

更改了纸张尺寸并进行了相同的测试:尺寸为 213 毫米。

这是这样完成的:Apple Print

所以很自然地,我测试了直接通过 Chrome 打印它,而不是通过 OSX 打开 PDF -> 以 205 毫米打印。

在 :appdefault -> Printed at 213 mm 处对虾进行打印缩放测试。

在 Firefox 上进行了相同的测试 -> 低于 205 - 210 毫米。

所以我真的不知道它是否是一个 Chrome 问题,因为它在 Firefox 上对我来说很奇怪。

所以最终,这些是我在测试完代码后的发现。

我在 Windows 上使用 Chrome 时经历了类似的 8 毫米收缩。检查了我所有的打印机属性和设置,但找不到可能的原因。事实证明,我在 Chrome 打印 (ctrl+p) 屏幕中勾选了 "fit to page" 选项。取消勾选并重新打印一页,比较它们的宽度,它们相差 8 毫米。有时是简单的事情...

根据我的经验,Chrome 打印 html 通常较小。这可能与具有 "smart shrinking" 功能的 WebKit 引擎有关。我遇到过 here(文本搜索收缩)。或者,可能只是 Chrome 开发人员对它进行了一些调整,因为过去人们抱怨这些东西不适合印刷品。