在用网上的2.0.1.0破解版的时候,会出现莫名的错误,大多数pdf转成图片都是Ok的,但是有部分转出来是空白,因为我这里要涉及大量的pdf转图片,不允许出现错误。

后来经过实验发现是这个版本存在bug。所以只有升级到更高的版本。我现在用的是4.0.2.0

这个版本会有水印存在,  转成il,修改了之后,dll不能使用了,dll签名过,所以没办法。

只有在转出来的图片上进行处理,bitmap处理一下就行了,因为水印是固定的地方,所以用GDI重新画图,去掉水印的那一部分就可以了

  1. /// <summary>
  2. /// 将PDF文档转换为图片的方法
  3. /// </summary>
  4. /// <param name="pdfInputPath">PDF文件路径</param>
  5. /// <param name="imageOutputPath">图片输出完整路径(包括文件名)</param>
  6. /// <param name="startPageNum">从PDF文档的第几页开始转换</param>
  7. /// <param name="endPageNum">从PDF文档的第几页开始停止转换</param>
  8. /// <param name="imageFormat">设置所需图片格式</param>
  9. /// <param name="definition">设置图片的清晰度,数字越大越清晰</param>
  10. private static void ConvertPdf2Image(string pdfInputPath, string imageOutputPath,
  11. int startPageNum, int endPageNum, ImageFormat imageFormat, int definition)
  12. {
  13.  
  14. PDFFile pdfFile = PDFFile.Open(pdfInputPath);
  15.  
  16. if (startPageNum <= )
  17. {
  18. startPageNum = ;
  19. }
  20.  
  21. if (endPageNum > pdfFile.PageCount)
  22. {
  23. endPageNum = pdfFile.PageCount;
  24. }
  25.  
  26. if (startPageNum > endPageNum)
  27. {
  28. int tempPageNum = startPageNum;
  29. startPageNum = endPageNum;
  30. endPageNum = startPageNum;
  31. }
  32.  
  33. var bitMap = new Bitmap[endPageNum];
  34.  
  35. for (int i = startPageNum; i <= endPageNum; i++)
  36. {
  37. Bitmap pageImage = pdfFile.GetPageImage(i - , * definition);
  38. Bitmap newPageImage = new Bitmap(pageImage.Width/ , pageImage.Height/);
  39.  
  40. Graphics g = Graphics.FromImage(newPageImage);
  41. g.InterpolationMode = InterpolationMode.HighQualityBicubic;
               //重新画图的时候Y轴减去130,高度也减去130 这样水印就看不到了
  42. g.DrawImage(pageImage, new Rectangle(, , pageImage.Width/ , pageImage.Height/),
  43. new Rectangle(, , pageImage.Width, pageImage.Height-), GraphicsUnit.Pixel);
  44.  
  45. bitMap[i - ] = newPageImage;
  46.          g.Dispose();
  47. }
  48.  
  49. //合并图片
  50. var mergerImg = MergerImg(bitMap);
  51. //保存图片
  52. mergerImg.Save(imageOutputPath, imageFormat);
  53. pdfFile.Dispose();
  54. }
  55.  
  56. /// <summary>
  57. /// 合并图片
  58. /// </summary>
  59. /// <param name="maps"></param>
  60. /// <returns></returns>
  61. private static Bitmap MergerImg(params Bitmap[] maps)
  62. {
  63. int i = maps.Length;
  64.  
  65. if (i == )
  66. throw new Exception("图片数不能够为0");
  67. else if (i == )
  68. return maps[];
  69.  
  70. //创建要显示的图片对象,根据参数的个数设置宽度
  71. Bitmap backgroudImg = new Bitmap(maps[].Width, i * maps[].Height);
  72. Graphics g = Graphics.FromImage(backgroudImg);
  73. //清除画布,背景设置为白色
  74. g.Clear(System.Drawing.Color.White);
  75. for (int j = ; j < i; j++)
  76. {
  77. g.DrawImage(maps[j], , j * maps[j].Height, maps[j].Width, maps[j].Height);
  78. }
  79. g.Dispose();
  80. return backgroudImg;
  81. }
  82.  
  83. 我已经更新到4.7.4.0 目前来看运行的比较稳定
  1. 下载地址

O2S.Components.PDFRender4NET.dll 图片空白BUG问题的更多相关文章

  1. display:inline-block的空白bug问题

    产生原因:我们写代码的时候习惯在结束标签的后面添加换行符,这个时候就会产生空白符.但是不同浏览器对空白符的理解是不同的,IE6/7会忽略掉此空白符,正常显示内容:IE8以上的IE浏览器以及FF.chr ...

  2. android 解决启动页面加载图片空白以及去掉标题栏

    有时候启动页面根据白天晚上来启动时实现加载不同的图片效果,但是加载时会出现短暂的空白,解决方法如下: android:theme="@android:style/Theme.Transluc ...

  3. img标签下多余空白BUG解决方法

    在进行页面的DIV CSS排版时,遇到IE6(当然有时Firefox下也会偶遇)浏览器中的图片元素img下出现多余空白的问题绝对是常见的 对于该问题的解决方法也是“见机行事”. 1.将图片转换为块级对 ...

  4. 缩小窗口时CSS背景图出现右侧空白BUG的解决方法

    页面容器(#wrap)与页面头部(#header )为100%宽度.而内容的容器(#page)为固定宽度960px.浏览窗口缩小而小于内容层宽度时会产生宽度理解上的差异.如下图所示窗口宽度大于内容层宽 ...

  5. width:100%缩小窗口时背景图片出现空白bug

    页面容器(#wrap)与页面头部(#header )为100%宽度.而内容的容器(#page)为固定宽度960px.浏览窗口缩小而小于内容层宽度时会产生宽度理解上的差异.如下图所示窗口宽度大于内容层宽 ...

  6. 关于Android2.X系统自定义图片圆角BUG的解决

    今天在做项目的时候遇到的一个问题. 预期的效果是这样的:

  7. 12306验证图片的bug

    刚才有人告诉我12306验证码换了,于是我就打开了看了看,点了点.oh no , i am really sorry ,12306.

  8. 去掉matlab图片空白边缘

    在图形文件figure的菜单上点击file->export setup size选项中,对"expand axes to fill figure"选项打勾,如下图:

  9. C# 第三方DLL,可以实现PDF转图片,支持32位系统、64位系统

    itextsharp.dll,是一个开源的在C#中用来生成PDF文档的库文件,不少C#爱好者用它制作出了PDF文档生成器.使用时只需在你的C#项目中添加引入此组件即可,使用方法网上有很多,自己查阅一下 ...

随机推荐

  1. 【STSRM12】夏令营

    [题意]n个数划分成k段,每段的价值为段内不同数字的数量,求最大总价值 [算法]DP+线段树 [题解] f[i][j]表示前i个数字划分成j段的最大价值. f[i][j]=max(f[k][j-1]+ ...

  2. 玩转Metasploit系列(第二集)

    在上一节的内容中,大家了解了Metasploit的结构.这一节我们主要介绍的是msfconsole的理论. msfconsole理论 在MSF里面msfconsole可以说是最流行的一个接口程序.很多 ...

  3. 之江学院第0届校赛 qwb与支教 (容斥公式)

    description qwb同时也是是之江学院的志愿者,暑期要前往周边地区支教,为了提高小学生的数学水平.她把小学生排成一排,从左至右从1开始依次往上报数. 玩完一轮后,他发现这个游戏太简单了.于是 ...

  4. POJ2245 Lotto

    Lotto Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6634   Accepted: 4201 Description ...

  5. /usr/bin/expect介绍

    /usr/bin/expect介绍 http://blog.csdn.net/zhu_tianwei/article/details/44180637 概述 我们通过Shell可以实现简单的控制流功能 ...

  6. (转)Oracle中判断某字段不为空及为空的SQL语句

    比如 insert into table a (a1,b1)values("a1",''); 对于这种情况,因为表里存的是'',其实是没有内容的,要查询这个字段,不能直接使用 se ...

  7. express 4.x+ swig

    Express 是一个基于 Node.js 平台的极简.灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用. express官网:http://www.exp ...

  8. 【 Linux 】I/O工作模型及Web服务器原理

    一.进程.线程     进程是具有一定独立功能的,在计算机中已经运行的程序的实体.在早期系统中(如linux 2.4以前),进程是基本运作单位,在支持线程的系统中(如windows,linux2.6) ...

  9. 《Java编程思想》笔记 第七章 复用类

    1.组合 将其他类的对象引用置于新的类中. 3.继承 extends 从已知的一个类中派生出新的一个类,叫子类.子类实现了父类所有 非私有化 非静态 的属性和方法,并能根据自己的实际需求扩展出新的行为 ...

  10. Tortoise svn 冲突解决主要办法

    Tortoise svn 冲突解决主要办法 1.先备份自己的修改文件后,然后revert自己的更新内容,然后提交,再以更新后的代码为基准,将备份的代码移入进来.在这种方式下不需要使用svn resol ...