首页 > 其他分享 >pdf 转 png

pdf 转 png

时间:2024-05-20 16:10:03浏览次数:26  
标签:endPageNum string err int outPath pdf startPageNum png

 参考:https://blog.csdn.net/lai124793549/article/details/53392281

            https://www.cnblogs.com/xiewei123/p/10902578.html

百度云链接:https://pan.baidu.com/s/1oiMEZl9xJWVAzf_JZaw3Ww  提取码:8dna

 

方法1:添加引用  O2S.Components.PDFRender4NET

   
   public enum Definition
        {
            One = 1, Two = 2, Three = 3, Four = 4, Five = 5, Six = 6, Seven = 7, Eight = 8, Nine = 9, Ten = 10
        }
        /// <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 string[] PdfToPng(string pdfInputPath, string imageOutputPath,
            string imageName, int startPageNum, int endPageNum, ImageFormat imageFormat , int definition)
        {
            List<string> outFileList = new List<string>();
            PDFFile pdfFile = PDFFile.Open(pdfInputPath);
            if (!Directory.Exists(imageOutputPath))
            {
                Directory.CreateDirectory(imageOutputPath);
            }
            // validate pageNum
            if (startPageNum <= 0)
            {
                startPageNum = 1;
            }
            if (endPageNum > pdfFile.PageCount)
            {
                endPageNum = pdfFile.PageCount;
            }
            if (startPageNum > endPageNum)
            {
                int tempPageNum = startPageNum;
                startPageNum = endPageNum;
                endPageNum = startPageNum;
            }
            // start to convert each page
            if (endPageNum == 1)
            {
                Bitmap pageImage = pdfFile.GetPageImage(1 - 1, 56 * (int)definition);
                pageImage.Save(imageOutputPath + imageName + "." + imageFormat, imageFormat);
                pageImage.Dispose();
                outFileList.Add(imageOutputPath + imageName + "." + imageFormat);
            }
            else
            {
                for (int i = startPageNum; i <= endPageNum; i++)
                {
                    Bitmap pageImage = pdfFile.GetPageImage(i - 1, 56 * (int)definition);
                    pageImage.Save(imageOutputPath + imageName + i + "." + imageFormat, imageFormat);
                    pageImage.Dispose();
                    outFileList.Add(imageOutputPath + imageName + i + "." + imageFormat);
                }
            }
            pdfFile.Dispose();
            return outFileList.ToArray(); ;
        }
 

 

方法2:添加引用Spire.License.dll和 Spire.Pdf.dll

   
       /// <summary>
        /// Pdf 转图片。缓存在系统目录
        /// </summary>
        /// <param name="pdfPath"></param>
        /// <param name="outPath"></param>
        /// <returns></returns>
        public  string[] ToImage(string pdfPath,string outPath)
        {
            if (!File.Exists(pdfPath)) return null;
            string err = string.Empty;
            using (FileStream fs = new FileStream(pdfPath, FileMode.Open))
            {
                return ToImage(fs, outPath,out err);
            }
        }
        public string[] ToImage(Stream s, string outPath, out string err)
        {
            try
            {
                if (outPath.Last() != '\\')
                {
                    outPath += "\\";
                }
                if (!System.IO.Directory.Exists(outPath))
                {
                    Directory.CreateDirectory(outPath);
                }

                List<string> outFileList = new List<string>();
                
                using (IDisposable pdfDocument = dynamicSpirePdf.CreatePdfDocument(s))
                {
                    int count = dynamicSpirePdf.GetCount(dynamicSpirePdf.GetPages(pdfDocument));
                    for (int i = 0; i < count; i++)
                    {
                        //将PDF页转换成bitmap图形
                        using (System.Drawing.Image bmp = dynamicSpirePdf.SaveAsImage(pdfDocument,i))
                        {
                            //将bitmap图形保存为png图片
                            var file = string.Format("{0}{1}.bmp", outPath, Guid.NewGuid().ToString("D"));
                            bmp.Save(file, System.Drawing.Imaging.ImageFormat.Bmp);
                            outFileList.Add(file);
                        }
                    }
                }
                err = string.Empty;
                return outFileList.ToArray();
            }
            catch (Exception e)
            {
                err = e.Message + Environment.NewLine + e.StackTrace;
                return null;
            }
        }

标签:endPageNum,string,err,int,outPath,pdf,startPageNum,png
From: https://www.cnblogs.com/lhxsoft/p/18202175

相关文章

  • 如何免费将PDF转成HTML网页?
    HTML是网页的标准格式,具有良好的可读性和可访问性以及更强的可编辑性。与PDF相比,HTML文档更容易进行修改和更新。将PDF转换为HTML后,文档内容可以在各种浏览器和设备上自由查看,为用户提供更便捷的访问体验。另外将PDF转成HTML网页后也有助于提升信息的传播和分享效率,由于HTML文档......
  • pdf格式书籍的一种方便读法
    pdf格式书籍的一种方便读法pdf格式书籍因为无法适屏、无法记录阅读进度(PC上可以)、无法做笔记等缺点,极其不适合在移动设备上阅读。难怪大家抱怨: 俗话说“穷则思变”,动动脑筋,想到了一种比较不错的阅读pdf格式书籍的方法,即:转成图片,在平板等稍大屏幕的设备上阅读。 示例:手上......
  • 【专题】2024小红书餐饮行业方法论报告合集PDF分享(附原数据表)
    原文链接:https://tecdat.cn/?p=36199原文出处:拓端数据部落公众号报告合集显示,消费者对餐饮的需求正从单一的口味体验转变为追求更高层次的情绪价值和文化价值。餐饮不仅是生活的小确幸,更成为社交、休闲和探索的重要场景。小红书凭借其真实、利他、生动、丰富的内容,成为餐饮消费......
  • 使用puppeteer url转换pdf中文不显示
    本来正在优化一个url转pdf的node服务,项目是使用puppeteer进行转换。功能优化提测后,发现转换后的pdf中文都不显示了。而本身这次优化没有涉及到转换本身相关的内容,这就很奇怪,而且本地转换都很正常。一般中文不显示,很可能是缺少中文字体导致的,于是看了项目中的Dockerfil......
  • 如何将Excel转PDF?3种免费方法很实用
    将Excel表格转换为PDF是一种非常常见的需求,因为PDF格式能够保持文档的原始排版和样式,并且可以方便地与他人共享。那么有哪些免费方法可以将excel转pdf呢?方法一:使用Excel的内置功能很多office都可以使用内置的PDF转换功能来实现,并且可以保留原始格式和样式。1、打开要转换的Exce......
  • 手机怎么把pdf文件转成excel表格
    在大数据的时代,用数据来指导分析已越来越普遍。有时候希望使用pdf文件中的表格数据,但是pdf文件无法直接编辑,复制和粘贴是很麻烦的。尤其是当分析一些数据时,需要将pdf转excel表格,那么你知道手机怎么实现pdf文件转excel表格吗?使用在线转换工具是最简单、最快捷的方式之一。它不仅不......
  • java PDF转换图片(多张pdf转换成一整张图片)
    引入pdf操作相关pom <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.21</version></dependency>具体代码@RequestMappin......
  • mpdf增加字体并进行使用
     1、先将字体复制到目录:\vendor\mpdf\mpdf\ttfonts2、再修改文件\vendor\mpdf\mpdf\src\Config\FontVariables.php,对照已经添加的simsun,simkai,simhei,fangzhenweibei,fangzhenheiti等字体进行增加即可。3、再在需要设置字体的文字加上font-family:fangzhenweibei;样式即可。  ......
  • 【专题】2024年中国即时配送行业研究报告合集PDF分享(附原数据表)
    原文链接:https://tecdat.cn/?p=36188原文出处:拓端数据部落公众号即时配送服务凭借其无与伦比的高效与便捷,已深深满足了当代社会对于速度和便捷性的双重追求。据权威报告揭示,即时配送行业规模已突破3400亿元,且预测至2028年,这一数值将飙升至超过8100亿元。阅读原文,获取专题报告合......
  • 【专题】2023年中国白酒行业消费白皮书报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34188原文出处:拓端数据部落公众号2023年中国白酒行业消费白皮书报告合集,总结了消费市场的两大传承和五大进化,以帮助白酒企业更好地理解消费者心理和供需变化,从而把握增长机会。两大传承包括争夺消费者的“第一口酒”以及品牌在消费决策中的关键作......