itextsharp.dll,是一个开源的在C#中用来生成PDF文档的库文件,不少C#爱好者用它制作出了PDF文档生成器。使用时只需在你的C#项目中添加引入此组件即可,使用方法网上有很多,自己查阅一下。如果系统提示“没有找到itextsharp.dll”文件,或者“缺少itextsharp.dll”等错误信息,您可下载本文件后,将其注册为组件或复制到相关目录,即可解决出错提示!
1、【O2S.Components.PDFRender4NET.dll】,第三方DLL,可以实现PDF转图片,支持32位系统、64位系统
官方试用版的dll左上角会有一排红色水印,下面这个是的没有水印,撸主使用了一年多基本没有出过问题,推荐使用。DLL (0)测试工程
2、【Acrobat.dll】,Adobe官方提供的接口,可以实现PDF转图片。这个方法需要安装Adobe Acrobat X Pro,从安装文件找到Acrobat.dll引用到项目中。毕竟是Adobe官方提供的接口,其转换效率要比其他的DLL要快多了,而且更可靠一些,但是在IIS下运行会比较麻烦(主要是不支持多线程,所以在iis下调用失败,群里有童鞋用wcf去转换,然后从web层调用wcf)
如果对转换速度、图片质量要求很高的童鞋,可以参考此方案,但是实现过程太麻烦,大家自己权衡,撸主对此方法并没有深入研究了。
测试工程 参考地址:http://www.codeproject.com/Articles/5887/Generate-Thumbnail-Images-from-PDF-Documents
3、【PDFLibNet.dll】,第三方DLL,只支持32位系统,可以实现PDF转图片,下面这个版本没有水印。
4、【SautinSoft.PdfFocus.dll】,第三方DLL,可以实现PDF转图片,但转出来的图片左上角有一排红色水印。
5、【TallComponents.PDF.Rasterizer.dll】,第三方DLL,可以实现PDF转图片,但转出来的图片有个较大的水印。
6、【Apitron.PDF.Rasterizer.dll】,第三方DLL,可以实现PDF转图片,但转出来的图片有个较大的红色水印。
7、【XpdfRasterizer.dll】,第三方DLL,可以实现PDF转图片。
测试工程 下载地址:这个弄不见了,如果使用要使用这个的话,一定要注意Regsvr32注册,要不然转换会失败的。
8、【abcpdf.dll】,第三方DLL,可以实现PDF转图片,但是需要安装abcpdf,所以使用起来不算太放方便。
9、【Ghostscript】,第三方DLL,可以实现PDF转图片,只支持32位系统,貌似网上很多人都会采用这个方法(据说功能强大),个人觉得代码太麻烦没有采用,没有深入研究。
参考地址:http://www.codeproject.com/Articles/317700/Convert-a-PDF-into-a-series-of-images-using-Csharp.aspx参考地址:http://www.codeproject.com/Articles/32274/How-To-Convert-PDF-to-Image-Using-Ghostscript-API
10、【ImageMagick】,C语言开源PDF处理工具,可以将实现PDF转换图片,因为撸主使用的C#,所以C语言的工具就没有深入研究了。
11、【iTextSharp.dll】,C# 开源PDF处理工具,可以任意操作PDF,并可以提取PDF中的文字和图片,但不能直接将PDF转换成图片。
官方网站:http://itextpdf.com/
12、【PdfSharp.dll】,C# 开源PDF处理工具,可以任意操作PDF,也可以实现从PDF提取图片,但不能直接将PDF转换成图片。
以上两个开源C#工具都可以很好处理PDF文档,但不满足我的要求直接把PDF转成IMAGE。
13、QQ群里有人推荐【PDFToX.dll】速度和质量都不错,就是不太稳定,有兴趣的朋友可以自行研究一下~
在C#中使用O2S.Components.PDFRender4NET.dll把PDF转换成图片的具体代码
方法/步骤
1
把 O2S.Components.PDFRender4NET.dll添加到引用中(下载地址:https://www.so.com/s?q=O2S.Components.PDFRender4NET.dll&src=se_zoned)
2
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using O2S.Components.PDFRender4NET;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
namespace O2S.Components.PDFRender4NET.pdf2image
{
public static class Program
{
public enum Definition
{
One = 1, Two = 2, Three = 3,
Four = 4, Five = 5, Six = 6,
Seven = 7, Eight = 8,
Nine = 9, Ten = 10
}
/// <summary>
/// 将PDF文档转换为图片的方法
/// </summary>
/// <param name="pdfInputPath">PDF文件路径</param>
/// <param name="imageOutputPath">图片输出路径</param>
/// <param name="imageName">生成图片的名字</param>
/// <param name="startPageNum">从PDF文档的第几页开始转换</param>
/// <param name="endPageNum">从PDF文档的第几页开始停止转换</param>
/// <param name="imageFormat">设置所需图片格式</param>
/// <param name="definition">设置图片的清晰度,数字越大越清晰</param>
public static void ConvertPDF2Image(string pdfInputPath, string imageOutputPath,
string imageName, int startPageNum, int endPageNum, ImageFormat imageFormat, Definition definition)
{
PDFFile pdfFile = PDFFile.Open(pdfInputPath);
if (!Directory.Exists(imageOutputPath))
{
Directory.CreateDirectory(imageOutputPath);
}
// validate pageNum
if (startPageNum <= 0)
{
startPageNum = 1;
}
if (endPageNum > pdfFile.PageCount)
{
endPageNum = pdfFile.PageCount;
}
if (startPageNum > endPageNum)
{
int tempPageNum = startPageNum;
startPageNum = endPageNum;
endPageNum = startPageNum;
}
// start to convert each page
for (int i = startPageNum; i <= endPageNum; i++)
{
Bitmap pageImage = pdfFile.GetPageImage(i - 1, 56 * (int)definition);
pageImage.Save(imageOutputPath + imageName + i.ToString() + "." + imageFormat.ToString(), imageFormat);
pageImage.Dispose();
}
pdfFile.Dispose();
}
public static void Main(string[] args)
{
ConvertPDF2Image("F:\\Events.pdf", "F:\\", "A", 1, 5, ImageFormat.Jpeg, Definition.One);
}
}
}
龙腾一族至尊龙骑