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#项目中添加引入此组件即可,使用方法网上有很多,自己查阅一下 ...
随机推荐
- EL遍历集合
jstl EL表达式遍历集合 博客分类: JSTL/EL JSTLEL遍历集合 在EL中,方括号运算符用来检索数组和集合的元素.对于实现 java.util.Map 接口的集合,方括号运算符使用关联 ...
- 转:java读取配置文件的几种方法
转自: http://www.iteye.com/topic/56496 在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来完成,本文根据笔者工作中用到的读取配置文件的方法小小 ...
- 进一步认识golang中的并发
如果你成天与编程为伍,那么并发这个名词对你而言一定特别耳熟.需要并发的场景太多了,例如一个聊天程序,如果你想让这个聊天程序能够同时接收信息和发送信息,就一定会用到并发,无论那是什么样的并发. 并发的意 ...
- iOS设计模式 —— KVC
刨根问底KVC KVC 全称 key valued coding 键值编码 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性 ...
- GIt 和 Github
原创 by zoe.zhang GitHub中采用的比较多得是markdown的语法,博客园里对markdown的支持感觉不是特别友好,但是为了应景,还是用了markdown来写这一篇文 ...
- 第三篇:使用firewall-cmd
本文来源:Working with firewalld 其它参考文档:redhat官方中文文档 1.查询类命令 2.设置类命令 3.运行时zone设置 4.永久性zone设置 5.直接 ...
- STL模板整理 priority_queue
priority_queue 优先队列是队列的一种,不过它可以按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序,每次的push和pop操作,队列都会动态的调整,以达到我们预期的方式来 ...
- 【转】python 生成器和迭代器有这篇就够了
总结得特别好,转自:https://www.cnblogs.com/wj-1314/p/8490822.html 本节主要记录一下列表生成式,生成器和迭代器的知识点 列表生成器 首先举个例子 现在有个 ...
- django static文件的引入方式(转)
1. 在django project中创建 static文件夹 2.settings.py中配置要在 STATIC_URL = '/static/' 下边 STATICFILES_DIRS = [ ...
- Dart基础
dartpad在线调试 :https://dartpad.dartlang.org 运行需要用墙 vscode执行dart 安装 安装dart插件 下载安装dart 配置环境变量 vscode新建 ...