使用PDFRender4NET
无水印DLL
链接:https://pan.baidu.com/s/1HILw9Ztl6xNr4kMB1HGuWQ
提取码:psvm
项目下创建一个Libs目录把DLL文件复制进来
项目引用下 添加引用 选择这个DLL文件就行
工具类
1 | using System.Collections.Generic; |
调用
1 | var pageNum = PdfToImg.GetPageNum(@"D:\Tools\DocTest\水印.pdf"); |
使用PdfiumViewer
这个库转图片的优点在于
有的使用上面的库
O2S.Components.PDFRender4NET.dll
转换PDF的时候有的文件转换出的图片文字不显示,使用这个库就能正常转换。但是它额外增加了13M多的大小。
添加依赖
1 | Install-Package PdfiumViewer -Version 2.13.0 |
工具类
1 | using System.Collections.Generic; |
Word转图片
1 | Install-Package Aspose.Words -Version 19.10.0 |
调用前设置授权
1 | new License() |
调用
1 | using System; |
使用程序Poppler
https://blog.alivate.com.au/poppler-windows/
转换PDF为图片
1 | pdftoppm.exe -jpeg "D:\Tools\DocTest\水印.pdf" D:\Tools\DocTest\Pic\ |
这种方式转换的速度快,并且相同质量的前提下,文件比较小。
提取PDF中的图片
1 | pdfimages.exe -j -p "D:\Tools\DocTest\水印.pdf" D:\Tools\DocTest\Pic\ |
使用程序Ghostscript
这种方式效果较好,就是引用的exe和dll会增加将近11M。
在gs.exe
的同级目录下运行下面的命令
获取页数
1 | ./gs -q -dNODISPLAY -c "(D:/Project/Node/Pdf2PngforWindows/doc/1.pdf) (r) file runpdfbegin pdfpagecount = quit" |
转换某页
1 | ./gs -dQUIET -dPARANOIDSAFER -dBATCH -dNOPAUSE -dNOPROMPT -sDEVICE=png16m -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r100 -dFirstPage=1 -dLastPage=1 -sOutputFile=C:\Users\ADMINI~1\AppData\Local\Temp\tmp-8468uujQmrsdRJ21.png "D:\Project\Node\Pdf2PngforWindows/doc/1.pdf" |
我们就可以根据页数进行逐页转换。
相关参数如下说明:
-dQUIET
, 安静的意思,指代执行过程中尽可能少的输出日志等信息。(也可以简写为-q
)-dNOSAFER
, 通过命令行运行-dBATCH
, 执行到最后一页后退出-dNOPAUSE
, 每一页转换之间没有停顿-dNOPROMPT
, 没有相关提示-dFirstPage=1
, 从第几页开始-dLastPage=5
, 到第几页结束-sDEVICE=png16m
, 转换输出的文件类型装置,默认值为x11alpha
-g720x1280
, 图片像素(-g<width>x<height>
),一般不指定,使用默认输出-r300
, 图片分辨率(即图片解析度为300dpi),默认值好像是72-sOutputFile=/opt/shanhy/error1png/%d.png
, 图片输出路径,使用%d
或%ld
输出页数