2011-07-07 49 views
221

我试图使用命令行程序convert采取PDF成图像(JPEG或PNG)。这是我想要转换的one of the PDFsPDF格式转换为图像分辨率高

我希望程序修剪掉多余的空白,并返回该标可以轻松读取足够高的图像质量。

这是我目前best attempt。正如你所看到的,修剪工作正常,我只需要提高分辨率。这是我使用的命令:我试图进行以下有意识的决定

convert -trim 24.pdf -resize 500% -quality 100 -sharpen 0x1.0 24-11.jpg 

  • 调整其大小大(对分辨率没有影响)
  • 使质量尽可能高
  • 使用-sharpen(我已经尝试的值的范围)

不限sugg请注意,在最终PNG/JPEG中获得图像的分辨率将不胜感激!

+0

我不知道,你也可以尝试[链接](http://www.pdfill.com/pdf_tools_free.html)... – karnok

+0

参见:HTTP: //askubuntu.com/a/50180/64957 –

回答

276

看来,以下工作:

convert   \ 
    -verbose  \ 
    -density 150 \ 
    -trim   \ 
    test.pdf  \ 
    -quality 100 \ 
    -flatten  \ 
    -sharpen 0x1.0 \ 
    24-18.jpg 

它导致the left image。与此相比,我原来的命令的结果(the image on the right):

   

(要真的看到和体会到两者之间的差异,每个点击右键并选择“在新标签中打开图像......”

而且注意以下事实记:

  • 右侧的模糊图像文件大小为1.941.702字节(1.85 MByte)。 它的分辨率是3060x3960像素,采用16位RGB色彩空间。
  • 左边的更好,清晰的图像具有337.879字节(330千字节)的文件大小。其分辨率为758x996像素,采用8位灰度色彩空间。

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

+44

'密度'参数有点特别,因为必须在*输入文件之前。由于PDF是一种基于矢量的文件格式,它没有(太多)像素的概念,因此它说“页面是8in乘12in”。如果你想要像素,你可以使用'density'设置来告诉它,每英寸你想要在输出中得到多少像素。例如,与150你会得到12x150 = 1800像素在结果图像8x150 = 1200。这也是锐化,对比度,压缩等设置工作的像素数量。 –

+0

锐化工作非常好,黑白色。但是,当在灰色背景上写入黑色时,它会降低可读性。 – snitch182

+5

它可能导致Mac OS上出现黑色背景(请参阅http://stackoverflow.com/questions/10934456/imagemagick-pdf-to-jpgs-sometimes-results-in-black-background)。要解决这个问题,请添加'-flatten'。 – Rolf

8

它还为您提供了良好的效果:

exec("convert -geometry 1600x1600 -density 200x200 -quality 100 test.pdf test_image.jpg"); 
98

个人而言,我喜欢这个。

convert -density 300 -trim test.pdf -quality 100 test.jpg 

这一点在文件大小的两倍,但它看起来更好的给我。

-density 300设置PDF呈现的dpi。

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

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

-sharpen之类的东西不能很好地处理文本,因为它们会将您的字体渲染系统所做的操作撤消,以使其更清晰。

如果你真的想把它放大在这里使用调整大小,并可能有一个像targetDPI * scalingFactor这样的更大的dpi值这将使PDF在您打算的分辨率/大小。上imagemagick.org参数

描述here

+0

它的尺寸是其两倍,主要是因为输出密度增加了一倍,并且jpg压缩质量设置为最大(因此压缩比不是很大)。 – rivimey

+0

小小挑逗:JPG在质量上仍然有损100% – relgukxilef

+0

@relgukxilef谢谢,我纠正了错误。 – majinnaibu

11

我发现它既更快和更稳定时批处理大的PDF到PNG图像和JPG文件使用底层gs(又名Ghostscript的)命令convert用途。

您可以在convert -verbose的输出中看到该命令,并且还有几个可能的调整(YMMV),难以/不可能通过convert直接访问。

但是,使用gs进行修整和锐化会更困难,所以,正如我所说的,YMMV!

2

还有一个建议是可以使用GIMP。

只需将GIMP-> save中的PDF文件加载为.xcf,然后就可以对图像执行任何操作。

+8

通过命令行来做这件事的原因是我有成千上万的页面需要这个过程。 – JBWhitmore

+0

此外,GIMP在*加载*上呈现页面,因此您需要在选择要加载的页面时设置分辨率。如果您在加载时启动100 DPI默认设置,则将输出参数设置为什么并不重要。 –

0

您附加的PNG文件看起来非常模糊。如果您需要对您生成的每个图像使用其他后处理作为PDF预览,则会降低解决方案的性能。

2JPEG可以将你连接到一个不错的锐化JPG和作物空利润率在一个呼叫PDF文件:

2jpeg.exe -src "C:\In\*.*" -dst "C:\Out" -oper Crop method:autocrop 
+0

原始PNG中的模糊性首先激发了这个问题,而PNG在接受的答案中相当脆弱。 – JBWhitmore

12

我用pdftoppm在命令行上获取初始图像,通常分辨率为300dpi ,所以pdftoppm -r 300,然后用convert做修整和PNG转换。

+0

虽然没有使用Imagemagick,但这种解决方案似乎最符合透明转换的精神。 'pdftoppm'也可以输出JPEG和PNG。 –

-1

使用此命令行:

convert -geometry 3600x3600 -density 300x300 -quality 100 TEAM\ 4.pdf team4.png 

这应该正确地转换文件作为你自找的。

8

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

$ pdfimages -list fileName.pdf 
$ pdfimages fileName.pdf fileName # save in .ppm format 
$ convert fileName-000.ppm fileName-000.png 

此产生最好的和最小的结果文件。

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

$ pdfimages -j fileName.pdf fileName # save in .jpg format 

在小赢提供的平台,你必须从网页下载(0.37 2015年) 'poppler的-UTIL' 二进制: http://blog.alivate.com.au/poppler-windows/

0

Linux用户在这里:我尝试了convert命令行工具(对于PDF到PNG),我对结果并不满意。我发现这是比较容易,有一个更好的结果:

  • 提取PDF页面(S)与PDFTK
    • 如:pdftk file.pdf cat 3 page3.pdf
  • 开放(进口)是PDF与GIMP
    • 重要:将进口Resolution100更改为300600 pixel/in
  • GIMP出口作为PNG(改变文件扩展名来.png格式)

编辑:添加图片,每个请求评述。转换命令中使用:

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

GIMP:以300 dpi(PX/in)的进口;导出为PNG压缩级别3.

我没有在命令行上使用过GIMP(re:我的评论,如下)。

pdf2png

enter image description here

+0

如果您有成千上万的页面,这可以自动执行吗? – JBWhitmore

+0

@JBWhitmore:很好的问题。当然,编写pdftk命令很简单,因为它已经在命令行上了。我做了一个非常快速的Google搜索,发现GIMP有一个批处理模式(我没有尝试过,但它看起来也应该可以编写脚本):https://www.gimp.org/tutorials/Basic_Batch/ –

+0

很酷。另外,您是否可以用接受答案的并排图像更新您的答案,以及使用您的方法获得的答案? – JBWhitmore

相关问题