[C#]用acrobat将pdf转成图片时候到剪贴板Bitmap始终是null

编程入门 行业动态 更新时间:2024-10-23 13:26:27

[C#]用acrobat将pdf转成图片时候到<a href=https://www.elefans.com/category/jswz/34/1770231.html style=剪贴板Bitmap始终是null"/>

[C#]用acrobat将pdf转成图片时候到剪贴板Bitmap始终是null

参考代码:

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);}

但是发现始终获取不到图像,原因是acrobat DC好像不行,clipboardData.GetDataPresent(DataFormats.Bitmap)始终返回false。因此需要安装acrobat XI或者acrobat 9.0才行

更多推荐

[C#]用acrobat将pdf转成图片时候到剪贴板Bitmap始终是null

本文发布于:2023-12-06 08:06:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1666966.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:剪贴板   转成   图片   pdf   acrobat

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!