C# PDF转图片(JPG,Png)

  1. 背景:最近需要做一个任务:C# PDF文件需要传输为JPG图片。一开始没有头绪,最后去github找到了现在我用的PdfiumViewer组件(免费)实现了功能。

现在分享一下:
【项目框架是:.NET FrameWork 4.6.1 版本】
第一步:用nuget安装两个包:

PdfiumViewer
PdfiumViewer.Native.x86.v8-xfa(注意不是64位版的)

注:该2个包没有版本要求,本次测试使用包版本如下图供参考:

注:编译代码后需检测项目bin目录必须包含pdfium.dll,入下图:

第二步:附上如下代码:
方法一:

/// <summary>/// 根据传入参数直接转换/// </summary>/// <param name="inFilePath">入参示例:E:\\download\\1111.pdf</param>/// <param name="outFilePath">入参示例:E:\\download</param>/// <param name="format">入参示例:Jpeg  (转换后文件格式,如:Jpeg,Png等)</param>public static void PDFConvertTo(string inFilePath, string outFilePath, ImageFormat format){outFilePath = $"{outFilePath}\\{DateTime.Now.ToString("yyyyMMdd-HHmmss")}";using (var document = PdfDocument.Load(inFilePath)){var pageCount = document.PageCount;for (int i = 0; i < pageCount; i++){string outFile = $"{outFilePath}({i+1}).{format}";var dpi = 300;using (var image = document.Render(i, dpi, dpi, PdfRenderFlags.CorrectFromDpi)){var encoder = ImageCodecInfo.GetImageEncoders().First(c => c.FormatID == format.Guid);var encParams = new EncoderParameters(1);encParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 10L);image.Save(outFile, encoder, encParams);}}}}

调用方法入参示例:

{"inFilePath":"E:\\download\\search.pdf","outFilePath":"E:\\download","OutFileFormat":"Png"
}

转换pdf有11页,转换后文件如下图:

方法二:

/// <summary>/// <param name="filePath">pdf文件路径</param> /// <param name="outFilePath">picture输出文件路径</param> /// <param name="image">文件格式:Jpeg  (转换后文件格式,如:Jpeg,Png等)</param> /// </summary> public void PdfToPic(string filePath, string outFilePath, ImageFormat image){var pdf = PdfDocument.Load(filePath);var pdfpage = pdf.PageCount;var pagesizes = pdf.PageSizes;outFilePath = $"{outFilePath}\\{DateTime.Now.ToString("yyyyMMdd-HHmmss")}";for (int i = 1; i <= pdfpage; i++){Size size = new Size();size.Height = (int)pagesizes[(i - 1)].Height;size.Width = (int)pagesizes[(i - 1)].Width;//可以把".jpg"写成其他形式 RenderPage(filePath, i, size, picPath); string outFile = $"{outFilePath}({i}).{image}";RenderPage(filePath, i, size, outFile, image);}}private void RenderPage(string pdfPath, int pageNumber, System.Drawing.Size size, string outputPath, ImageFormat mat, int dpi = 300){using (var document = PdfDocument.Load(pdfPath))using (var stream = new FileStream(outputPath, FileMode.Create))using (var image = GetPageImage(pageNumber, size, document, dpi))image.Save(stream, mat);}private static System.Drawing.Image GetPageImage(int pageNumber, Size size, PdfDocument document, int dpi){return document.Render(pageNumber - 1, size.Width, size.Height, dpi, dpi, PdfRenderFlags.Annotations);}

方法二和方法一区别:转换后文件像素大小不同。这个就影响了图片的质量。

原因分析:对比两个方法,dpi(分辨率值)都是设置为300,为啥转换后picture 像素不同呢。
原因:参数设置不同。

注释:

PdfRenderFlags.Annotations:设置是否要渲染注释
PdfRenderFlags.CorrectFromDpi:DPI的正确高度/宽度。更正DPI=8192

参数都设置为:PdfRenderFlags.CorrectFromDpi
转换picture文件像素就是最合适的了。

PS:需要转其他格式的或者调整图片质量的  稍微改造一下就好了。

C# PDF转图片(JPG,Png)相关推荐

  1. python PDF 转 图片

    python PDF 转 图片 fitz库 代码 import fitz import time import re import os def pdf2image(pdf_path): '''# 从 ...

  2. C# 给PDF添加图片背景

    C# 给PDF添加图片背景 今天要实现的是给PDF文件添加图片背景这个功能.PDF是近年来最流行的文件之一,无论是办公还是日常生活中都经常会用到,很多时候,PDF文件的背景色都是白色,看多了难免觉得累 ...

  3. openOffice word转pdf,pdf转图片优化版

    之前写了一个版本的,不过代码繁琐而且不好用,效率有些问题.尤其pdf转图片速度太慢.下面是优化版本的代码. spriing_boot 版本信息:2.0.1.RELEASE 1.配置信息: packag ...

  4. 转图片_图片怎么转PDF?图片转PDF就用这些方法吧!

    图片怎么转PDF?在处理各种文件的过程中,我们有时会需要将文件转换成PDF格式来保存,就比如将Word转成PDF.PPT转成PDF.图片转成PDF等.如果是图片转PDF,我们该怎么操作呢?下面我们主要 ...

  5. C# web实现word 转Html、office转Html、pdf转图片 在线预览文件

    改篇 pdf 预览再本机没问题,发布再iis中 不行 ,(使用剪贴板的问题..excel和word 可以,) pdf解决:请看我的博文 ----最终解决篇 详细配置及代码 word 转Html 1 / ...

  6. java pdfreader去除水印_(最新)JAVA使用Icepdf 5.0.6 pro的PDF转图片去掉水印的方法...

    最近发现PDF转图片各种开源工具PDFBOX.PDFRenderer.jpedal都不好用,中文各种蛋疼,但是试用了一下Icepdf相当强大,唯一不足就是生成的图片带有官方水印,下面介绍一下去掉官方水 ...

  7. pdf转图片 java_有将pdf文件转图片的格式方法吗?

    有时候我们为了方便传输,需要把图片转为PDF的格式,因为它所占的空间相对要小.但是因为pdf文件的安全性很好所以不能进行编辑,那我们又要进行编辑图片的时候,就又会把PDF文件格式转换成图片来进行编辑. ...

  8. 如何查看文件夹里有几张图片_如何把几张图片合成一个pdf?图片合并为pdf的操作教程...

    我在一家公司当美工,平时要接触到很多图片素材,并把它们以pdf格式文件的形式发送给客户查看(以此来摸索出客户想要的图片效果).把几张图片合并成为一个pdf文件,即是将图片格式转换成为pdf格式,这对我 ...

  9. .net pdf转图片_pdf2image类库实现批量pdf转图片

    通过pdf2image来实现对PDF文件的处理工作,我们本次主要做的是将PDF文件批量转成图片.之前写过批量提取封面的文章,但是在后期的深入编写过程中遇到一些问题,近期再次深入编写程序,一起来看看代码 ...

  10. pdf与图片互相转换

    1.pdf转图片 import os import numpy as np import cv2 from PIL import Image Image.MAX_IMAGE_PIXELS=None i ...

最新文章

  1. java随机产生100个大小写字母_Java生成固定长度的随机字符串(以大小写字母和数字)...
  2. centeros7安装docker
  3. 伪类 伪元素 如何区分
  4. 多维度创新打造领先阿里云技术生态
  5. python - color print
  6. Docker教程小白实操入门(15)--如何使用WORKDIR、ENV、ARG和EXPOSE设置镜像
  7. 阿里百万架构师打造的 Java并发编程实战笔记,理论到实践一键吃透
  8. JAVA后台管理系统
  9. CRC码计算及校验原理计算
  10. idea社区版和企业版区别_idea 社区版开发 springboot及问题
  11. maya模型展开UV
  12. php icon素材,Feather Icon - 简单漂亮的免费开源图标库
  13. 有得必有失,你该把技术做多细?
  14. java基本类型val_Java的基本数据类型
  15. 【bzoj1123】[POI2008]BLO
  16. 万字详解5G车联网技术
  17. 利用大顶堆实现top-k算法
  18. 聊城大学计算机应用基础,聊城大学试题计算机应用基础试题.doc
  19. 【Python任务导向】处理数据(Pandas)
  20. Java程序员高效开发必备的5大工具,IDEA黑色主题让程序员爽翻!

热门文章

  1. ASP.NETf发送邮件
  2. 严禁使用计算机存储,处理,传输涉密信息,非涉密计算机及其网络保密管理要求...
  3. 用 HBuilder X 编辑 Markdown 文档,如何自定义表格列宽
  4. java整除符号是什么意思_java除法及java除法运算的基础知识
  5. 关于芯片最高工作频率的计算
  6. android设备分辨率排行,[图表]主流安卓旗舰手机像素密度排行榜出炉
  7. win7 添加 邮件服务器,win7系统如何配置outlook邮件客户端教程
  8. Stimulsoft Reports 综合平台2019.x-2020.x
  9. JavaScript发送短信案例
  10. delphi获取本机IP地址