【问题标题】:Converting long image to paged pdf将长图像转换为页面pdf
【发布时间】:2015-09-18 17:40:03
【问题描述】:

我正在使用 imagick 将 png 转换为 pdf:

convert file.png file.pdf

现在我得到一个只有一页的 pdf,但打印该 pdf 时出现问题。

是否可以自动拆分 png 以创建页面适合 A4 格式的 pdf?

【问题讨论】:

    标签: image pdf imagemagick


    【解决方案1】:

    不是 100% 确定您要如何/在哪里拆分大 PNG 图像,但这应该会给您一些想法。首先,让我们为一张 A4 确定一个非常近似的尺寸 - 有些打印机是无边距的,有些打印机不能靠近纸张边缘,所以如果我们说,为了论证,A4 是 8 英寸 x 11 英寸,然后是 144 dpi(也是一个猜测)您将在 A4 页面上获得大约 1,152 像素 x 1,584 像素。

    因此,我们将您的图像分成不大于此大小的块,然后重新分页它们,以便它们忘记它们在原始图像中的来源。然后我们将生成的 A4 大小的块保存为 page000.pngpage0001.png 等。

    convert image.png -crop 1152x1584 +repage page%03d.png
    

    现在我们可以用这个把它们重新组合成一个 PDF

    convert -density 144 page*png result.pdf
    

    显然,这种简单的方法不知道在哪里是切图像的合理位置,因此它可能会在不幸的地方进行切割!

    正如@Danack 评论的那样,您可以消除对中间文件的需要,直接进入输出 PDF,如下所示:

    convert image.png -crop 1152x1584 +repage output.pdf
    

    让我们试一试。首先创建一个大渐变PNG

    convert -size 3000x4000 gradient:black-white image.png
    

    现在把那只小狗剁碎……

    convert image.png -crop 1152x1584 +repage page%03d.png
    

    给出 9 个这样的页面:

    identify page*
    page000.png PNG 1152x1584 1152x1584+0+0 16-bit sRGB 9.68KB 0.000u 0:00.000
    page001.png[1] PNG 1152x1584 1152x1584+0+0 16-bit sRGB 9.68KB 0.000u 0:00.000
    page002.png[2] PNG 696x1584 696x1584+0+0 16-bit sRGB 8.3KB 0.000u 0:00.000
    page003.png[3] PNG 1152x1584 1152x1584+0+0 16-bit sRGB 9.71KB 0.000u 0:00.000
    page004.png[4] PNG 1152x1584 1152x1584+0+0 16-bit sRGB 9.71KB 0.000u 0:00.000
    page005.png[5] PNG 696x1584 696x1584+0+0 16-bit sRGB 8.32KB 0.000u 0:00.000
    page006.png[6] PNG 1152x832 1152x832+0+0 16-bit sRGB 5.21KB 0.000u 0:00.000
    page007.png[7] PNG 1152x832 1152x832+0+0 16-bit sRGB 5.21KB 0.000u 0:00.000
    page008.png[8] PNG 696x832 696x832+0+0 16-bit sRGB 4.48KB 0.000u 0:00.000
    

    然后将它们重新组合在一起,作为此处显示的 PNG,但 Pdf 也不例外:

    【讨论】:

    • 你不能用convert image.png -crop 1152x1584 +repage page.pdf直接跳到PDF吗?
    • @Danack 是的,确实,谢谢。我太忙于演示中间文件的大小并考虑以不同的方式对它们进行排序,我省略了以简化命令 - 我会添加它,谢谢。
    【解决方案2】:

    另一种方法是告诉 ImageMagick 对瓦片集进行裁剪

    convert -crop 1x16@  AHw1w.png -page 200x100 tile.pdf
    

    这会将输入图像分成 16 个高部分和 1 个部分,然后将它们呈现到页面大小为 200 x 100 的 pdf 上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 2011-08-03
      • 2022-10-20
      • 2014-06-06
      相关资源
      最近更新 更多