首页 > 编程语言 >C#pdf文件转单个图片

C#pdf文件转单个图片

时间:2023-05-09 09:36:15浏览次数:47  
标签:string Width C# PdfiumViewer int 单个 pdf size

        /// <summary>
        /// PDF转图片
        /// </summary>
        /// <param name="dicomFile">PDF文件路径</param>
        /// <param name="destJpgFile">保存图片路径</param>
        /// <returns></returns>
        public static string ImportJPG(string dicomFile, string destJpgFile)
        {
            string JPGFilePath = string.Empty;
            try
            {
                PdfiumViewer.PdfDocument pdf = PdfiumViewer.PdfDocument.Load(dicomFile);
                int pdfpage = pdf.PageCount;
                var pagesizes = pdf.PageSizes;

                Size size = new Size();
                size.Height = (int)pagesizes[0].Height;
                size.Width = (int)pagesizes[0].Width;

                Bitmap tmpBmp = new Bitmap(size.Width, size.Height);

                Graphics g = Graphics.FromImage(tmpBmp);
                g.Clear(SystemColors.AppWorkspace);

                for (int i = 1; i <= pdfpage; i++)
                {

                    System.Drawing.Image image = pdf.Render(i - 1, size.Width, size.Height, 600, 600, PdfRenderFlags.Annotations);
                    g.DrawImage(image, 0, (i - 1) * size.Height, size.Width, size.Height);
                    image.Dispose();
                }
                tmpBmp.Save(destJpgFile);
                JPGFilePath = destJpgFile;
                tmpBmp.Dispose();
                g.Dispose();
                pdf.Dispose();

            }
            catch (Exception ex)
            {
                JPGFilePath = ex.Message;
            }
            return JPGFilePath;

        }

 引用的dll:https://files.cnblogs.com/files/jiangge23/PdfiumViewer.zip?t=1683595153&download=true

标签:string,Width,C#,PdfiumViewer,int,单个,pdf,size
From: https://www.cnblogs.com/jiangge23/p/17383820.html

相关文章

  • unity让BoxCollider自适配大小
    1.一个空物体下面有若干个子物体,想要为空物体添加碰撞盒且碰撞盒还得要包裹所有子物体,手动拖动的话有点费时,费力,费眼,这时候有个工具是最好用的(如下图所示) 2.选中空物体点击(如下图所示) 3.就会变成如下图所示方便快捷 代码如下(编辑器脚本)usingUnityEngine;......
  • 使用 nodejs 从 0 实现简单易用的代理功能之 config.proxy
    从0实现config.proxyconfig.proxy类似于webpack的devServe中的代理,但更直观易用.本文为mockm的实现过程,编写此系列文章1是为了抛砖引玉,让想实现类似工具的朋友可以一起学习.2是也给自己做一个简单梳理.类型:string|object默认:http://www.httpbin.or......
  • SKNet 200epoch lolv1 分别使用压缩和不压缩
    SKNet在lolv1数据集epoch=200:psnr=22.92SSIM=0.9033/home/mmsys/anaconda3/envs/SFNet/bin/python3.8/media/mmsys/6f1091c9-4ed8-4a10-a03d-2acef144d2e1/SXY/restoration/SFNet_main_old/main.py[WCopy.cpp:219]Warning:Castingcomplexvaluestorealdiscard......
  • Compiler Design Lab 实现过程
    Programming2(SS2023)SaarlandUniversityFacultyMICompilerDesignLabPreparationTobeabletoedittheprojectinMars,youfirsthavetocheckouttherepositoryandimporttheproject:1.Clonetheprojectinanyfolder:where$NAMEhastobereplacedwi......
  • Orcale-利用闪回恢复数据方法 flashback table 误删,表数据恢复到之前的某一时刻
    Orcale-利用闪回恢复数据方法原文链接:https://www.cnblogs.com/caster-xzn/p/8686376.html一.delete误删方法1:如果表结构没有改变,直接闪回整个表,具体步骤:--首先需要表闪回权限,开启行移动功能altertable表名enablerowmovement;--执行闪回恢复表数据到......
  • C#里有哪些线程同步的办法
    除了lock和Semaphore之外,C#还有其他的线程同步方法,如Monitor,Mutex,ReaderWriterLockSlim和ManualResetEvent等。目录在常见的编程语言中,同步原语可以分类为哪些?关于锁的名词解释C#里有哪些线程同步的办法lockSemaphoreMonitorMutexReaderWriterLockSlimManualResetEvent......
  • C# 窗体控件ContextMenuStrip下拉项之间的分割线
    1.效果如图: 2.选中ContextMenuStrip控件,在Items属性中添加Separator 3. (其中第3,4步,通过上下箭头,摆置好你要分割的位置)原文链接......
  • LgcHMI
    LgcHMI介绍LgcHMI是个人开发的完全免费的界面组态动态链接库,目前支持松下/基恩士PLC通信,并支持公共协议opcua/modbusTcp,各种控件满足我们正常的开发需求。使用C#编程,相对于传统组态屏可扩展性更强,如果你不会编程,它也可以拖拖控件就可以完成了组态。需要的朋友可以到nuget或www.......
  • @Accessors 注解参数
    @Accessors注解参数经常会在实体类上看到,记录一下,方便以后复习@Accessors注解的作用:当属性字段在生成getter和setter方法时,做一些相关的设置。@Accessors共有三个属性,分别是fluent,chain,prefixfluent属性不写默认为false,当该值为true时,对应字段的getter方法前面......
  • CF1825C LuoTianyi and the Show
    传送门(luogu)传送门(CF)前言我来水题解力简化题意$n$个人,$m$个座位,每个人落座的方法有三种:坐最左边的人的左边,没人的话就做$m$号座位,若最左边的为$1$号,就离开;坐最右边的人的右边,没人的话就做$1$号座位,若最右边的为$m$号,就离开;坐在$x_i$号座位上,有人就......