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
  • 相关阅读:
    内存中字的存储
    代码段
    CPU运行的流程
    字的传送
    内存中字的存储
    c语言中求数组元素的最大值和最小值
    linux系统 centos8.3 中安装 Rsudio
    Error in .External2(C_X11, paste0("png::", filename), g$width, g$height, : 解决linux R绘图问题
    linux系统中使用R的Cairo绘制png格式图片
    c语言中利用二维数组统计考试成绩之和
  • 原文地址:https://www.cnblogs.com/jiailiuyan/p/4838495.html
Copyright © 2011-2022 走看看