【问题标题】:Scaling down a PDF using ghostscript results in images not being alinged使用 ghostscript 缩小 PDF 会导致图像未对齐
【发布时间】:2017-06-26 20:13:22
【问题描述】:

我目前正在使用 phantomjs 渲染特定网页,其中包含两个叠加图像。生成 PDF 后,我将生成的 PDF 重新缩放到适当的大小 - 目前它正在缩小到原始大小的大约三分之一。在将转换后的 phantomjs PDF 与缩小的 PDF 进行比较时,我可以清楚地看到图像不再对齐(它们在转换后的 PDF 中)

查看发生问题的放大(3200%,以详细显示问题)区域。蓝色图像 (SVG) 覆盖较暗的图像 (PNG) - 两者都在右侧完美对齐(白色区域是 PDF 的一部分))

但是,当使用 ghostscript 缩放此图像时:gs -o /path/to/output.pdf -sDEVICE=pdfwrite -dPDFFitPage -r300x300 -g2676x2676 /path/to/input.pdf(即使它缩小而不是放大,图像也不再对齐:

(两张图片都用position:absolute; right: 0;放置,所以都在右侧很好地对齐。)

什么可能导致这种行为以及如何避免?

【问题讨论】:

    标签: html css pdf phantomjs ghostscript


    【解决方案1】:

    这种行为可能是在 PDF 使用者中,而不是在 Ghostscript 中。

    您首先需要注意的是,当您通过 Ghostscript 运行 PDF 文件并通过 pdfwrite 设备生成 PDF 文件时,您绝对不是“调整大小”、“缩小”、“合并”或任何暗示输出 PDF 文件的内容与输入内容有任何关系的其他术语。

    “概述”here 解释了原因,建议您阅读。

    现在,如果没有看到 PDF 文件(您没有给我们),我无法绝对确定,但是.. 最可能的原因是算术中的舍入错误意味着输出 PDF 文件中的图像不在 精确地与输入的位置相同(不,没有办法避免这种情况)。

    当您“放大”时,您正在更改当前变换矩阵,坐标算术精度的微小差异将乘以“缩放因子”。通常,如果对象覆盖超过 1/2 的像素,则像素为“开启”,如果缩放效果恰到好处,则很容易意味着顶部图像中的像素(假设它**是*图像)几乎没有超过 1/2 像素,而下图仅略低于 1/2 像素。导致你看到的不匹配。

    即使您没有进行这种转换,此类问题也可能存在,训练有素的平面设计师会意识到这一点,并以防止问题发生的方式创建内容。要么没有需要精确对齐的图像,要么如果必须,则让图像都延伸超过您希望它们结束的点,然后在两个图像周围放置一个剪切矩形。这样无论裁剪矩形如何缩放,图像都将始终在同一点处裁剪。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 2017-03-19
      • 1970-01-01
      • 2015-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多