使用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 

选项说明

  • dBatchdNOPAUSE只是告诉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”