将多页 PDF 转换为 PNG 并返回 (Linux)
Posted
技术标签:
【中文标题】将多页 PDF 转换为 PNG 并返回 (Linux)【英文标题】:Convert multipage PDF to PNG and back (Linux) 【发布时间】:2012-03-31 09:26:50 【问题描述】:我有很多 PDF 文档要转换为 PNG,在 Gimp 中编辑,然后保存回多页 Acrobat 文件。我正在填写表格并添加扫描签名,尽量避免打印、签名,然后再扫描回来,并且能够键入我需要输入的信息。
我一直在尝试使用 Imagemagick 转换为 png 文件,这似乎工作正常。我使用命令convert -quality 100 -density 300x300 multipage.pdf single%d.png
(我不确定质量参数是否适合 png)。
但我在保存回 PDF 时遇到问题。有些文件的页面大小错误,我已经尝试了我能找到的所有命令和过程,但总是有一些奇怪的大小。分辨率似乎有所不同,因此在一定的缩放级别下看起来不错,但是有几页被指定为大约 2 英寸宽,或者它们是 8.5x11 但其他的大约是 35 英寸宽。我已经尝试确保 Gimp 的画布大小和分辨率正确,并将分辨率保存在文件中,但这似乎并不重要。
我用来保存文件的命令是convert -page letter -adjoin single*.png multipage.pdf
我试过其他参数,但似乎都不重要。
如果有人有任何想法或替代方案,我将不胜感激。
【问题讨论】:
我认为您可以直接使用 GIMP 编辑 PDF。 如果您想要在 pdf 页面上添加签名图像作为覆盖,您可以使用一些 pdf 工具来完成此操作,而无需转换为 png。 @Blender:Gimp 导入 PDF,但实际上并未保存为 PDF;至少在 Linux 上,它将打印为 PDF,但只能打印单个图像,而不是我想要的多页 PDF。 @Dan D:我需要添加签名和日期,并且需要在每个文件的不同位置,完全不相似。但是,如果您知道其他可能运行良好的工具,我很想了解它们。 【参考方案1】:“我不确定质量参数是否适合 PNG。”
对于 PNG 输出,-quality
设置与 JPEG 的质量设置非常不同(它只是一个从 0
到 100
的整数)。
对于 PNG,它由两个单个数字组成:
第一个数字(十位)是(主要是)zlib 压缩级别,它可能从 0
到 9
。(但是0
的设置有一个特殊的含义:当你使用它时,你会得到 Huffman 压缩,而不是 zlib 压缩级别 0。这通常更好......很奇怪但确实如此。)
第二位是PNG数据编码过滤器类型(压缩前):
0 是无, 1 是“子”, 2 是“向上”, 3 是“平均”, 4 是“Paeth”,并且 5 是“自适应的”。实际上这意味着:
对于具有纯色序列的插图,“无”滤镜 (-quality 00
) 通常是最合适的。
对于自然风景照片,“自适应”过滤 (-quality 05
) 通常是最好的。
“我在保存回 PDF 时遇到问题。有些文件的页面大小错误,我已经尝试了所有可以找到的命令和程序 [...]被指定为大约 2 英寸宽,或者它们是 8.5x11,但其他的大约是 35 英寸宽。”
由于没有可用的 PNG 文件,我创建了一些具有不同尺寸的简单文件来验证不同的命令(因为我不再确定自己了)。确实,您使用的那个:
convert -page letter -adjoin single*.png multipage.pdf
确实以(相同)字母大小创建所有 PDF 页面,但它始终将我的(不同大小)PNG 样本放在 PDF 页面的左下角。 (如果 PNG 超过 PDF 页面大小,它会缩小它们以使其适合 - 但它不会放大较小的 PNG 以填充可用的页面空间。)
对命令的以下修改会将 PNG 放置在每个 PDF 页面的中心:
convert \
-page letter \
-adjoin \
single*.png \
-gravity center \
multipage.pdf
如果这对您来说仍然不够好,您可以通过添加 -scale '590!x770!'
参数来强制(可能不成比例!)缩放以几乎填满字母区域(这将在每个边缘留下 11 pt 的边框页):
convert \
-page letter \
-adjoin \
single*.png \
-gravity center \
-scale '590!x770!' \
multipage.pdf
要去掉多余的边框,请使用-scale '612!x792!'
。 -- 如果您只想在需要时向上缩放,同时保持 PNG 的纵横比,请使用-scale '590<x770<'
:
convert \
-page letter \
-adjoin \
single*.png \
-gravity center \
-scale '590<x770<' \
multipage.pdf
【讨论】:
谢谢。我现在才刚刚开始我的假期,但是当我回来时,我会尝试你的一些建议,看看它们是如何工作的,但即使它不起作用,你也应该为这些努力点赞。 :) 嘿 :-) -- 但我很确定它有效。如果我总是能得到“努力”的支持,我现在已经是富翁了:-)【参考方案2】:为什么不直接使用Xournal?这就是我用来注释 PDF 的方法
【讨论】:
谢谢,我不使用它的原因是我以前从未听说过它。不过,这听起来很有希望,当我度假回来时,我一定会研究一下。我会在几周后重新讨论这个话题。以上是关于将多页 PDF 转换为 PNG 并返回 (Linux)的主要内容,如果未能解决你的问题,请参考以下文章
ImageMagick 将具有多页的 pdf 转换为高质量的 PNG
Ghostscript错误使用pdfwrite将多页PS转换为多页PDF