CSharp中我一般使用 itextSharp与Spire来操作PDF文件,一般生成PDF、转换PDF、合并PDF都很方便,但是 itextSharp不能直接将PDF转换为图片。

当然有多种方式可以实现PDF转为图片,先提供一种用起来比较方便的方式:

首先,NuGet中下载安装 PdfiumViewer与ImageResizer.Plugins.PdfiumRenderer.Pdfium.Dll

添加引用:

using System.Drawing.Imaging;

using PdfiumViewer;

using System.Drawing;

///

/// 将PDF转换为图片 /// ///

pdf文件位置 ///

pdf文件张数 ///

pdf文件尺寸 ///

输出图片位置与名称 public static void RenderPage(string pdfPath, int pageNumber, System.Drawing.Size size, string outputPath, int dpi = 300) { using (var document = PdfiumViewer.PdfDocument.Load(pdfPath)) using (var stream = new FileStream(outputPath, FileMode.Create)) using (var image = GetPageImage(pageNumber, size, document, dpi)) { image.Save(stream, ImageFormat.Jpeg); } } private static System.Drawing.Image GetPageImage(int pageNumber, Size size, PdfiumViewer.PdfDocument document, int dpi) { return document.Render(pageNumber - 1, size.Width, size.Height, dpi, dpi, PdfRenderFlags.Annotations); } ///

/// pdf文件绝对路径 /// ///

public static void Pdf2Images(string sourcePdf) { var pdf = PdfiumViewer.PdfDocument.Load(sourcePdf); var pdfpage = pdf.PageCount; var pagesizes = pdf.PageSizes; for (int i = 1; i <= pdfpage; i++) { Size size = new Size(); size.Height = (int)pagesizes[(i - 1)].Height; size.Width = (int)pagesizes[(i - 1)].Width; RenderPage(sourcePdf, i, size, Path.GetDirectoryName(sourcePdf) + "\img_" + i + @".jpg"); } }