zoukankan      html  css  js  c++  java
  • WPF解析PDF为图片

      偶遇需要解析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 = 1; 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(100);
                                var jpegDevice = new JpegDevice(resolution, 100);
                                jpegDevice.Process(pdfd.Pages[i], imageStream);
                                imageStream.Close();
    
                                images.Add(imagefile);
                            }
                        }
                        catch { }
                    }
                    pdfd.Dispose();
                }
    
                // 返回获取图片后的路径集合
                return images;
            }
    
        }
    }
    View Code
  • 相关阅读:
    C# 检测dll的新版本号方法
    DataGridView 单击赋值
    一致性Hash算法
    .net Parallel并行使用注意事项
    析构函数和Dispose方法的区别
    查看SQLServer的最大连接数
    Hash算法-CityHash算法
    Hash算法
    Sunday算法--C#版
    KMP算法--C#版
  • 原文地址:https://www.cnblogs.com/jiailiuyan/p/4838495.html
Copyright © 2011-2022 走看看