asp.net将PDF文件转换成图片,并且在网页上显示
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net将PDF文件转换成图片,并且在网页上显示相关的知识,希望对你有一定的参考价值。
参考技术A 本文采用Adobe Acrobat9.0的COM组件,将Pdf文件的每一页转换成对应的图片文件。开发环境:VS2010,.Net Framework4.0,Adobe Acrobat9.0。
工程中添加COM引用:Adobe Acrobat 9.0 Type Library(必须装了Adobe Acrobat9.0才会有)。
思路:
1、需要用到的COM对象:
1)CAcroPDDoc:Acrobat文档对象。
2)CAcroPDPage:页对象。
3)CAcroRect:用来描述页中一个矩形区域的对象。
4)CAcroPoint:实际上代表的是Size。
2、转换过程:
1)打开文档。
2)取出每一页。
3)获取每一页的大小,生成一个表示该页的矩形区域。
4)将当前页的指定区域编码成图片,并且复制到剪贴板中。
5)将剪贴板中的图片取出,保存为图片文件。
转换函数代码:
public static void ConvertPdf2Image(string pdfFilePath, string imageDirectoryPath,
int beginPageNum, int endPageNum, ImageFormat format, double zoom = 1)
Acrobat.CAcroPDDoc pdfDoc = null;
Acrobat.CAcroPDPage pdfPage = null;
Acrobat.CAcroRect pdfRect = null;
Acrobat.CAcroPoint pdfPoint = null;
//1)
//生成操作Pdf文件的Com对象
pdfDoc = (Acrobat.CAcroPDDoc)Microsoft.VisualBasic.Interaction.CreateObject("AcroExch.PDDoc", "");
//检查输入参数
if (!pdfDoc.Open(pdfFilePath))
throw new FileNotFoundException(string.Format("源文件0不存在!", pdfFilePath));
if (!Directory.Exists(imageDirectoryPath))
Directory.CreateDirectory(imageDirectoryPath);
if (beginPageNum <= 0)
beginPageNum = 1;
if (endPageNum > pdfDoc.GetNumPages() || endPageNum <= 0)
endPageNum = pdfDoc.GetNumPages();
if (beginPageNum > endPageNum)
throw new ArgumentException("参数\"beginPageNum\"必须小于\"endPageNum\"!");
if (format == null)
format = ImageFormat.Png;
if (zoom <= 0)
zoom = 1;
//转换
for (int i = beginPageNum; i <= endPageNum; i++)
//2)
//取出当前页
pdfPage = (Acrobat.CAcroPDPage)pdfDoc.AcquirePage(i - 1);
//3)
//得到当前页的大小
pdfPoint = (Acrobat.CAcroPoint)pdfPage.GetSize();
//生成一个页的裁剪区矩形对象
pdfRect = (Acrobat.CAcroRect)Microsoft.VisualBasic.Interaction.CreateObject("AcroExch.Rect", "");
//计算当前页经缩放后的实际宽度和高度,zoom==1时,保持原比例大小
int imgWidth = (int)((double)pdfPoint.x * zoom);
int imgHeight = (int)((double)pdfPoint.y * zoom);
//设置裁剪矩形的大小为当前页的大小
pdfRect.Left = 0;
pdfRect.right = (short)imgWidth;
pdfRect.Top = 0;
pdfRect.bottom = (short)imgHeight;
//4)
//将当前页的裁剪区的内容编成图片后复制到剪贴板中
pdfPage.CopyToClipboard(pdfRect, 0, 0, (short)(100 * zoom));
//5)
IDataObject clipboardData = Clipboard.GetDataObject();
//检查剪贴板中的对象是否是图片,如果是图片则将其保存为指定格式的图片文件
if (clipboardData.GetDataPresent(DataFormats.Bitmap))
Bitmap pdfBitmap = (Bitmap)clipboardData.GetData(DataFormats.Bitmap);
pdfBitmap.Save(
Path.Combine(imageDirectoryPath, i.ToString("0000") + "." + format.ToString()), format);
pdfBitmap.Dispose();
//关闭和释放相关COM对象
pdfDoc.Close();
Marshal.ReleaseComObject(pdfRect);
Marshal.ReleaseComObject(pdfPoint);
Marshal.ReleaseComObject(pdfPage);
Marshal.ReleaseComObject(pdfDoc);
源代码敬上:http://files.cnblogs.com/kongxianghai/Pdf2ImageWithAcrobat.rar
网上有一篇搜集的非常全的将Pdf文件转换成图片的各种方法,拿出来分享:
http://topic.csdn.net/u/20120219/20/4888d128-3b77-47bc-aa21-cb02c014bc1f.html?84661 参考技术B asp.net 有pdf插件,转成图片后你直接在网页上输出呗
如何将网页版的转换给pdf文件
很多网友表示想要将网页保存为pdf文件却不知如何处理,其实转换方法还是很简单的。此前小编经常在网上搜索各种“珍贵”的资料,当下不能立马浏览,想要收藏起来回家慢慢看。于是就有同事推荐我将网页转换成pdf文件,然后再发送到手机或者平板上浏览就好啦。这个方法确实不错,但是在转换这个步骤中难倒了我,紧接着同事又发来一个安装包,说利用这个软件可以快速转换。
后来小编一直都是用这个工具实现文档格式转换的,主要是将文档转成pdf格式的,除了网页之外,其他格式的文档都能转成pdf,效果还特别好,这里将具体方法分享如下,一起来看看吧!
推荐使用:闪电PDF虚拟打印机
操作方法:
第一步、首先,需要在电脑上安装一款虚拟打印机,安装非常方便;
第二步、电脑浏览器打开需要处理的网页页面,然后按住键盘上打印快捷键“Ctrl+P”;
第三步、在以下弹出的窗口中,选择打印机为“SD PDF Printe”,然后点击“打印”;
第四步、这里的打印可不是真的用打印机,而是以下虚拟打印机,在这里输入文件名称后点击“导出”;
第五步、导出完成后,说明刚刚的网页就成功转成PDF文件啦,点击前往导出文件浏览;
第六步、这里用PDF编辑器打开PDF文件,由下图可以看出,这是一份可编辑的PDF文件,效果还不错哦!
参考技术A 只要是可以打印,就可以使用虚拟打印机来处理:方法一:使用虚拟打印机pdf factory即可,而且其他格式文件只要是能够打印,选择这个虚拟打印机,都可以做成PDF文件,很简单实用;
方法二:用其他虚拟打印机转成PDF文件。
方法三:使用专门的转换软件,把文件转成PDF文件。 参考技术B 网页上的pdf文件转换成word的方法:
1.先把pdf文件下载下来,然后打开pdf格式转换器;
2.选择要转换的文件格式”文件转word‘;
3.添加好要转的文件之后点击开始转换就好了。
转换工具如果没有就下载一个就好了。
以上是关于asp.net将PDF文件转换成图片,并且在网页上显示的主要内容,如果未能解决你的问题,请参考以下文章
如何将本地HTML网页多个文件转换成PDF(为了在IPAD上使用)
asp.net 中怎么把上传在服务器上的doc.xls文件转换成PDF