WPF解析PDF为图片

时间:2022-07-24 21:05:30

偶遇需要解析PDF文件为单张图,此做,

http://git.oschina.net/jiailiuyan/OfficeDecoder

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Aspose.Pdf.Devices; namespace Helpers
{
public static class PDFHelper
{ /// <summary> 转换 PDF 的每一页为图片 </summary>
/// <param name="pdffile"></param>
/// <param name="savedirectory"></param>
/// <returns></returns>
public static List<string> ConvertToImages(string pdffile, string savedirectory = "")
{
// 返回的图片绝对路径集合
List<string> images = new List<string>(); // 获取 PDF 文件名称
var pdfname = System.IO.Path.GetFileNameWithoutExtension(pdffile); // 如果指定了保存路径,则使用传入的路径,否则在 PDF 文件的同级创建同名文件夹当作保存路径
savedirectory = string.IsNullOrWhiteSpace(savedirectory) ? System.IO.Path.GetDirectoryName(pdffile) : savedirectory;
savedirectory = System.IO.Path.Combine(savedirectory, pdfname);
// 防止保存的路径不存在因此创建保存文件夹
Directory.CreateDirectory(savedirectory); using (var pdfd = new Aspose.Pdf.Document(pdffile))
{
var count = pdfd.Pages.Count;
// Aspose.Pdf 的单页获取索引从 1 开始
for (int i = ; i <= count; i++)
{
var imagefile = System.IO.Path.Combine(savedirectory, i + ".jpg");
try
{
//图片处理后的存放路径
using (var imageStream = new FileStream(imagefile, FileMode.Create))
{
var resolution = new Resolution();
var jpegDevice = new JpegDevice(resolution, );
jpegDevice.Process(pdfd.Pages[i], imageStream);
imageStream.Close(); images.Add(imagefile);
}
}
catch { }
}
pdfd.Dispose();
} // 返回获取图片后的路径集合
return images;
} }
}