您的位置:

C#实现PDF转图片的方法详解

一、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实现方式较为简单,但转换质量较一般。根据实际需求可以选择最适合的转换方法。