mat*_*001 11 pdf ghostscript imagemagick
我目前正在使用 ImageMagick 将 PDF 转换为 JPEG 光栅图像。它非常缓慢并且会占用大量内存。
我使用的命令是:
convert -geometry 1024x768 -density 200 -colorspace RGB foo.pdf bar%02d.jpg
Run Code Online (Sandbox Code Playgroud)
我猜它很慢,因为它使用了 Ghostscript。 但是必须有一种更快的方法在 Linux 机器上做到这一点。
有没有人找到更好的解决方案?
Kur*_*fle 21
直接使用Ghostscript(而不是使用convert间接调用Ghostscript 的ImageMagick命令)确实更快。它使您可以更好地控制转换参数。尝试
gs \
-sDEVICE=jpeg \
-o bar_%03d.jpg \
-dJPEGQ=95 \
-r600x600 \
-g4960x7016 \
foo.pdf
Run Code Online (Sandbox Code Playgroud)
在哪里
-o: 确定输出路径+文件名(并保存使用-dBATCH -dNOPAUSE)-dJPEGQ: 将 JPEG 质量设置为 95%-r: 将分辨率设置为 600dpi-g: 将图像大小设置为 4960x7016px-sDEVICE: 设置输出为 JPEG此命令可能仍然会变慢并创建比预期更大的文件。对于更小的文件和更快的执行,试试这个(这可能接近你的convert命令行的输出质量):
gs \
-sDEVICE=jpeg \
-o bar_%03d_200dpi_q80.jpg \
-dJPEGQ=80 \
-r200x200 \
-g1653x2339 \
foo.pdf
Run Code Online (Sandbox Code Playgroud)
甚至
gs \
-sDEVICE=jpeg \
-o bar_%03d_default_a4.jpg \
-sPAPERSIZE=a4 \
foo.pdf
Run Code Online (Sandbox Code Playgroud)
(它提供 72dpi 的分辨率,通常足以满足大多数屏幕和大多数 Web 应用程序的需求)。
Kur*_*fle 10
顺便说一句,ImageMagick 慢得多的原因之一是它两次调用 Ghostscript。它不会一次性转换 PDF => PNG,而是使用两个不同的步骤:
PDF => PostScript转换;PostScript => PNG转换。您可以通过键入了解 ImageMagick 的“委托”(ImageMagick 使用的外部程序,例如 Ghostscript)的详细设置
convert -list delegate
Run Code Online (Sandbox Code Playgroud)
(在我的系统上,这是一个包含 32 个不同命令的列表。)现在要查看哪些命令用于转换为 PNG,请使用以下命令:
convert -list delegate | grep -i png
Run Code Online (Sandbox Code Playgroud)
好的,这是针对 Linux 的。如果您使用的是 Windows,请尝试以下操作:
convert -list delegate | findstr /i png
Run Code Online (Sandbox Code Playgroud)
您会发现 IM 仅从 PS 或 EPS 输入生成 PNG。那么 IM 如何从您的 PDF 中获取 (E)PS?简单:
convert -list delegate | findstr /i PDF
convert -list delegate | grep -i PDF
Run Code Online (Sandbox Code Playgroud)
啊! 它使用 Ghostscript 进行 PDF => PS 转换,然后再次使用 Ghostscript 进行 PS => PNG 转换。有效,但如果您知道 Ghostscript 可以一次性完成 PDF => PNG,这不是最有效的方法。而且速度更快。而且质量要好得多。
关于 IM 通过 Ghostscript 委托处理 PDF 到图像的处理,您应该首先了解两件事:
-density 600一个convert参数,告诉 Ghostscript 为其图像输出使用 600 dpi 分辨率。PDF => PS然后再转换PS => PNG是一个真正的错误。因为你永远不会赢,而且在第一步很难保持质量,但经常会失去一些。原因:
PS => PDF,因此不是那么重要......)这就是为什么我建议您直接使用 Ghostscript 将 PDF 一次性转换为 PNG(或 JPEG)。并使用Ghostscript 的最新版本 8.71(即将发布:9.00)...
小智 6
该方案pdftoppm从poppler的包也能创建JPEG文件,对我来说是约快两倍,使用gs上面所描述的:
pdftoppm -jpeg -r 300 foo.pdf foo.jpg
Run Code Online (Sandbox Code Playgroud)
根据我的经验,MuPDF比 Ghostscript 快得多。这是一个更新的项目,没有太多 gs 的繁琐。试试它是否适合您的用例!
mudraw -w 1024 -h 768 -r 200 -c rgb -o bar%d.png foo.pdf
如果您有较旧的 linux 发行版并从存储库安装 mupdf-tools,则mudraw可能仍会调用pdfdraw
然后,您必须使用例如 imagemagick 将 png 转换为 jpeg。但它仍然会比 Ghostscript 快。
| 归档时间: |
|
| 查看次数: |
17442 次 |
| 最近记录: |