• 快速无损原样提取PDF文档中的图片


    网上已经有很多提取PDF文档图片的工具了,但是这些工具要么就是非常庞大,要么就是速度很慢,要么就是导出的图片失真,我对这些工具均不满意,因此为PDF补丁丁开发了快速、无损地提取PDF文档图片的功能。

    操作方式

    快速无损提取PDF文档图片的操作步骤如下。

    1. 选择“提取图片”功能。
    2. 在原始PDF文件中指定需要导出图片的PDF文件。
    3. 默认情况下,程序会自动指定输出图片的位置为名称与输入文件相同的目录。此外,也可以点击“输出图片位置”右方的“浏览”按钮,指定导出图片的位置。
    4. 最后一个步骤,就是点击“提取图片”按钮。之后,PDF文档里的图片就会被提取到指定的文件夹里面了。

    科普:PDF文档里的图片

    PDF文档支持嵌入图片,图片在PDF文档中称为“扩展对象”(XObject),一般以压缩的二进制流保存在文件中。被PDF格式所支持的点阵图片压缩算法有好几种,比较常见的是DCT(即JPEG图片的压缩算法)、Deflate(PNG图片的压缩算法)、LZW(GIF图片的压缩算法)、CCITTFax(TIFF黑白图片的压缩算法)、JBIG2(也是用于黑白图片的压缩算法)、JPEG2000(JPEG2000压缩算法),除此以外,还有一些不是太常见的压缩算法,因压缩率较低,所以较少被采用。

    在导出图片时,PDF补丁丁会自动根据不同的压缩方式,选择适当的图像格式导出,使导出的图片能被一般的图像处理程序处理。其中,对使用DCT和JPEG2000压缩的图片,基本是采用直接导出的方式,将流保存为JPG或J2K文件就可以了,而对采用Deflate、LZW压缩的图片,需要重新编码成PNG图片,对于采用CCITTFax和JBIG2压缩的图片,因后者不被常见的图像文件格式所支持,所以全部转换为TIF图片导出。

    有一些PDF文件的制作软件为了降低制作文件过程中的内存占用率,会将一张较大的图片裁成水平的一条条小图片,然后以“铺地板”的方式逐条逐条写入到PDF文件中去。导出这种文件的图片时,可选中“尝试合并相同页面的图片”选项。选中该选项后,PDF补丁丁会自动将一条条的图片合并回一张大图片。

    出于某些原因,某些PDF制作工具会“颠倒黑白”地写入黑底白字的PDF图片,然后在页面的渲染指令中再颠倒一次黑白,使图片正常地显示出来。遇到这种情况,PDF补丁丁导出的TIFF图片会变成黑底白字。这时候,可选择“反转黑白图片的颜色”选项,重新导出一次,黑底白字的图片就会还原为白底黑字了。

    有一次,有一位网友给我发了个电邮,抱怨PDF补丁丁会将前后两页的图片合并到一起,然后重复导出来两次,生成两份一模一样的文件。我让他把PDF文件传过来给我见识一下,发现实际情况上是这样的:PDF文件里,每张图片实际上均包含了两页的内容,而每幅图片均被两个页面共用。在显示的时候,奇数页面显示图片左半边的内容,偶数页面显示图片右半边的内容。PDF补丁丁只能原样导出嵌入在PDF文档的图片,是不会自动将图片裁成两半的。为了避免重复,可以在导出的页码范围中输入“1;3;5;7;9”之类的奇数页码,只导出奇数页面的图片,然后用图像处理工具将其剪裁成两个文件。

    对此功能的实现有兴趣的网友请留言。回帖人数达到30以上,今后撰专文讲解PDF文档结构。

  • 相关阅读:
    Angular基础(三) TypeScript
    Angular基础(二) 组件的使用
    Angular 2基础(一) 环境搭建
    Web API 方法的返回类型、格式器、过滤器
    WebAPI路由、参数绑定
    《ASP.NET MVC企业实战》(三)MVC开发前奏
    《ASP.NET MVC企业实战》(二) MVC开发前奏
    《ASP.NET MVC企业实战》(一) MVC开发前奏
    《Inside C#》笔记(完) 程序集
    巨杉数据库助力民生银行、广发银行前台智慧化业务
  • 原文地址:https://www.cnblogs.com/pdfpatcher/p/2682535.html
Copyright © 2020-2023  润新知