【问题标题】:imagemagick make pdf of a fixed size out of multiple imagesimagemagick 从多个图像中制作固定大小的 pdf
【发布时间】:2020-11-29 14:14:05
【问题描述】:

我找到了这个问题的一些答案,但不知何故对我没有任何作用(尽管从逻辑上讲它应该,至少据我所知)

我有三个图像file1.pngfile2.pngfile3.png,具有这些属性:

identify file*.png
file1.png PNG 4961x7016 4961x7016+0+0 8-bit sRGB 12.6135MiB 0.000u 0:00.000
file2.png PNG 4961x7016 4961x7016+0+0 8-bit sRGB 22.8132MiB 0.000u 0:00.000
file3.png PNG 4961x7016 4961x7016+0+0 8-bit sRGB 14.887MiB 0.000u 0:00.000

现在我使用这个 imagemagick 命令convert file*.png -page A4 file.pdf 制作了一个 pdf,每页都有一个图像。那个问题是,生成的 pdf 有 52 MB 太大(因为输入图片也很大)。此外,我的 pdfviewer 向我显示生成的 pdf 的纸张大小为 25×36 mm(A10) 而不是所需的 210×297 mm(A4)。

我已经尝试过调整大小,但不知何故我不太明白如何设置尺寸以获得 A4 输出(这是我现在的主要目标)。

有人知道为什么page A4 不起作用或如何实际获得纸张大小为A4 的输出pdf?

PS:

convert -version
Version: ImageMagick 7.0.10-25 Q16 x86_64 2020-08-01 https://imagemagick.org
Copyright: © 1999-2020 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules OpenMP(4.5)
Delegates (built-in): bzlib cairo djvu fontconfig freetype heic jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png raqm raw rsvg tiff webp wmf x xml zlib

EDIT1(识别输出):

identify -verbose file.pdf
Image:
  Filename: file.pdf
  Format: PDF (Portable Document Format)
  Mime type: application/pdf
  Class: DirectClass
  Geometry: 71x101+0+0
  Resolution: 72x72
  Print size: 0.986111x1.40278
  Units: Undefined
  Colorspace: sRGB
  Type: TrueColorAlpha
  Base type: Undefined
  Endianness: Undefined
  Depth: 16/8-bit
[...]
identify file.pdf
file.pdf[0] PDF 71x101 71x101+0+0 16-bit sRGB 7412B 0.000u 0:00.000
file.pdf[1] PDF 71x101 71x101+0+0 16-bit sRGB 11518B 0.000u 0:00.000
file.pdf[2] PDF 71x101 71x101+0+0 16-bit sRGB 8394B 0.000u 0:00.000

EDIT2:在此处查看两个测试 png (https://mega.nz/folder/O4Fm1aoK#ppeQD4ZycDMKhC2DctJ-UA)(遗憾的是我无法将 pdf 上传到 stackOverflow)

转成pdf还是不行

【问题讨论】:

    标签: pdf imagemagick imagemagick-convert


    【解决方案1】:

    如果我在 ImageMagick 中添加单位和密度,这对我有用。

    convert Untitled* -units pixelsperinch -density 72 -resize 595x842 result.pdf
    

    identify -verbose result.pdf
    

    Image:
      Filename: result.pdf
      Format: PDF (Portable Document Format)
      Mime type: application/pdf
      Class: DirectClass
      Geometry: 595x841+0+0
      Resolution: 72x72
      Print size: 8.26389x11.6806
    ...
    

    您可能发现 ImageMagick 存在缺陷。我相信需要提供单位和密度,因为 PNG 以像素/厘米存储该信息,但 PDF 需要以像素/英寸为单位。

    【讨论】:

    • 哦,是的,单位是问题所在。在下面的示例中,您没有指定单位,但它仍然有效。有没有办法为此设置某种默认值? (或者你知道为什么没有-units 可以工作吗?)
    • 它起作用了,因为创建的图像不是以像素/厘米为单位。我认为 xc: 的默认值是 pixelperinch
    • 啊,我明白了。感谢您的帮助(和您的时间)并感谢您的解释;)
    【解决方案2】:

    在 ImageMagick 中,-page 是设置而不是运算符,因此不会调整大小。您需要使用 -resize 将每个图像的大小调整为 A4 (595 x 842) 的像素尺寸。

    convert file1.png file2.png file3.png -resize 595x842 result.pdf
    

    【讨论】:

    • 嗯,应用此命令后,pdf查看器仍然显示生成的pdf格式为A10。并且好奇,您从哪里获得 A4 的像素尺寸并且它们不是根据分辨率而变化的吗?也许有趣的是,当我添加标志 -density 10 时,pdf 查看器会显示 pdf 的格式为 A1(质量非常糟糕)。我过去玩过分辨率(密度),但我没有发现我必须将其设置为哪个值才能正常工作。
    • imagemagick.org/script/command-line-options.php#page。 A4 的物理尺寸为 8-1/4 x 11-3/4(请参阅neenahpaper.com/resources/paper-101/international-sizes)。如果除以 842/11.75=72。所以密度应该是72 dpi。我的问题是您想要一个 PDF 页面上的所有三个文件还是按照我的命令将每个文件放在不同的 PDF 页面上?
    • 啊,我明白了。是的,我想要第 1 页上的 file1.png,第 2 页上的 file2.png 等等(现在正在发生。只是纸张大小是错误的)。如果我将-density 72 添加到我的命令中,它也无济于事(据我所知,ImageMagick 上的默认值也应该是 72)。
    【解决方案3】:

    这似乎对我在 ImageMagick 上正常工作。

    convert -size 4961x7016 xc:red xc:green1 xc:blue -resize 595x842 result.pdf
    

    identify result.pdf
    result.pdf[0] PDF 595x841 595x841+0+0 16-bit sRGB 6215B 0.000u 0:00.002
    result.pdf[1] PDF 595x841 595x841+0+0 16-bit sRGB 6215B 0.000u 0:00.001
    result.pdf[2] PDF 595x841 595x841+0+0 16-bit sRGB 6215B 0.000u 0:00.000
    

    identify -verbose result.pdf
    Image:
      Filename: result.pdf
      Format: PDF (Portable Document Format)
      Mime type: application/pdf
      Class: DirectClass
      Geometry: 595x841+0+0
      Resolution: 72x72
      Print size: 8.26389x11.6806  <--- this is close to the expected size for A4 of 8 1/4 x 11 3/4 inches. 
    

    您对英寸和厘米感到困惑吗?

    【讨论】:

    • 现在也检查了identify 输出(在原始帖子中作为编辑,因为这比在 cmets 中的可读性更好),并且从识别输出来看,pdf 是完全有道理的显示得太小,但从我的角度来看,识别输出看起来这样没有意义。
    • 还添加了两个对我不起作用的示例文件(这些是我想要转换的文件之外的其他文件,因为它们是机密文件)。
    猜你喜欢
    • 2012-03-31
    • 2012-04-30
    • 2014-09-12
    • 1970-01-01
    • 2017-09-22
    • 2017-02-06
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多