使用C#或命令行将PDF转换为JPG或PNG
我需要将PDF文件转换为图像。 我用于测试目的“Total PDF Converter”提供命令行,但它是共享软件,我需要找到一个免费的替代品。
有谁知道这样的工具,甚至可能是一个免费的C#库?
ImageMagick包中的convert
工具(或版本7以来的 magick
)可以做到这一点(还有更多)。
最简单的forms就是这样
convert myfile.pdf myfile.png
要么
magick myfile.pdf myfile.png
这是一个老问题,但由于缺少GhostScript答案,并且没有提示多页 PDF导出,但我认为添加另一个变体是可以的。
gs -dBATCH -dNOPAUSE -sDEVICE=pnggray -r300 -dUseCropBox -sOutputFile=item-%03d.png examples.pdf
选项说明 :
-
dBatch
和dNOPAUSE
只是告诉gs以批处理模式运行,这意味着或多或少它不会问任何问题。 如果要在bash脚本中运行该命令,那么这些参数也很重要。 -
sDEVICE
告诉gs要生成什么输出格式。pnggray
用于灰度,png16m
用于24位RGB颜色。 如果你坚持创建-sDEVICE=jpeg
使用-sDEVICE=jpeg
来生成彩色JPEG文件。 使用-dJPEGQ=N
(N是0到100之间的整数,默认值为75)参数来控制Jpgeg质量。 -
-r300
将扫描分辨率设置为300dpi。 如果您更喜欢较小的输出尺寸,请使用-r70
或者如果您输入的pdf具有高的重新使用-r600
。 如果您有300dpi的PDF并指定-r600,您的图像将被放大。 -
-dUseCropBox
告诉gs使用CropBox(如果已定义)。 CropBox指定页面上感兴趣的区域。 如果您的pdf具有较大的白色边距,并且您不希望在输出中使用此边距,则此选项可能会有所帮助。 -
-sOutputFile
定义输出文件的名称。 %03d.png部分告诉gs包含多个文件的计数器。 两页pdf将生成两个名为item-001.png和item-002.png的文件。 - 最后一个(未命名的参数是输入文件。)
可用性: imagemagick的convert命令在内部使用gs命令。 如果你可以用imagemagick转换pdf,你已经安装了gs。
安装ghostscript:
RHEL:
yum install ghostscript
SLES:
zypper install ghostscript
于Debian / Ubuntu:
sudo apt-get install ghostscript
视窗:
您可以在http://sofzh.miximages.com/c%23/pen(inputPdfPath, localDllInfo, false); for (int pageNumber = 1; pageNumber = _rasterizer.PageCount; pageNumber++) { string pageFilePath = Path.Combine(outputPath, Page- + pageNumber.ToString() + .png”); Image img = _rasterizer.GetPage(desired_x_dpi, desired_y_dpi, pageNumber); img.Save(pageFilePath, ImageFormat.Png); } _rasterizer.Close(); }
您可能想要检查此免费解决方案
http://www.codeproject.com/Articles/32274/How-To-Convert-PDF-to-Image-Using-Ghostscript-API
它很容易将PDF转换为图像(单个文件或多个文件)是开源的,并使用ghostscript(免费下载)
使用示例:
converter = new PDFConverter(); converter.JPEGQuality = 90; converter.OutputFormat = "jpg"; string output = "output.jpg"; converter.Convert("input.pdf", output);
你应该使用iText sharp。 它是一个用于处理PDF的开源java项目的端口。 http://sourceforge.net/projects/itextsharp/
2JPEG命令行工具可以做到,如:
2jpeg.exe -src“C:\ In \ * .pdf”-dst“C:\ Out”