• PDFRender4NET的使用之pdf转图片


    同样的需要第三方的.dll,http://www.o2sol.com/pdfview4net/download.htm

    using O2S.Components.PDFRender4NET;
    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace pdfConvert
    {
    
        public class Program
        {
            public enum ImageMergeOrientation
            {
                Horizontal,
                Vertical
            }
    
    
            public static void Main(string[] args)
            { // pdf转图片
              //PDFTranImgHelp.ConvertPDF2Image(@"D:CsharpstudypdfTojpg	est.pdf", @"D:CsharpstudypdfTojpg", "test",1, ImageFormat.Png, Definition.Five);
                 //合并图片
              const string folderPath = @"D:CsharpstudypdfTojpg";
              var images = new DirectoryInfo(folderPath).GetFiles("*.png", SearchOption.TopDirectoryOnly);
    
              CombineImages(images, @"D:CsharpstudypdfTojpgFinalImage_H.png");
              CombineImages(images, @"D:CsharpstudypdfTojpgFinalImage_V.png", ImageMergeOrientation.Vertical);  
            }
            public static void CombineImages(FileInfo[] files, string toPath, ImageMergeOrientation mergeType = ImageMergeOrientation.Vertical)
            {
                //change the location to store the final image.
                var finalImage = toPath;
                var imgs = files.Select(f => Image.FromFile(f.FullName));
    
                var finalWidth = mergeType == ImageMergeOrientation.Horizontal ?
                    imgs.Sum(img => img.Width) :
                    imgs.Max(img => img.Width);
    
                var finalHeight = mergeType == ImageMergeOrientation.Vertical ?
                    imgs.Sum(img => img.Height) :
                    imgs.Max(img => img.Height);
    
                var finalImg = new Bitmap(finalWidth, finalHeight);
                Graphics g = Graphics.FromImage(finalImg);
                g.Clear(SystemColors.AppWorkspace);
    
                var width = finalWidth;
                var height = finalHeight;
                var nIndex = 0;
                foreach (FileInfo file in files)
                {
                    Image img = Image.FromFile(file.FullName);
                    if (nIndex == 0)
                    {
                        g.DrawImage(img, new Point(0, 0));
                        nIndex++;
                        width = img.Width;
                        height = img.Height;
                    }
                    else
                    {
                        switch (mergeType)
                        {
                            case ImageMergeOrientation.Horizontal:
                                g.DrawImage(img, new Point(width, 0));
                                width += img.Width;
                                break;
                            case ImageMergeOrientation.Vertical:
                                g.DrawImage(img, new Point(0, height));
                                height += img.Height;
                                break;
                            default:
                                throw new ArgumentOutOfRangeException("mergeType");
                        }
                    }
                    img.Dispose();
                }
                g.Dispose();
                finalImg.Save(finalImage,ImageFormat.Png);
                finalImg.Dispose();
            }
        }
        public enum Definition
        {
            One = 1, Two = 2, Three = 3, Four = 4, Five = 5, Six = 6, Seven = 7, Eight = 8, Nine = 9, Ten = 10
        }
    
        public class PDFTranImgHelp
        {
            /// <summary>
            /// 将PDF文档转换为图片的方法
            /// </summary>
            /// <param name="pdfInputPath">PDF文件路径</param>
            /// <param name="imageOutputPath">图片输出路径</param>
            /// <param name="imageName">生成图片的名字</param>
            /// <param name="startPageNum">从PDF文档的第几页开始转换</param>
            /// <param name="endPageNum">从PDF文档的第几页开始停止转换</param>
            /// <param name="imageFormat">设置所需图片格式</param>
            /// <param name="definition">设置图片的清晰度,数字越大越清晰</param>
            public static void ConvertPDF2Image(string pdfInputPath, string imageOutputPath,
                string imageName, int startPageNum,  ImageFormat imageFormat, Definition definition)
            {
                PDFFile pdfFile = PDFFile.Open(pdfInputPath);
                if (!Directory.Exists(imageOutputPath))
                {
                    Directory.CreateDirectory(imageOutputPath);
                }
                // validate pageNum
                if (startPageNum <= 0)
                {
                    startPageNum = 1;
                }
               
                 var endPageNum = pdfFile.PageCount;
                
                if (startPageNum > endPageNum)
                {
                    int tempPageNum = startPageNum;
                    startPageNum = endPageNum;
                    endPageNum = startPageNum;
                }
                // start to convert each page
                for (int i = startPageNum; i <= endPageNum; i++)
                {
                    Bitmap pageImage = pdfFile.GetPageImage(i - 1, 56 * (int)definition);
                    pageImage.Save(imageOutputPath + imageName + i.ToString() + "." + imageFormat.ToString(), imageFormat);
                    pageImage.Dispose();
                }
                pdfFile.Dispose();
            }
    
            #region 合并图片
            #endregion
        }
    }
    

      

  • 相关阅读:
    Protocol https not supported or disabled in libcurl
    初学require.js
    HTML中的IE条件注释
    前端,我为什么不要你
    敲点JavaScript代码
    小白科普之JavaScript的函数
    小白科普之JavaScript的BOM模型
    小白科普之JavaScript的JSON
    小白科普之JavaScript的数组
    document.documentElement和document.body的区别
  • 原文地址:https://www.cnblogs.com/c-x-a/p/7942285.html
Copyright © 2020-2023  润新知