【问题标题】:Chrome: How to print PDF with original size (100%, no scaling/shrinking)Chrome:如何以原始尺寸打印 PDF(100%,无缩放/缩小)
【发布时间】:2015-12-27 05:54:50
【问题描述】:

今天我在 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 毫米宽的图像。

到目前为止我尝试了什么

  • prawn page_size 设置为低于 A4 的值(因为图像也没有 A4 大...)。
  • 玩转print_scaling(有3种模式,:none:AppDefault:something_except_the_other_ones(Read more about it here)
  • 给图片一个固定的高度(70mm)
  • 玩转Chrome Printer Dialog 提供的各种设置
  • 在 Windows Chrome 下测试(那里是 213mm,奇怪),可能与 MacOSX Chrome 有关?
  • 不幸的是在 IE11 (205mm) 下测试。

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

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


示例

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

这是一个 PDF 示例

直接链接Direct Link

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


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

不幸的是,我无法更改图像的宽度(甚至不是像素)。 有人遇到过同样的问题吗?

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


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

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

【问题讨论】:

  • 来吧,为什么不引起注意,我错过了一些关键数据吗?你们中的一个人至少可以重现它,所以我确定不是我的打印机或操作系统导致了这个错误吗?
  • 您是否尝试过使用其他库来生成 pdf?如果是这样,它还会缩小吗?这样,您可以在一定程度上确定问题的根源。
  • 我会试试的,谢谢。今天晚些时候会提供一些更新。
  • 我还要对虾做一些测试。之后我会告诉你结果。
  • 您说“嵌套在 PDF 中的图像尺寸为 213 毫米 x 70 毫米,300 DPI。像素:2515x827””但github.com/posixpascal/chrome-printing-bug/blob/master/… 处的图像为 2515x48 . 你真正使用的是哪一个?

标签: macos google-chrome firefox printing pdf-generation


【解决方案1】:

这是我使用windows系统和Mac(优胜美地)看到的测试结果

窗户:

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

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

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

所以我搬到了 Mac 上。

Mac 调查结果:

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

这样做是这样的:Apple Print

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

在 :appdefault 对虾进行打印缩放测试 -> 打印为 213 毫米。

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

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

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

【讨论】:

  • 谢谢,是的,它必须在 macOS 上使用 Firefox/chrome 做一些事情:/。我不知道如何完成这项工作。
  • 当您在 chrome/firefox 中打印网页时,他们会为您提供“100% / 原始尺寸 / 全尺寸”选项,这是像素完美的。不幸的是,他们在打印奇怪的 PDF 时没有显示此选项。我还尝试使用 PDF.js 来呈现 PDF,但这对我也没有帮助。也许我无法让它在这些浏览器中工作......
  • @praszyk 我不确定这是否与 MacOS Quartz 过滤器有关(参见 /System/Library/Filters)。这些过滤器用于在打印或 PDF 转换期间处理图像转换。
  • 稍后我会检查这些过滤器
  • @Joost 我的解决方法是在 PDF 中添加一个文本来解释用户如何打印它。不幸的是,我没有找到解决方案。如果有人解决了这个问题,我会很高兴的。
【解决方案2】:

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

【讨论】:

  • 如果您在 firefox/chrome 中打印 PDF,这对 PDF 不起作用。当我使用系统对话框打印时,它确实有效。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2013-08-23
    • 2014-02-24
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多