问题:

  1. 当使用PDFLib把jpg转成pdf正常,把tif转pdf的时候就遇到了麻烦。如果tif是CCITT压缩格式则正常,如果是tif是jpg压缩或者lzw(其他压缩格式没有测试)  转换是速度就较慢了而且转出来的pdf文件大小比tif文件大了好几倍,分析原因可能是PDFLib中对于tif压缩格式的处理方式不同。通过设置compress参数也 未能解决。PDFLib: set_value() compress 压缩级别,从0代表无压缩,1代表最快速度等至9代表最佳压缩。该参数不会影响以通过(passthrough) 模式处理的图像数据。默认值:6。范围:页面、文档。
  2. 当使用ImageEn 3.0.0中的ImageEnIO来把jpg转成pdf时的速度比使用PDFLib逊色多了,如果是使用ImageEnIO来把tif转成pdf则速度比PDFLib块。
  3. 使用ImageEnIO转换pdf时候需要设置ImageEnIO.Params.PDF_PaperWidth和ImageEnIO.Params.PDF_PaperHeight参数(默认值width=595 height=842 (A4幅面),但是实际需要转换的jpg或者tif的尺寸不是A4、A3...等幅面的标准尺寸导致转换出来的pdf有白边。

解决方法:

  1. 问题1和2综合起来的解决方法就是把jpg转pdf时使用PDFLib,把tif转pdf时使用ImageEnIO。
  2. .问题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遇到的问题和解决方法相关推荐

  1. 极速pdf文件打印时此计算机未连接到网络,极速PDF阅读器常见问题及解决方法

    原标题:极速PDF阅读器常见问题及解决方法 极速PDF阅读器是日常办公常用的一款PDF阅读软件,有些人在使用过程中难免遇到一些问题不知道如何解决.下面汇总了几个常见问题并附解决方案,希望能够帮助到你. ...

  2. word转pdf后书签目录失效解决方法

    word转pdf后书签目录失效解决方法 安装Acrobat和AutoBookmark,Acrobat自己上网找,AutoBookmark链接放下面 链接: https://pan.baidu.com/ ...

  3. 万兴PDF文件编辑失败的解决方法

    有些人在安装Wondershare PDFelement之后,会出现PDF编辑失败的情况,怎样解决万兴PDF在Mac上编辑PDF失败的问题? 解决方法如下: 如果您的PDF文件是正常文件,可以单击&q ...

  4. PDF合并后的PDF页面大小不一的解决方法

    一.问题描述 不同的pdf文件进行合并之后,有时会出现页面大小不一的情况,尤其是在文件和图片进行pdf合并的时候,由于原pdf分辨率与图片分辨率不同导致的. 二.解决方法 ctrl+p 选择打印到pd ...

  5. word转换成PDF后图片模糊的解决方法(究极方法)

    在visio中使用visio工具画的图,添加到word中,无论什么方式输出为PDF文件,在PDF中都是清晰的矢量图,而遇到以下几种情况时,word转为PDF图片会变模糊. 一.模糊情况 ①将png.j ...

  6. arXiv pdf下载很慢的解决方法

    命令行直接下载: arxiv 上的论文使用wget下载时需要加参数–user-agent=Lynx,速度才能较快: wget --user-agent=Lynx https://arxiv.org/p ...

  7. win10自带的Edge浏览器打不开PDF文件和网页的解决方法

    最近Microsoft Edge 打不开PDF文件和网页,用了一个简单高效的方法. 1.键盘操作Win+X,或右击[开始]键: 2.选择"命令提示符(管理员)": 3.在弹出的框中 ...

  8. pdf文件无法注释的解决方法

    1.文档被加密 打开文档之后,点击 文件 -> 文档属性 -> 安全,看文档是否加密,如下图所示: 可以看到,文档被加密,使用解密软件解密即可. 2.PDF/A文档规范 如果阅读的PDF文 ...

  9. 在kindle阅读PDF的较好的解决方法

    蓝桥杯给了一个kindle,然而我看的书大多数是pdf的,直接放上去效果很不好,就找了这个教程,也算能凑合看了,当然还是花钱买的书看起来更舒服. 因为KINDLE对PDF扫描文档的渲染.对比度.读取等 ...

  10. AD17原理图导出PDF异常-PIN脚网络丢失解决方法

    没处理前的PDF,引脚网络丢失 解决方法 效果:

最新文章

  1. MIT开发的一款最新Chrome插件,功能远超OCR软件,可快速识别和复制图中文字
  2. JavaScript Math和Number对象
  3. 通过Easy-UI 树插件实现ArcGIS多个服务图层的图层控制
  4. 一级建造师考试通过了 !
  5. java日志使用_使用Java 8防止日志过宽
  6. python工厂模式 理解_浅谈Python设计模式 - 抽象工厂模式
  7. 轻松理解牛顿迭代法且用其求平方根
  8. 拉格朗日乘子法的通俗理解
  9. css 实现兼容各浏览器的渐变效果
  10. Kafka架构及基本原理简析
  11. 斯坦福NLP笔记6 —— Defining Minimum Edit Distance
  12. 计算机历史人物-随笔
  13. 2021夏令营全记录·华科计算机、中科院网络中心、中科院软件所、浙软
  14. 单片机c语言*乘法,单片机c语言教程:运算符和表达式(位运算符)
  15. Hadoop和HBase集群的JMX监控
  16. 工程师的基本功是什么?听听美团技术大咖怎么说
  17. APP定制开发:APP软件开发的语言和开发环境
  18. 基于SPI的OLED显示
  19. c语言提供了三种预处理命令,C语言提供的三种预处理命令
  20. wap网站服务器要求,使您的WEB服务器支持WAP数据发送

热门文章

  1. Macromedia Flash 8 Video Encoder安装
  2. 量子力学 计算机应用,有了九章计算机:但我们离量子力学还很远~
  3. DllRegisterServer调用失败
  4. 古建筑测绘任重道远,三维实景建模是唯一突破口?
  5. 物联网概论(IoT)_Chp5 物联网通信 Zigbee/蓝牙/UWB/WLAN/WiMax
  6. 四川托普计算机职业学校教务管理系统,四川托普信息技术职业学院教务处
  7. Linux Emacs 配置c++
  8. 脑洞啊!3D打印数字式日晷,原理简单,设计巧妙
  9. 音视频Share系列2---基于H.265的编码技术优化实战
  10. 微信数据解密-dat查看-免费dat转图片