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 另存为 PDF文件

asp.net 中怎么把上传在服务器上的doc.xls文件转换成PDF

在 ASP.NET 中将 HTML 转换为 PDF [重复]

如何在线将PDF转成图片

asp.net怎么将图片上传到sql2005里,然后显示在网页里做成变换的新闻图片