O2S.Components.PDFRender4NET.dll 图片空白BUG问题

在用网上的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 <= 0)
17             {
18                 startPageNum = 1;
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 - 1, 56 * definition);
38                 Bitmap newPageImage = new Bitmap(pageImage.Width/4 , pageImage.Height/4);
39
40                 Graphics g = Graphics.FromImage(newPageImage);
41                 g.InterpolationMode = InterpolationMode.HighQualityBicubic;           //重新画图的时候Y轴减去130,高度也减去130  这样水印就看不到了
42                 g.DrawImage(pageImage, new Rectangle(0, 0, pageImage.Width/4 , pageImage.Height/4),
43                     new Rectangle(0, 130, pageImage.Width, pageImage.Height-130), GraphicsUnit.Pixel);
44
45                 bitMap[i - 1] = 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 == 0)
66                 throw new Exception("图片数不能够为0");
67             else if (i == 1)
68                 return maps[0];
69
70             //创建要显示的图片对象,根据参数的个数设置宽度
71             Bitmap backgroudImg = new Bitmap(maps[0].Width, i * maps[0].Height);
72             Graphics g = Graphics.FromImage(backgroudImg);
73             //清除画布,背景设置为白色
74             g.Clear(System.Drawing.Color.White);
75             for (int j = 0; j < i; j++)
76             {
77                 g.DrawImage(maps[j], 0, j * maps[j].Height, maps[j].Width, maps[j].Height);
78             }
79             g.Dispose();
80             return backgroudImg;
81         }
时间: 2024-11-13 10:04:44

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

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

在进行页面的DIV CSS排版时,遇到IE6(当然有时Firefox下也会偶遇)浏览器中的图片元素img下出现多余空白的问题绝对是常见的 对于该问题的解决方法也是“见机行事”. 1.将图片转换为块级对象 即,设置img为“display:block;”.在本例中添加一组CSS代码:“#sub img {display:block;}”. 2.设置图片的垂直对齐方式 即设置图片的vertical-align属性为“top,text-top,bottom,text-bottom”也可以解决.如本例中

Android drawable 玩转自定义图片以及bug的解决

很久没有空更新博客了,以至于挺多东西都用过之后就忘记了,没有很好的记录下来,之前在工作的时候也是这样,用完就忘记,所以觉得还是很有必要把自己用过的一些东西,解决的一些问题记录下来的,所以以后尽量坚持一周写一次博客,记录一下自己解决的问题,也与大学共享一下,建议大家也写一下博客或笔记什么的,因为在工作中,自己接触的东西并不可能只是自己刚开始的东西,比如说Android,其实在开发一个app或平时在公司工作的时候,还需要用到很多的东西,而且还有可能有一段时间去使用别的语言去开发,如果自己不记录一下,

display:inline-block的空白bug问题

产生原因:我们写代码的时候习惯在结束标签的后面添加换行符,这个时候就会产生空白符.但是不同浏览器对空白符的理解是不同的,IE6/7会忽略掉此空白符,正常显示内容:IE8以上的IE浏览器以及FF.chrome等的标准浏览器会产生空白bug问题,其中chrome中显示的是8px的空白bug,但是其他浏览器则是4px的空白bug.所以我们需要一套完整的解决bug的方案. 方法一:由于产生bug的原因是我们代码结构的问题,所以我们可以对症下药,调整代码结构,使其不出现空白符.例如下面代码: 结构一: 结

用AutoHotkey删除Word里图片后面的特定字符(Word查找图片的BUG)

本来用word自带的通配符模式查找/替换就能删除, 比如删除所有图片后面的段落符: 查找:(^g)^p 替换:\1 \1表示括号内的内容,这样就把括号外的内容删掉了. 但是由于word在通配符模式下^g查找图片有BUG,无法查找, 而要实现只删除图片后面的段落符,要用到带()的表达式(通配符模式才支持), 然后这两个功能被word完美隔绝.无奈下转用AutoHotkey调用VBA解决. F9:: ow := ComObjActive("Word.Application") loop(o

H5页面空白bug的反思

bug-1: [现象]多位用户反馈收银台页面出现空白(h5). [重现]公司测试人员重现只是偶发,很难必现,开发很难定位问题原因. [过程] 方案一.最开始这个现象只有我们业务线有用户反馈白屏问题,经过开发同事多天奋战,初步怀疑是cdn的问题,解决办法是先不用cdn. 方案二.但我们没有绝对的证据证明是cdn导致的.为了定位具体问题,开始了埋点的方案. [结果] 一.另一条业务线的小伙伴能够在浏览器里稳定重现这个白屏现象.发现是H5发布之后有一个css文件和开发实际发布的不一样,最后在我们运维架

背景图100%出现滚动条时会有空白bug

.loginWrap { position:absolute;top: 0;left: 0;width:100%;height: 100%;} window.onresize = function(){ var widthOfMobile = $('#warpBackground'). outerHeight(); var withoutMargin = $('#mobileWarp'). outerHeight(); $('#mobileBg').css('height',widthOfMob

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

页面容器(#wrap)与页面头部(#header )为100%宽度.而内容的容器(#page)为固定宽度960px.浏览窗口缩小而小于内容层宽度时会产生宽度理解上的差异.如下图所示窗口宽度大于内容层宽度: 改变浏览器窗口的大小,小于内容层宽度,如下图所示. 拖动水平滚动条,出现了bug的样子.右边的背景不存在了.如下图所示. 问题的根本在于:当窗口缩小时,浏览器默认100%宽度为浏览器窗口的宽度.而忽略了下部内容层固定宽度(960px).从而出现了固定宽度大于100%宽度的现象.浏览以此理解来解

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

页面容器(#wrap)与页面头部(#header )为100%宽度.而内容的容器(#page)为固定宽度960px.浏览窗口缩小而小于内容层宽度时会产生宽度理解上的差异.如下图所示窗口宽度大于内容层宽度: 改变浏览器窗口的大小,小于内容层宽度,如下图所示. 拖动水平滚动条,出现了bug的样子.右边的背景不存在了.如下图所示. 问题的根本在于:当窗口缩小时,浏览器默认100%宽度为浏览器窗口的宽度.而忽略了下部内容层固定宽度(960px).从而出现了固定宽度大于100%宽度的现象.浏览以此理解来解

去掉matlab图片空白边缘

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