Macos Chrome:如何打印原始大小的PDF(100%,无缩放/收缩)

Macos Chrome:如何打印原始大小的PDF(100%,无缩放/收缩),macos,google-chrome,firefox,printing,pdf-generation,Macos,Google Chrome,Firefox,Printing,Pdf Generation,今天我在Chrome的打印行为中遇到了一个奇怪的错误。 当我尝试使用Chrome(也在Firefox中)打印动态创建的PDF时,PDF中的每个图像都会变小一点(8mm)。 这在Adobe Reader/Acrobat/MacOSX默认打印机对话框中也不会发生 到目前为止,让我进一步解释我的代码: 动态PDF: 我使用prawn使用以下代码动态创建PDF A4(横向格式): require 'prawn' require "prawn/measurement_extensions" class

今天我在Chrome的打印行为中遇到了一个奇怪的错误。 当我尝试使用Chrome(也在Firefox中)打印动态创建的PDF时,PDF中的每个图像都会变小一点(8mm)。 这在Adobe 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
需要“对虾”
需要“虾/测量扩展”
类CustomPdf“A4”,
:page_layout=>:横向,
:margin=>0,
:print_scaling=>:none})
图像“my_image.png”,:width=>213.mm,:at=>[3.mm,3.mm]
结束
结束
PDF中的嵌套图像: 嵌套在PDF中的图像大小为
213mm x 70mm
300 DPI
。像素单位:2515x827

我使用RMagick创建图像,但大小、dpi和所有迄今为止似乎都还不错。所以目前没有进一步的解释

预期结果: 打印的PDF将显示213cm宽的图像

实际结果: 打印的PDF将显示一幅205mm宽的图像

到目前为止我试过什么
  • prawn page_size
    设置为小于A4的大小(因为图像也不如A4大…)
  • 打印缩放
    (有3种模式,
    :无
    :应用默认
    :除其他模式之外的其他模式
  • 给图像一个固定高度(70毫米)
  • 使用
    Chrome打印机对话框提供的各种设置
  • 在Windows Chrome下测试(213mm,很奇怪),可能与MacOSX Chrome有关
  • 不幸的是,在IE11(205mm)下测试
他们两个都没做什么。 我查看了Chromium的Bugreporters,发现有两个人可能与我有相同的问题:

最后一个是2013年,但没有人说任何对我的案子有效的话


例子 下面是宽度为2515 px的300 DPI图像示例: 如果Imgur将分辨率更改为72,则可以从存储库中提取示例图像(链接:)

下面是一个示例PDF

直接链接

GitHub PDF查看器


带有示例图像和pdf生成器脚本的Github存储库

不幸的是,我不能改变图像的宽度(甚至一个像素也不能)。 有人经历过同样的问题吗

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


当我用Chrome打印普通图像或网站时,有一个“使用原始大小”或“100%大小”选项,而我在打印PDF时没有这个选项


我还尝试制作一个网页而不是PDF,并将图像宽度设置为
213mm
,这也不起作用…

这是我使用windows系统和Mac(约塞米蒂)看到的测试结果

窗口:

以Chome:Perfect-213 mm打印PDF

以IE:Perfect-213毫米打印。这比以前少(大约205-210毫米)。因此更改了默认打印设置:

选择打印选项->使用的打印对话框->选择打印机->打印首选项->高级->纸张大小->手动更改缩放->测试A4、A5等。->A5(出于某种原因,我得到了213)

所以我换上了Mac电脑

Mac调查结果:

改变纸张尺寸并进行相同测试:尺寸为213 mm

这是这样做的:

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

在以下位置对对虾进行打印缩放测试:appdefault->在213 mm处打印

在Firefox上测试相同->低于205-210毫米

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


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

我在Windows上使用Chrome时也经历了类似的8毫米收缩。检查了我所有的打印机属性和设置,但找不到可以做什么。结果,我在Chrome打印(ctrl+p)中勾选了“适合页面”选项屏幕。取消勾选并重新打印一页,比较它们的宽度,它们的间距为8毫米。有时很简单…

根据我的经验,Chrome打印的html通常更小。这可能与WebKit引擎具有“智能收缩”功能有关。我遇到过它(文本搜索收缩)或者,可能只是因为,Chrome开发者对它进行了一些调整,因为过去有人抱怨这些东西与打印不符。

拜托,为什么没有引起任何注意,我是否丢失了一些关键数据?你们中的一位能至少复制它吗?所以我确定不是我的打印机或操作系统导致了这个错误?你们试过使用吗另一个生成pdf的库?如果是这样,它还会缩小吗?通过这种方式,你可以确定问题的根源,在一定程度上是正确的。我会尝试的,谢谢。今天晚些时候会更新。我还会对对虾做一些测试。之后我会让你知道结果。你说“嵌套在PDF中的图像大小为213mm x 70mm,分辨率为300 DPI。像素:2515x827”“,但图像的位置为2515x48。您真正使用的是哪一个?谢谢,是的,它与macosx上的Firefox/chrome有关:/。我不知道如何进行此操作。当您使用chrome/Firefox打印网页时,他们会提供给您使用。”“100%/原始大小/全尺寸”选项,像素完美。不幸的是,他们在打印PDF时没有显示此选项,这很奇怪。我还尝试使用PDF.js来呈现PDF,这对我也没有帮助。也许我无法在这些浏览器中使用它…@praszyk I am