处理 PDF 以减少文件大小/和/或复杂性

Posted

技术标签:

【中文标题】处理 PDF 以减少文件大小/和/或复杂性【英文标题】:Processing PDFs to reduce file size / and or complexity 【发布时间】:2011-06-02 02:23:19 【问题描述】:

我有需要准备在移动设备上查看的 PDF 文件。最坏的情况是大约 50 页,有很多全彩色图像和矢量艺术,文件大小约为。 40MB。这对于在宽带上观看 PC 来说是可以接受的,但对于移动观看来说不是很好,因为下载时间长并且在移动设备上滚动非常滞后(至少在我的超频 Droid 上)。是否有任何工具或库用于处理文件以简单地处理矢量内容、下采样/重新压缩图像之类的东西?

pdf 格式的输出不是绝对必要的,但它需要在无需下载软件的情况下在 androidios 设备上可读。

【问题讨论】:

您对源文档有控制权吗?如果您必须处理图像,我认为 PDF 将是一个真正的难题。 并非如此。它们来自我们的发布系统。 你看过PDF优化器(help.adobe.com/en_US/Acrobat/8.0/Professional/…)吗? 【参考方案1】:

有几个主要因素会导致移动设备上的 PDF 变大:

高分辨率图片(低分辨率就足够了) 嵌入式字体(没有它们,内容仍然“足够好”可读) 当前版本/视图(某些对象的旧版本)不再需要 PDF 内容 嵌入式 ICC 配置文件 嵌入的第三方文件(使用 PDF 作为容器) 嵌入式作业单(用于打印) 嵌入式javascript 还有更多

FOSS 软件: Ghostscript 可以尝试缩小 PDF 的大小,主要是对使用的图片进行重新采样,并删除旧版本(“世代”)的 PDF 对象,这些对象被新版本替换那些:

gswin32c.exe ^
  -o sized-down.pdf ^
  -sDEVICE=pdfwrite ^
  -dPDFSETTINGS=/ebook ^
  -dEmbedAllFonts=false ^
  -c ".setpdfwrite <</AlwaysEmbed [ ]>>" ^
  -f blown-up.pdf

您可以在上面的命令行中添加更多参数,以进一步缩小某些 PDF(例如,通过设置较低的最大分辨率等)。下面是一个示例,将彩色和灰度图像的下采样强制为 72dpi:

gswin32c.exe ^
  -o sized-down.pdf ^
  -sDEVICE=pdfwrite ^
  -dPDFSETTINGS=/ebook ^
  -dEmbedAllFonts=false ^
  -dColorImageDownsampleThreshold=1.0 ^
  -dColorImageDownsampleType=/Average ^
  -dColorImageResolution=72 ^
  -dGrayImageDownsampleThreshold=1.0 ^
  -dGrayImageDownsampleType=/Average ^
  -dGrayImageResolution=72 ^
  -c ".setpdfwrite <</AlwaysEmbed [ ]>>" ^
  -f blown-up.pdf

商业+闭源软件:callas pdfToolbox4 能够通过将自定义配置文件应用于 PDF 缩小过程(它甚至可以取消嵌入字体和 ICC 配置文件)来进一步减小文件大小。


更新 2:另请参阅以下(新)问题及其答案:

How can I remove all images from a PDF?

它提供了一些示例 PostScript 代码,可以从 PDF 中完全删除所有(光栅)图像,而页面布局的其余部分保持不变。这在您不需要(光栅)图像而只需要文本部分以减小文件大小的情况下很有用。

【讨论】:

【参考方案2】:

Adobe Acrobat Professional 有两个用于优化 PDF 文件的内置工具:

“PDF Optimizer” - http://www.adobe.com/designcenter/acrobat/articles/acr7optimize.html,它将简化矢量并删除不需要的内容(除其他外)

“优化扫描的 PDF”-http://help.adobe.com/en_US/Acrobat/9.0/Standard/WS58a04a822e3e50102bd615109794195ff-7f71.w.html#WS0BEFAC0B-47D9-47b8-9AF8-4DE2FE9C9736.w,这将下采样并压缩嵌入的光栅图像。

两者都是我使用过的最好的工具。然而,大多数 PDF 优化工具的重点是减小文件大小而不是提高渲染速度。

如果您想大幅提高设备上的渲染性能,您应该考虑将 PDF 预渲染为位图图像。如果您在光栅化之前将它们放大一点(以允许在设备上缩放)并坚持索引配色方案,您应该能够为每个页面生成可接受文件大小和分辨率的光栅。与矢量内容相比,它们在设备上的绘制速度要快得多。

【讨论】:

【参考方案3】:

Acrobat 中有一些选项可以减小图像大小并提高 PDF 文件大小/速度。你看过这个选项吗?

【讨论】:

这些 PDF 是由专有的发布系统生成的,由于我们要处理的文件量很大,人工干预是不切实际的。 您可能还想看看它们是否真的是为打印而创建的。我们与各种出版商一起对 PDF 文件做了很多工作,生成的 PDF 文件是 CMYK,这会很慢/很大。【参考方案4】:

您是否计划让用户将 PDF 文件存储在手机上以供离线查看?如果没有,您可以将 PDF 文件批量转换为 HTML 吗?您还可以对任何图像进行后处理以降低质量/文件大小。

转换器的一些选项包括:

通过电子邮件将 PDF 链接或实际 PDF 发送至 pdf2html@adobe.com。您将收到 PDF 的 HTML 版本。有关Adobe site 的更多信息 使用独立软件,例如pdf995 或pdf2html 使用商业 Adob​​e Acrobat 插件,例如LD-Converter

我确信还有更多选项可以执行转换。

作为一个外部赌注,您是否尝试过使用 google 在线 reader 从手机上查看您的 PDF?

【讨论】:

【参考方案5】:

前段时间(几年)我曾经通过将 PDF 转换为 djvu(例如,通过 http://any2djvu.djvuzone.org/ 或本地安装的免费命令行工具)来减小 PDF 的大小。结果非常好(小)。

当时,AFAIK,PDF 不包括对大小效率与 djvu 相同的编码的支持,但现在我被告知 PDF 格式已包含与 djvu 一样好的编码。因此,必须有工具可以对 PDF 进行类似的良好优化。寻找他们。

或者您可以分发 djvus,但我不确定您的操作系统中是否预装了 djvu 阅读软件。

【讨论】:

【参考方案6】:

它需要在没有软件下载的情况下在 android 和 iOS 设备上可读。

您可以使用 k2pdfopt 等工具对 PDF 进行预处理。

它把这个 ===================> 改成这样:

______

来自its sources,项目于2012年开始。

【讨论】:

以上是关于处理 PDF 以减少文件大小/和/或复杂性的主要内容,如果未能解决你的问题,请参考以下文章

使用 iTextSharp 突出显示文本减少对 PDF 文件大小的影响

云展网教程 | PDF优化教程:如何减少PDF的大小,同时又能保证PDF放大的清晰度

在 URL 后添加文件大小或散列以获得正确的缓存

PDF大小如何压缩?

如何以与文件夹中相同的顺序附加带有 pdf 文件名、大小和描述的 helloworld.txt(按修改时间排序)?

减少 Android Studio 项目大小