将PDF转换为高分辨率的图像

JBW*_*ore 306 pdf imagemagick

我正在尝试使用命令行程序convert将PDF转换为图像(JPEG或PNG).这是我试图转换的PDF之一.

我希望程序能够修剪多余的空白区域并返回足够高质量的图像,以便轻松读取上标.

这是我目前最好的尝试.正如你所看到的,修剪效果很好,我只需要提高分辨率.这是我正在使用的命令:

convert -trim 24.pdf -resize 500% -quality 100 -sharpen 0x1.0 24-11.jpg
Run Code Online (Sandbox Code Playgroud)

我试图做出以下有意识的决定:

  • 调整它的大小(对分辨率没有影响)
  • 使质量尽可能高
  • 使用-sharpen(我已尝试过一系列值)

任何有关在最终PNG/JPEG中获得图像分辨率的建议都将非常感谢!

JBW*_*ore 370

似乎以下工作:

convert           \
   -verbose       \
   -density 150   \
   -trim          \
    test.pdf      \
   -quality 100   \
   -flatten       \
   -sharpen 0x1.0 \
    24-18.jpg
Run Code Online (Sandbox Code Playgroud)

它导致左图像.将其与我原始命令的结果(右图)进行比较:

  

(要真正看到并欣赏两者之间的差异,请右键单击每个,然后选择"在新标签中打开图像...".)

还要记住以下事实:

  • 右侧较差的模糊图像的文件大小为1.941.702字节(1.85 MByte).它的分辨率为3060x3960像素,使用16位RGB色彩空间.
  • 左侧更好,更清晰的图像的文件大小为337.879字节(330 kByte).它的分辨率为758x996像素,使用8位灰色空间.

所以,不需要调整大小; 添加-density标志.密度值150很奇怪 - 尝试一系列值会导致两个方向上看起来更糟糕的图像!

  • `density`参数有点特殊,因为它必须来*输入文件之前.由于PDF是一种基于矢量的文件格式,它没有(很多)像素的概念,所以它表示"页面是8英寸乘12英寸".如果你想要像素,你可以使用`density`设置告诉它,你想要在输出中获得多少像素.E. g.使用150,您将在得到的图像中得到8x150 = 1200×12x150 = 1800像素.这也是锐化,对比度,压缩等设置工作的像素数量. (72认同)
  • 它可能会导致Mac OS出现黑色背景(请参阅http://stackoverflow.com/questions/10934456/imagemagick-pdf-to-jpgs-sometimes-results-in-black-background).要解决此问题,请添加`-flatten`. (8认同)
  • 哇!只需使用`-density`和`-flatten`选项来减小pdf的大小(到另一个pdf).`-flatten`选项在减小总大小方面确实有很大帮助.就我而言,没有视觉干扰. (4认同)
  • 当我尝试将pdf转换为png时,我在Mac OS上获得了黑色背景,添加-flatten解决了它. (2认同)
  • 如果起始图像的质量低于该值,则"-density"标志可能会在较高值上产生较差的结果. (2认同)
  • 此外,如果您需要 PDF 中的特定页面,您可以在文件名的末尾添加一个索引。(例如,第一页使用`test.pdf[0]`,第二页使用`test.pdf[1]`,等等) (2认同)

maj*_*ibu 143

我个人喜欢这个.

convert -density 300 -trim test.pdf -quality 100 test.jpg
Run Code Online (Sandbox Code Playgroud)

这是文件大小的两倍多,但对我来说看起来更好.

-density 300 设置呈现PDF的dpi.

-trim 删除与角点像素颜色相同的任何边缘像素.

-quality 100 将JPEG压缩质量设置为最高质量.

类似的东西-sharpen不适用于文本,因为它们会撤消字体渲染系统所做的事情,使其更清晰.

如果你真的希望它被炸毁,请在这里使用resize,并且可能会有更大的dpi值,比如targetDPI * scalingFactor 那将以你想要的分辨率/大小呈现PDF.

imagemagick.org上的参数说明在这里


Gab*_*les 20

我在convert[2020 年 5 月更新:实际上:它对我来说几乎从来没有用过] 方面确实没有取得很好的成功,但是我在pdftoppm. 以下是从 PDF 生成高质量图像的几个示例:

  1. [每页生成约 25 MB 大小的文件] 将300 DPI 的未压缩.tif文件格式输出到名为“images”的文件夹中,文件名为pg-1.tifpg-2.tifpg-3.tif,等等:

     mkdir -p images && pdftoppm -tiff -r 300 mypdf.pdf images/pg
    
    Run Code Online (Sandbox Code Playgroud)
  2. [每页产生约 1MB 大小的文件] 以.jpg格式以300 DPI输出:

     mkdir -p images && pdftoppm -jpeg -r 300 mypdf.pdf images/pg
    
    Run Code Online (Sandbox Code Playgroud)
  3. [每页生成约 2MB 大小的文件] 以.jpg格式以最高质量(最少压缩)300 DPI 输出

     mkdir -p images && pdftoppm -jpeg -jpegopt quality=100 -r 300 mypdf.pdf images/pg
    
    Run Code Online (Sandbox Code Playgroud)

有关更多解释、选项和示例,请在此处查看我的完整答案:

https://askubuntu.com/questions/150100/extracting-embedded-images-from-a-pdf/1187844#1187844

有关的:

  1. [如何将 PDF 转换为可搜索的 PDF pdf2searchablepdf] https://askubuntu.com/questions/473843/how-to-turn-a-pdf-into-a-text-searchable-pdf/1187881#1187881
  2. 交叉链接:
    1. 如何在 Linux 中使用命令行将 PDF 转换为 JPG?
    2. https://unix.stackexchange.com/questions/11835/pdf-to-jpg-without-quality-loss-gscan2pdf/585574#585574


Val*_*rio 18

通常我用原始分辨率的'pdfimages'提取嵌入图像,然后使用ImageMagick转换为所需的格式:

$ pdfimages -list fileName.pdf
$ pdfimages fileName.pdf fileName   # save in .ppm format
$ convert fileName-000.ppm fileName-000.png
Run Code Online (Sandbox Code Playgroud)

这会生成最佳和最小的结果文件.

注意:对于有损JPG嵌入图像,您必须使用-j:

$ pdfimages -j fileName.pdf fileName   # save in .jpg format
Run Code Online (Sandbox Code Playgroud)

有了最近的poppler,你可以使用-all将有损保存为jpg而无损为png

在很少提供的Win平台上,你必须从http://blog.alivate.com.au/poppler-windows/下载最新的(0.37 2015)'poppler-util'二进制文件.


Nor*_*sey 17

pdftoppm在命令行上使用来获取初始图像,通常分辨率为300dpi pdftoppm -r 300,然后用于convert进行修剪和PNG转换.


Cod*_*der 13

当批量处理大型PDF到PNG和JPG以使用使用的底层gs(也称为Ghostscript)命令时,我发现它更快更稳定convert.

您可以在输出中看到该命令,convert -verbose并且还有一些可能的调整(YMMV)很难/无法直接访问convert.

但是,使用它会更难修剪和锐化gs,所以,就像我说的那样,YMMV!


fmw*_*w42 12

在 ImageMagick 中,您可以进行“超级采样”。您指定一个较大的密度,然后根据最终输出尺寸的需要尽可能缩小尺寸。例如你的形象:

convert -density 600 test.pdf -background white -flatten -resize 25% test.png
Run Code Online (Sandbox Code Playgroud)


在此处输入图片说明

下载图像以全分辨率查看以进行比较。

如果您希望进行进一步处理,我不建议将其保存为 JPG。

如果您希望输出与输入的大小相同,则将大小调整为密度与 72 之比的倒数。例如,-密度 288 和 -resize 25%。288=4*72 和 25%=1/4

密度越大,得到的质量越好,但处理时间会更长。


Pre*_*dhu 9

它还为您带来了良好的效果:

exec("convert -geometry 1600x1600 -density 200x200 -quality 100 test.pdf test_image.jpg");
Run Code Online (Sandbox Code Playgroud)


Vic*_*art 6

Linux用户在这里:我尝试了convert命令行实用程序(用于PDF到PNG),但我对结果不满意。我发现这更容易,并且效果更好:

  • 用pdftk提取pdf页面
    • 例如: pdftk file.pdf cat 3 output page3.pdf
  • 打开(导入)该PDF文件 GIMP
    • 重要:将导入Resolution从更改100300600 pixel/in
  • GIMP导出为PNG(将文件扩展名更改为.png)中

编辑:

按照中的要求添加了图片Comments。使用的转换命令:

convert -density 300 -trim struct2vec.pdf -quality 100 struct2vec.png

GIMP:以300 dpi(px / in)的速度导入;导出为PNG压缩级别3。

我没有在命令行上使用GIMP(请参阅下面的我的评论)。

pdf2png

在此处输入图片说明