O2S.Components.PDFRender4NET.dll 图片空白BUG问题
在用网上的2.0.1.0破解版的时候,会出现莫名的错误,大多数pdf转成图片都是Ok的,但是有部分转出来是空白,因为我这里要涉及大量的pdf转图片,不允许出现错误。
后来经过实验发现是这个版本存在bug。所以只有升级到更高的版本。我现在用的是4.0.2.0
这个版本会有水印存在, 转成il,修改了之后,dll不能使用了,dll签名过,所以没办法。
只有在转出来的图片上进行处理,bitmap处理一下就行了,因为水印是固定的地方,所以用GDI重新画图,去掉水印的那一部分就可以了
- /// <summary>
- /// 将PDF文档转换为图片的方法
- /// </summary>
- /// <param name="pdfInputPath">PDF文件路径</param>
- /// <param name="imageOutputPath">图片输出完整路径(包括文件名)</param>
- /// <param name="startPageNum">从PDF文档的第几页开始转换</param>
- /// <param name="endPageNum">从PDF文档的第几页开始停止转换</param>
- /// <param name="imageFormat">设置所需图片格式</param>
- /// <param name="definition">设置图片的清晰度,数字越大越清晰</param>
- private static void ConvertPdf2Image(string pdfInputPath, string imageOutputPath,
- int startPageNum, int endPageNum, ImageFormat imageFormat, int definition)
- {
- PDFFile pdfFile = PDFFile.Open(pdfInputPath);
- if (startPageNum <= )
- {
- startPageNum = ;
- }
- if (endPageNum > pdfFile.PageCount)
- {
- endPageNum = pdfFile.PageCount;
- }
- if (startPageNum > endPageNum)
- {
- int tempPageNum = startPageNum;
- startPageNum = endPageNum;
- endPageNum = startPageNum;
- }
- var bitMap = new Bitmap[endPageNum];
- for (int i = startPageNum; i <= endPageNum; i++)
- {
- Bitmap pageImage = pdfFile.GetPageImage(i - , * definition);
- Bitmap newPageImage = new Bitmap(pageImage.Width/ , pageImage.Height/);
- Graphics g = Graphics.FromImage(newPageImage);
- g.InterpolationMode = InterpolationMode.HighQualityBicubic;
//重新画图的时候Y轴减去130,高度也减去130 这样水印就看不到了- g.DrawImage(pageImage, new Rectangle(, , pageImage.Width/ , pageImage.Height/),
- new Rectangle(, , pageImage.Width, pageImage.Height-), GraphicsUnit.Pixel);
- bitMap[i - ] = newPageImage;
- g.Dispose();
- }
- //合并图片
- var mergerImg = MergerImg(bitMap);
- //保存图片
- mergerImg.Save(imageOutputPath, imageFormat);
- pdfFile.Dispose();
- }
- /// <summary>
- /// 合并图片
- /// </summary>
- /// <param name="maps"></param>
- /// <returns></returns>
- private static Bitmap MergerImg(params Bitmap[] maps)
- {
- int i = maps.Length;
- if (i == )
- throw new Exception("图片数不能够为0");
- else if (i == )
- return maps[];
- //创建要显示的图片对象,根据参数的个数设置宽度
- Bitmap backgroudImg = new Bitmap(maps[].Width, i * maps[].Height);
- Graphics g = Graphics.FromImage(backgroudImg);
- //清除画布,背景设置为白色
- g.Clear(System.Drawing.Color.White);
- for (int j = ; j < i; j++)
- {
- g.DrawImage(maps[j], , j * maps[j].Height, maps[j].Width, maps[j].Height);
- }
- g.Dispose();
- return backgroudImg;
- }
- 我已经更新到4.7.4.0了 目前来看运行的比较稳定
O2S.Components.PDFRender4NET.dll 图片空白BUG问题的更多相关文章
- display:inline-block的空白bug问题
产生原因:我们写代码的时候习惯在结束标签的后面添加换行符,这个时候就会产生空白符.但是不同浏览器对空白符的理解是不同的,IE6/7会忽略掉此空白符,正常显示内容:IE8以上的IE浏览器以及FF.chr ...
- android 解决启动页面加载图片空白以及去掉标题栏
有时候启动页面根据白天晚上来启动时实现加载不同的图片效果,但是加载时会出现短暂的空白,解决方法如下: android:theme="@android:style/Theme.Transluc ...
- img标签下多余空白BUG解决方法
在进行页面的DIV CSS排版时,遇到IE6(当然有时Firefox下也会偶遇)浏览器中的图片元素img下出现多余空白的问题绝对是常见的 对于该问题的解决方法也是“见机行事”. 1.将图片转换为块级对 ...
- 缩小窗口时CSS背景图出现右侧空白BUG的解决方法
页面容器(#wrap)与页面头部(#header )为100%宽度.而内容的容器(#page)为固定宽度960px.浏览窗口缩小而小于内容层宽度时会产生宽度理解上的差异.如下图所示窗口宽度大于内容层宽 ...
- width:100%缩小窗口时背景图片出现空白bug
页面容器(#wrap)与页面头部(#header )为100%宽度.而内容的容器(#page)为固定宽度960px.浏览窗口缩小而小于内容层宽度时会产生宽度理解上的差异.如下图所示窗口宽度大于内容层宽 ...
- 关于Android2.X系统自定义图片圆角BUG的解决
今天在做项目的时候遇到的一个问题. 预期的效果是这样的:
- 12306验证图片的bug
刚才有人告诉我12306验证码换了,于是我就打开了看了看,点了点.oh no , i am really sorry ,12306.
- 去掉matlab图片空白边缘
在图形文件figure的菜单上点击file->export setup size选项中,对"expand axes to fill figure"选项打勾,如下图:
- C# 第三方DLL,可以实现PDF转图片,支持32位系统、64位系统
itextsharp.dll,是一个开源的在C#中用来生成PDF文档的库文件,不少C#爱好者用它制作出了PDF文档生成器.使用时只需在你的C#项目中添加引入此组件即可,使用方法网上有很多,自己查阅一下 ...
随机推荐
- 【STSRM12】夏令营
[题意]n个数划分成k段,每段的价值为段内不同数字的数量,求最大总价值 [算法]DP+线段树 [题解] f[i][j]表示前i个数字划分成j段的最大价值. f[i][j]=max(f[k][j-1]+ ...
- 玩转Metasploit系列(第二集)
在上一节的内容中,大家了解了Metasploit的结构.这一节我们主要介绍的是msfconsole的理论. msfconsole理论 在MSF里面msfconsole可以说是最流行的一个接口程序.很多 ...
- 之江学院第0届校赛 qwb与支教 (容斥公式)
description qwb同时也是是之江学院的志愿者,暑期要前往周边地区支教,为了提高小学生的数学水平.她把小学生排成一排,从左至右从1开始依次往上报数. 玩完一轮后,他发现这个游戏太简单了.于是 ...
- POJ2245 Lotto
Lotto Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6634 Accepted: 4201 Description ...
- /usr/bin/expect介绍
/usr/bin/expect介绍 http://blog.csdn.net/zhu_tianwei/article/details/44180637 概述 我们通过Shell可以实现简单的控制流功能 ...
- (转)Oracle中判断某字段不为空及为空的SQL语句
比如 insert into table a (a1,b1)values("a1",''); 对于这种情况,因为表里存的是'',其实是没有内容的,要查询这个字段,不能直接使用 se ...
- express 4.x+ swig
Express 是一个基于 Node.js 平台的极简.灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用. express官网:http://www.exp ...
- 【 Linux 】I/O工作模型及Web服务器原理
一.进程.线程 进程是具有一定独立功能的,在计算机中已经运行的程序的实体.在早期系统中(如linux 2.4以前),进程是基本运作单位,在支持线程的系统中(如windows,linux2.6) ...
- 《Java编程思想》笔记 第七章 复用类
1.组合 将其他类的对象引用置于新的类中. 3.继承 extends 从已知的一个类中派生出新的一个类,叫子类.子类实现了父类所有 非私有化 非静态 的属性和方法,并能根据自己的实际需求扩展出新的行为 ...
- Tortoise svn 冲突解决主要办法
Tortoise svn 冲突解决主要办法 1.先备份自己的修改文件后,然后revert自己的更新内容,然后提交,再以更新后的代码为基准,将备份的代码移入进来.在这种方式下不需要使用svn resol ...