zoukankan      html  css  js  c++  java
  • 2019c#将PDF转图片

    两种方法:

    第一种是用O2S.Components.PDFRender4NET 大家可以去网上查找无水印版本 但是有的时候带颜色的字就变空白了 不知道为什么

    第二种是用PdfiumViewer 这种方法带颜色的字也可以转换 推荐使用

    下面贴代码

    public class PDFHelp
        {
            /// <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, int endPageNum, ImageFormat imageFormat, int definition)
            {
                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
                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();
            }
            /// <summary>
            /// 将PDF转换为图片方法二
            /// </summary>
            /// <param name="pdfPath">pdf文件位置</param>
            /// <param name="pageNumber">pdf文件张数</param>
            /// <param name="size">pdf文件尺寸</param>
            /// <param name="outputPath">输出图片位置与名称</param>
            public static void RenderPage(string pdfPath, int pageNumber, System.Drawing.Size size, string outputPath, int dpi = 300)
            {
                #region 调用方法
                //转一页的话直接调用RenderPage
                //转整个文档调用
                //var pdf = PdfDocument.Load(@"d://20190514174209.pdf");
                //var pdfpage = pdf.PageCount;
                //var pagesizes = pdf.PageSizes;
    
                //for (int i = 1; i <= pdfpage; i++)
                //{
                //    Size size = new Size();
                //    size.Height = (int)pagesizes[(i - 1)].Height + 265;
                //    size.Width = (int)pagesizes[(i - 1)].Width + 405;
                //    PDFHelp.RenderPage(@"d://20190514174209.pdf", i, size, @"d://" + i + @".jpg");
                //}
                #endregion
                using (var document = PdfiumViewer.PdfDocument.Load(pdfPath))
                using (var stream = new FileStream(outputPath, FileMode.Create))
                using (var image = GetPageImage(pageNumber, size, document, dpi))
                {
                    image.Save(stream, ImageFormat.Jpeg);
                }
            }
            private static Image GetPageImage(int pageNumber, Size size, PdfiumViewer.PdfDocument document, int dpi)
            {
                return document.Render(pageNumber - 1, size.Width, size.Height, dpi, dpi, PdfRenderFlags.Annotations);
            }
    
        }
    

      第二种方法 nuget安装dll

    Install-Package PdfiumViewer -Version 2.13.0

    Install-Package ImageResizer.Plugins.PdfiumRenderer.Pdfium.Dll -Version 1.0.1

    参考连接https://blog.csdn.net/touhousonic/article/details/86711506

    -------------------------------------------

    学而不思则罔,思而不学则殆

    你好,我是【咬轮猫】

    -------------------------------------------

  • 相关阅读:
    vue-cli中安装方法
    css初始化
    VUE基本指令(v-model,v-html,v-text,v-bind,v-if,v-show,v-for,v-on:click,组件,过滤器)
    在浏览器上安装 Vue Devtools工具
    vue前端框架面试问题汇总
    git修改用户名、邮箱
    js对字符串的一些操作方法
    11款JavaScript颜色拾取插件推荐
    vue-devtools的安装与使用
    JS里的居民们4-数组((堆)队列
  • 原文地址:https://www.cnblogs.com/Hero-/p/10868091.html
Copyright © 2011-2022 走看看