jpg和tif转pdf遇到的问题和解决方法
问题:
- 当使用PDFLib把jpg转成pdf正常,把tif转pdf的时候就遇到了麻烦。如果tif是CCITT压缩格式则正常,如果是tif是jpg压缩或者lzw(其他压缩格式没有测试) 转换是速度就较慢了而且转出来的pdf文件大小比tif文件大了好几倍,分析原因可能是PDFLib中对于tif压缩格式的处理方式不同。通过设置compress参数也 未能解决。PDFLib: set_value() compress 压缩级别,从0代表无压缩,1代表最快速度等至9代表最佳压缩。该参数不会影响以通过(passthrough) 模式处理的图像数据。默认值:6。范围:页面、文档。
- 当使用ImageEn 3.0.0中的ImageEnIO来把jpg转成pdf时的速度比使用PDFLib逊色多了,如果是使用ImageEnIO来把tif转成pdf则速度比PDFLib块。
- 使用ImageEnIO转换pdf时候需要设置ImageEnIO.Params.PDF_PaperWidth和ImageEnIO.Params.PDF_PaperHeight参数(默认值width=595 height=842 (A4幅面),但是实际需要转换的jpg或者tif的尺寸不是A4、A3...等幅面的标准尺寸导致转换出来的pdf有白边。
解决方法:
- 问题1和2综合起来的解决方法就是把jpg转pdf时使用PDFLib,把tif转pdf时使用ImageEnIO。
- .问题3解决方法是ImageEnIO.LoadFromFile()后面设置PDF_PaperWidth和PDF_PaperHeight两个参数。代码如下:
ImageEnIO1.CreatePDFFile('C:\J001-002-0010\IEPDF.pdf'); for i := 1 to 3 do begin fileName := 'C:\J001-002-0010\' + Format('%.8d', [i]) + '.tif'; ImageEnIO1.LoadFromFile(fileName); //设置PDF压缩格式为JPEG压缩 ImageEnIO1.Params.PDF_Compression := ioPDF_JPEG; //图片宽度(像素)转pdf纸张宽度 ImageEnIO1.Params.Width width := Trunc(ImageEnIO1.Params.EXIF_ExifImageWidth / 4.16); //图片高度(像素)转pdf纸张高度 ImageEnIO1.Params.Heght height := Trunc(ImageEnIO1.Params.EXIF_ExifImageHeight / 4.16); ImageEnIO1.Params.PDF_PaperWidth := width; ImageEnIO1.Params.PDF_PaperHeight := height; ImageEnIO1.SaveToPDF; end;
如果只是上面的这段代码还不能解决转换出来的pdf有白边的问题!根据跟踪ImageEnIO1.SaveToPDF函数到bmpfilt单元中的IEPDFSave函数找到最终解决方法。在IEPDFSave函数中有IEFitResample(bitmap.Width, bitmap.height, IOParams.PDF_PaperWidth, IOParams.PDF_PaperHeight, w, h);这一行,这是采样设置生成pdf 的宽度和高度的函数(具体情况可以进入IEFitResample函数查看),最终解决方法就是注释掉行代码然后在下面添加两行代码,如下:
//IEFitResample(bitmap.Width, bitmap.height, IOParams.PDF_PaperWidth, IOParams.PDF_PaperHeight, w, h);
w := IOParams.PDF_PaperWidth;
h := IOParams.PDF_PaperHeight;
测试比较:
下面给出PDFLib处理面3张tif图的代码
pdf.begin_document('C:\J001-002-0010\PDFLib.pdf', ''); for i := 1 to 3 do begin fileName := 'C:\J001-002-0010\' + Format('%.8d', [i]) + '.tif'; image := pdf.load_image('auto', fileName, ''); pdf.begin_page_ext(0, 0, ''); pdf.fit_image(image, 0, 0, 'adjustpage dpi {300 300}'); //pdf.set_value('compress', 6); pdf.close_image(image); pdf.end_page_ext('');// 'height {a4.height} width {a4.width}' end; pdf.end_document('');
上面3张tif总大小是3.49M,利用ImageEnIO转换tif耗时3.16秒生成pdf大小是1.84M,利用PDFLib转换tif耗时9.44秒生成pdf大小是19.38M!
另外拿了12张jpg(总大小是4.08M)来测试,结果利用ImageEnIO转换耗时3.03秒生成pdf大小是1.18M,利用PDFLib转换耗时1.77秒生成pdf大小是4.18M!
总结:
对PDFLib还不够了解,或许通过PDFLib也能解决上面问题。ImageEn确实强大,但是其源码执行效率有待提高。
提高自己才是王道!
jpg和tif转pdf遇到的问题和解决方法相关推荐
- 极速pdf文件打印时此计算机未连接到网络,极速PDF阅读器常见问题及解决方法
原标题:极速PDF阅读器常见问题及解决方法 极速PDF阅读器是日常办公常用的一款PDF阅读软件,有些人在使用过程中难免遇到一些问题不知道如何解决.下面汇总了几个常见问题并附解决方案,希望能够帮助到你. ...
- word转pdf后书签目录失效解决方法
word转pdf后书签目录失效解决方法 安装Acrobat和AutoBookmark,Acrobat自己上网找,AutoBookmark链接放下面 链接: https://pan.baidu.com/ ...
- 万兴PDF文件编辑失败的解决方法
有些人在安装Wondershare PDFelement之后,会出现PDF编辑失败的情况,怎样解决万兴PDF在Mac上编辑PDF失败的问题? 解决方法如下: 如果您的PDF文件是正常文件,可以单击&q ...
- PDF合并后的PDF页面大小不一的解决方法
一.问题描述 不同的pdf文件进行合并之后,有时会出现页面大小不一的情况,尤其是在文件和图片进行pdf合并的时候,由于原pdf分辨率与图片分辨率不同导致的. 二.解决方法 ctrl+p 选择打印到pd ...
- word转换成PDF后图片模糊的解决方法(究极方法)
在visio中使用visio工具画的图,添加到word中,无论什么方式输出为PDF文件,在PDF中都是清晰的矢量图,而遇到以下几种情况时,word转为PDF图片会变模糊. 一.模糊情况 ①将png.j ...
- arXiv pdf下载很慢的解决方法
命令行直接下载: arxiv 上的论文使用wget下载时需要加参数–user-agent=Lynx,速度才能较快: wget --user-agent=Lynx https://arxiv.org/p ...
- win10自带的Edge浏览器打不开PDF文件和网页的解决方法
最近Microsoft Edge 打不开PDF文件和网页,用了一个简单高效的方法. 1.键盘操作Win+X,或右击[开始]键: 2.选择"命令提示符(管理员)": 3.在弹出的框中 ...
- pdf文件无法注释的解决方法
1.文档被加密 打开文档之后,点击 文件 -> 文档属性 -> 安全,看文档是否加密,如下图所示: 可以看到,文档被加密,使用解密软件解密即可. 2.PDF/A文档规范 如果阅读的PDF文 ...
- 在kindle阅读PDF的较好的解决方法
蓝桥杯给了一个kindle,然而我看的书大多数是pdf的,直接放上去效果很不好,就找了这个教程,也算能凑合看了,当然还是花钱买的书看起来更舒服. 因为KINDLE对PDF扫描文档的渲染.对比度.读取等 ...
- AD17原理图导出PDF异常-PIN脚网络丢失解决方法
没处理前的PDF,引脚网络丢失 解决方法 效果:
最新文章
- MIT开发的一款最新Chrome插件,功能远超OCR软件,可快速识别和复制图中文字
- JavaScript Math和Number对象
- 通过Easy-UI 树插件实现ArcGIS多个服务图层的图层控制
- 一级建造师考试通过了 !
- java日志使用_使用Java 8防止日志过宽
- python工厂模式 理解_浅谈Python设计模式 - 抽象工厂模式
- 轻松理解牛顿迭代法且用其求平方根
- 拉格朗日乘子法的通俗理解
- css 实现兼容各浏览器的渐变效果
- Kafka架构及基本原理简析
- 斯坦福NLP笔记6 —— Defining Minimum Edit Distance
- 计算机历史人物-随笔
- 2021夏令营全记录·华科计算机、中科院网络中心、中科院软件所、浙软
- 单片机c语言*乘法,单片机c语言教程:运算符和表达式(位运算符)
- Hadoop和HBase集群的JMX监控
- 工程师的基本功是什么?听听美团技术大咖怎么说
- APP定制开发:APP软件开发的语言和开发环境
- 基于SPI的OLED显示
- c语言提供了三种预处理命令,C语言提供的三种预处理命令
- wap网站服务器要求,使您的WEB服务器支持WAP数据发送
热门文章
- Macromedia Flash 8 Video Encoder安装
- 量子力学 计算机应用,有了九章计算机:但我们离量子力学还很远~
- DllRegisterServer调用失败
- 古建筑测绘任重道远,三维实景建模是唯一突破口?
- 物联网概论(IoT)_Chp5 物联网通信 Zigbee/蓝牙/UWB/WLAN/WiMax
- 四川托普计算机职业学校教务管理系统,四川托普信息技术职业学院教务处
- Linux Emacs 配置c++
- 脑洞啊!3D打印数字式日晷,原理简单,设计巧妙
- 音视频Share系列2---基于H.265的编码技术优化实战
- 微信数据解密-dat查看-免费dat转图片