我需要将PDF文件转换为图片。我用于测试目的“Total PDF Converter”提供命令行,但它是共享软件,我需要找到一个免费的替代品。
有谁知道这样的工具,甚至可能是免费的C#库?
答案 0 :(得分:25)
since version 7软件包中的convert
工具(或magick
ImageMagick)可以执行此操作(还有更多)。
最简单的形式就是
convert myfile.pdf myfile.png
或
magick myfile.pdf myfile.png
答案 1 :(得分:12)
这是一个老问题,但由于缺少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颜色。如果你坚持创造
Jpegs使用-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
视窗:
下找到Windows二进制文件答案 2 :(得分:6)
问题很老,但最近我发现这个解决方案对我有用:https://github.com/jhabjan/Ghostscript.NET。它也可以作为nuget下载。
以下是将所有pdf页面转换为png图像的示例代码:
private static void Test()
{
var localGhostscriptDll = Path.Combine(Environment.CurrentDirectory, "gsdll64.dll");
var localDllInfo = new GhostscriptVersionInfo(localGhostscriptDll);
int desired_x_dpi = 96;
int desired_y_dpi = 96;
string inputPdfPath = "test.pdf";
string outputPath = Environment.CurrentDirectory;
GhostscriptRasterizer _rasterizer = new GhostscriptRasterizer();
_rasterizer.Open(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();
}
答案 3 :(得分:2)
您可能想查看此免费解决方案
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);
答案 4 :(得分:2)
在我的情况下,@ Thomas答案无效。
我猜测只有在pdf中包含图片时,它才有效。
就我而言,有效的方法是pdftoppm
(来自https://askubuntu.com/a/50180/37527的信息):
pdftoppm input.pdf outputname -png
这将以outputname-01.png
格式输出PDF中的每个页面,其中01
是页面的索引。
pdftoppm input.pdf outputname -png -f {page} -singlefile
将{page}
更改为页码。它的索引为1,所以-f 1
将是第一页。
此命令的默认分辨率为150 DPI。增加它会导致更大的文件大小和更多细节。
要提高转换后的PDF的分辨率,请添加选项-rx {resolution}
和-ry {resolution}
。例如:
pdftoppm input.pdf outputname -png -rx 300 -ry 300
答案 5 :(得分:1)
你应该使用iText sharp。它是一个用于处理PDF的开源java项目的端口。 http://sourceforge.net/projects/itextsharp/
答案 6 :(得分:1)
2JPEG命令行工具可以执行此操作,例如:
2jpeg.exe -src&#34; C:\ In \ * .pdf&#34; -dst&#34; C:\ Out&#34;