最经做一个项目,需要将PDF文件的每一页切割成图片显示在页面上。其中就使用到了Acrobat;
大概的方法是使用acrobat获取PDF图片,然后将图片保存到粘贴板中,再从粘贴板中取出图片,这个过程在winform里面是可以的,但是移到web上面就不可以了,主要的问题就是获取不到粘贴板的内容。主要代码如下:
//获取PDF文件的页数
result[0] = pdfDoc.GetNumPages().ToString();
//取出对应页数
pdfPage = (Acrobat.CAcroPDPage)pdfDoc.AcquirePage(pageNum);
//3)
//得到当前页的大小
pdfPoint = (Acrobat.CAcroPoint)pdfPage.GetSize();
//生成一个页的裁剪区矩形对象
pdfRect = (Acrobat.CAcroRect)Microsoft.VisualBasic.Interaction.CreateObject("AcroExch.Rect", "");
//计算当前页经缩放后的实际宽度和高度,zoom==1时,保持原比例大小
int imgWidth = (int)((double)pdfPoint.x * 1);
int imgHeight = (int)((double)pdfPoint.y * 1);
//设置裁剪矩形的大小为当前页的大小
pdfRect.Left = 0;
pdfRect.right = (short)imgWidth;
pdfRect.Top = 0;
pdfRect.bottom = (short)imgHeight;
//4)
//将当前页的裁剪区的内容编成图片后复制到剪贴板中
pdfPage.CopyToClipboard(pdfRect, 0, 0, (short)(100 * 1));
//5)
IDataObject clipboardData = Clipboard.GetDataObject();//粘贴板对象 //这里获取到的clipboardData为空
//检查剪贴板中的对象是否是图片,如果是图片则将其保存为指定格式的图片文件
if (clipboardData.GetDataPresent(DataFormats.Bitmap))
{
因为上面粘贴板获取为空,所以无法执行下面的语句了。。。怎么解决?
朋友,请问你这个问题解决了没?我也遇到这个问题,求大神指导、、、、
遇到相同的问题。请问有没有解决此问题?
<%@ Page Language="C#" AspCompat="true"
完美解决,也可以设置线程属性解决
thread.SetApartmentState( ApartmentState.STA);
very good