一、PDF转图片的作用
PDF作为一种可移植性强、不受操作系统和软硬件的限制而有广泛应用的文档格式,然而与之不同的是,图片在互联网普及的大环境下,能够被直接显示和浏览,因此,以PDF为载体时,常常需要将其转换为图片,使其能够被HTML加工并在网页上展示出来。
二、PDF转图片的实现方法
PDF转图片在网络编程中也是一个非常常见的需求,实现PDF转图片需要借助第三方工具库,在C#中推荐使用Ghostscript和iTextSharp。下面我们将分别介绍两种方法。
三、使用Ghostscript实现PDF转图片
Ghostscript是一款开源的,支持多操作系统(Windows、Linux、Mac)的PostScript和PDF解释器,具有非常好的PDF转图片的功能,经过个人测试,Ghostscirpt的转换质量比iTextSharp更好,同时也较稳定。利用Ghostscript进行PDF转图片的代码如下:
using System.Diagnostics; using System.IO; public bool PdfConvertToImage(string sourcePdfPath,int pageIndex,string destImagePath) { string exePath = @"C:/Program Files/gs/gs9.26/bin/gswin64c.exe"; string para = "-dNOPAUSE -sDEVICE=jpeg -r200 -dFirstPage="+pageIndex+" -dLastPage="+pageIndex+" -o "+destImagePath+" "+sourcePdfPath; Process p = new Process(); p.StartInfo.FileName = exePath; p.StartInfo.Arguments = para; p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.CreateNoWindow = true; p.Start(); string output = p.StandardOutput.ReadToEnd(); p.WaitForExit(); return true; }
参数解读:
- -dNOPAUSE:设置不终止打印并在输出前保持进程持续运行的模式,以便通过继续输入数据来获得多页输出。
- -sDEVICE=jpeg:指定输出设备为jpeg格式。
- -r200:设置输出图像分辨率为200dpi。
- -dFirstPage、-dLastPage:指定转换的页数范围。
- -o:指定输出图片的路径。
四、使用iTextSharp实现PDF转图片
iTextSharp是一个非常著名的PDF处理库,iTextSharp提供了PDF到图片的实现方式,但是它的转换质量比较一般,需要处理生成的图片不清晰的问题,同时转换速度较慢。下面是利用iTextSharp进行PDF转图片的代码:
using System.Drawing; using iTextSharp.text; using iTextSharp.text.pdf; public bool PdfConvertToImage(string sourcePdfPath, int pageIndex, string destImagePath) { using (PdfReader reader = new PdfReader(sourcePdfPath)) { Rectangle rect = reader.GetPageSize(pageIndex); Document document = new Document(rect, 0, 0, 0, 0); PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(destImagePath, FileMode.Create)); document.Open(); PdfContentByte cb = writer.DirectContent; PdfImportedPage page = writer.GetImportedPage(reader, pageIndex); cb.AddTemplate(page, 1, 1); document.Close(); } return true; }
iTextSharp实现PDF转图片的原理是解析PDF文件内容,然后将PDF文件的内容传递给PDF转图片API进行处理。
五、总结
PDF转图片的实现需要借助第三方工具库,通常推荐使用Ghostscript和iTextSharp两种方法,Ghostscript的转换质量比较好,但需要安装Ghostscript环境,iTextSharp实现方式较为简单,但转换质量较一般。根据实际需求可以选择最适合的转换方法。