使用magick.net将pdf转换为图片
现在手上有个需求是要将pdf转换为一页一页的image.最开始找到的是pdfbox来处理pdf的.在pdfbox.apache.org的官网首页写了一句'convert you pdfs to image files'.所以最开始就使用pdfbox来作为转换库.但是在后面却发现出现了一个问题.由于暂时解决不了,发现了magick这个东西.可以用来处理100多种图片格式,并且提供了各种语言的api.
下载magick.net
ImageMagick http://www.imagemagick.org/
.net上官网提供了两个类库 magick.net 和imagemagickapp.我选择了magick.net这个库.下载地址
http://magick.codeplex.com/releases/view/137513
下载 Magick.NET-7.0.0.0007-Q16-AnyCPU-net40-client.zip
其中下载的时候最好选择AnyCPU的库,在vs编译的时候不需要考虑平台性的问题.Q8 Q16 q16-HDRI分别表示8位 16位和32位的.可以根据需要选择不同版本的库.
下载安装ghostscript
根据自己的需要在ghostscript.com选择下载32位或64位的库.下载地址如下:
如果不安装ghostscript,magick.net在执行Read函数读取pdf时会报如下错误.
iisexpress.exe: FailedToExecuteCommand `"gswin32c.exe" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r300x300" "-sOutputFile=C:/Users/ZHANGW~1/AppData/Local/Temp/magick-10612rmwPHf2ITKBB%d" "-fC:/Users/ZHANGW~1/AppData/Local/Temp/magick-10612_fb2bvFOsIGG" "-fC:/Users/ZHANGW~1/AppData/Local/Temp/magick-10612Pg1c2Td4S-bk"' (ϵͳ�Ҳ���ָ�����ļ��� ) @ error/delegate.c/ExternalDelegateCommand/459
生成image
在工程中引用Magick.net.当然也可以使用nuget来引入.转换代码如下,filepath为pdf的路径.
MagickReadSettings settings = new MagickReadSettings();
settings.Density = new MagickGeometry(72, 72); //设置格式
using (MagickImageCollection images = new MagickImageCollection())
{
images.Read(filepath, settings);
int pageCount = images.Count();
for (int i = 0; i < page;i++ )
{
MagickImage image = images[i];
image.Format = MagickFormat.Jpeg;
string path = string.Format("{0}/{1}.jpg", dir, i);//相对路径
string filename = "d:/img/" + path;
image.Write(filename);
}
}
这里转换就完成了.
IKVM和pdfbox生成的问题
最开始我是使用pdfbox来生成的.代码如下:
PDDocument doc = PDDocument.load(this._path);
int page= doc.getDocumentCatalog().getAllPages().size();//获取总的页数
for (int i = 0; i < page; i++)
{
PDPage pdfPage = allpages.get(i) as PDPage;
java.awt.image.BufferedImage image = pdfPage.convertToImage();
string path = string.Format("{0}/{1}.jpg", dir, i);//相对路径
string filename ="d:\img" + path;
ImageIO.write(image, "jpg", new java.io.File(filename));
}
运行的时候在下面这行代码中出错了.
java.awt.image.BufferedImage image = pdfPage.convertToImage();
原因是IKVM.GNU.Classpath对awt和Swing实现不完整.导致了错误.当然如果不需要使用awt和Swing的库.使用.net来调用java库IKVM还是能够解决一些问题的.
其他
PDFsharp http://pdfsharp.net/wiki/PDFsharpFAQ.ashx
itextsharp http://itextsharp.sourceforge.net/
ImageMagick http://www.imagemagick.org/
http://magick.codeplex.com/
http://magick.codeplex.com/releases/view/137513
imageMagick 的另一个.net api实现 http://sourceforge.net/projects/imagemagickapp/
使用magick.net将pdf转换为图片的更多相关文章
- C#将PDF转换为图片的方法
1.需要添加引用 O2S.Components.PDFRender4NET 链接: https://pan.baidu.com/s/1ZPTaLTnFkex6QrsndLjwxg 提取码: jdh2 ...
- 在Java代码中使用pdfBox将PDF转换为图片
生成图片 // 生成图片 PDDocument pd = PDDocument.load(new File(filePath)); PDFRenderer pdfRenderer = new PDFR ...
- Convert 实现 pdf 和图片格式互转
pdf 转换为图片 (注意:pdf 默认转换的是透明背景,如果转为jpg格式必须添加背景色.-background white -flatten) convert -background white ...
- 2019c#将PDF转图片
两种方法: 第一种是用O2S.Components.PDFRender4NET 大家可以去网上查找无水印版本 但是有的时候带颜色的字就变空白了 不知道为什么 第二种是用PdfiumViewer 这种方 ...
- wkhtmltopdf 将网页转换为PDF和图片
wkhtmltopdf 是一个shell工具,它使用了WebKit渲染引擎和Qt,将网页html转换为pdf的强大工具,转换后的pdf也可以通过pdf工具进行复制.备注.修改 官网下载地址:http: ...
- 【使用Itext处理PDF文档(新建PDF文件、修改PDF文件、PDF中插入图片、将PDF文件转换为图片)】
iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...
- PDF文档转换为图片、图片转成PDF 及PDF合并
简介 功能:PDF文档按每页转换成一张图片,一张图片转换成一张PDF 并将多张PDF合成一个多页的PDF文档. 经历:在各个网站上搜索始终出现各种问题,尤其是遇到引用的版本问题尤其头疼,不是不能适用当 ...
- C# 将 HTML 转换为图片或 PDF
首先是把 HTML 转换为图片. public partial class Form1 : Form { public Form1() { InitializeComponent(); } WebBr ...
- C# 第三方DLL,可以实现PDF转图片,支持32位系统、64位系统
itextsharp.dll,是一个开源的在C#中用来生成PDF文档的库文件,不少C#爱好者用它制作出了PDF文档生成器.使用时只需在你的C#项目中添加引入此组件即可,使用方法网上有很多,自己查阅一下 ...
随机推荐
- Dynamic CRM 2013学习笔记(三)快速创建实体 EntityCreater
一.实体简介 实体用于在 Microsoft Dynamics CRM 中建立业务数据模型和管理业务数据.例如,可以使用客户.市场活动和事件(案例)等实体跟踪和支持销售.市场营销和服务活动.实体具有一 ...
- 团队项目——站立会议 DAY1
团队项目--站立会议 DAY1 团队成员介绍(5人):张靖颜.何玥.钟灵毓秀.赵莹.王梓萱 今日(2016/5/6)为站立会议的第一天,一起对团队项目进行讨论,并对每个人的 ...
- unity3D ——自带寻路Navmesh入门教程(一)(转)
转自:http://liweizhaolili.blog.163.com/blog/static/16230744201271161310135/ 说明:从今天开始,我阿赵打算写一些简单的教程,方便自 ...
- jenkins2 pipeline插件的10个最佳实践
jenkins pipeline的10个最佳实践. 文章来自:http://www.ciandcd.com文中的代码来自可以从github下载: https://github.com/ciandcd ...
- Node.js 爬虫,自动化抓取文章标题和正文
持续进行中... 目标: 动态User-Agent模拟浏览器 √ 支持Proxy设置,避免被服务器端拒绝 √ 支持多核模式,发挥多核CPU性能 √ 支持核内并发模式 √ 自动解码非英文站点,避免乱码出 ...
- R 中同步进行的多组比较的包:npmc
方差检验可以评估组间的差异.依据检验的结果,虽然你可以拒绝不存在差异的原假设,但方差检验并没有告诉你哪些组显著地与其他组有不同.Robert 在 <R in Action>一书中推荐了一个 ...
- ubuntu安装ftp服务器
ubuntu安装ftp服务器 1: 安装vsftpd ~$ sudo apt-get install vsftpd ubuntu10.10自己装了,这步省略. 2: 配置vsftpd 2.1 修改vs ...
- Gaussian分布下Hinge损失的期望
SVM的标准形式是\begin{align*} \min_{\boldsymbol{w}} \ \ \ \frac{\lambda}{2} \|\boldsymbol{w}\|^2 + \frac{1 ...
- 使用Alcatraz来管理Xcode插件
Alcatraz 是一个帮你管理 Xcode 插件.模版以及颜色配置的工具.它可以直接集成到 Xcode 的图形界面中,让你感觉就像在使用 Xcode 自带的功能一样. 安装和删除 使用如下的命令行来 ...
- Django项目深入理解
python应用松耦合比方说,考虑有一个以前写的视图函数,这个函数显示当前日期和时间.如果我们想把它的URL 从原来的 /time/ 改变到/currenttime/ ,我们只需要快速的修改一下URL ...