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;
/// <summary>
/// 将PDF转换为图片
/// </summary>
/// <param name="pdfPath">pdf文件位置</param>
/// <param name="pageNumber">pdf文件张数</param>
/// <param name="size">pdf文件尺寸</param>
/// <param name="outputPath">输出图片位置与名称</param>
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);
}
/// <summary>
/// pdf文件绝对路径
/// </summary>
/// <param name="sourcePdf"></param>
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");
}
}
本文暂时没有评论,来添加一个吧(●'◡'●)