65.9K
CodeProject 正在变化。 阅读更多。
Home

压缩 PDF 文档以加快显示和方便存储

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2014年6月6日

CPOL

4分钟阅读

viewsIcon

35099

本白皮书描述了一种行之有效的方法,可以方便地压缩PDF文档,以减小其存储空间并加快其传输和显示速度。

引言

PDF格式是全球文档交换的首选媒介,无论是在PC、手机还是平板电脑上。但如果PDF的原始作者在创建时不够小心,PDF的文件大小可能会迅速膨胀。许多PDF都存在文件大小膨胀的问题,其大小远大于实际需要。这对用户的存储、传输和内容共享,以及公司和网站来说都带来了巨大的问题。

膨胀的PDF文档显示速度很慢,尤其是在在线或通过网络查看时,而且需要大量的处理能力。在大多数内容创建者都希望其文档具有移动友好性的时代,膨胀的PDF文档下载到移动设备的时间可能长到无法接受,并在显示时占用移动设备的处理能力。当数千或数百万个存储的PDF文件都大于其所需大小时,企业存储库就会超出其可用存储空间。

所有这些由PDF文档过大引起的问题都可以通过压缩PDF文档以达到最佳大小的技术有效解决。

本白皮书描述了一种行之有效的方法,可以方便地压缩PDF文档,以减小其存储空间并加快其传输和显示速度。

压缩是关键

大多数PDF膨胀是由于PDF文档中嵌入的图像造成的。许多PDF只不过是页页未压缩的扫描图像,这些图像会占用大量的空间。即使图像已经被压缩,它们通常仍然会占用比应有的空间多得多,因为使用了非最佳压缩方式。

除了压缩图像外,本白皮书中描述的方法还采取了其他途径来使文档更小。通过删除嵌入式缩略图、不需要的字体和元数据,以及通过对图像进行下采样,这种方法可以进一步减小PDF文档的大小。

虽然任何压缩PDF文档的方法都必须首先解决文件大小问题,但便利性也是一个因素。例如,如果您有一个包含过去十年数百万份扫描的医疗授权表格的存储库,那么重新扫描实际的纸质文件以获得更好的压缩效果是不切实际的。任何可行的解决方案不仅必须减小文件大小并保持文档质量,而且还必须方便地对大量文档进行单次操作。

一些解决方案的不足之处

尽管当今市场上有许多PDF压缩应用程序可用,但文档质量并不是它们的强项。许多应用程序使用开源PDF库编写,这些库又使用开源压缩器,这些压缩器通常可以完成任务,但往往是以牺牲质量和精度为代价的。生成的PDF文档较小,但不如它可能的小,并且文档的外观可能在这个过程中被显著降低。在评估PDF压缩选项时,务必同时考虑压缩比和压缩文档的质量。

Double Bracket: “When evaluating options for PDF compression, it’s important to consider both compression ratio and the quality of compressed documents.”

PDF压缩软件的另一个常见弱点体现在对使用除DeviceRGB以外的颜色空间的彩色图像进行压缩时。一些压缩应用程序只能处理DeviceRGB;这些应用程序通常将使用其他颜色空间的图像转换为DeviceRGB进行压缩,结果不可预测。PDF制作人员希望文档中的颜色看起来某种方式,而无缘无故地彻底改变预期的颜色空间在出版行业等同于亵渎。

某些PDF压缩工具的其他常见缺陷包括:输出损坏且存在可见错误;无法压缩安全PDF;对某些类型的文档的压缩失败,实际上使文件大小变大,而不是变小。

示例

为了展示通过有效压缩可以实现的目标,下面的代码示例调用了PDF Xpress,这是一个用于向应用程序添加PDF功能(包括创建、修改和压缩)的软件开发工具包。PDF Xpress可以正确处理除DeviceRGB以外的颜色空间,压缩安全文档,并避免PDF压缩应用程序中常见的其他问题。

PDF Xpress使您可以自定义压缩以满足您的需求。例如,直观的API允许您选择是否要针对灰度和彩色图像使用JPEG或JPEG2000压缩。该工具包对单色图像应用JBIG2压缩,并使您能够控制图像压缩的力度。无需任何自定义,PDF Xpress通常会自动选择并应用良好的压缩比,在大多数情况下都能产生视觉上无损的结果。它可以选择性地应用无损压缩。

以下直观的C#代码在PDF Xpress中打开一个PDF文档,压缩它,并将其另存为一个新的、更小的PDF文件。

   using (PdfXpress pdf = new PdfXpress())
      {
        pdf.Initialize();
 
        using (Document doc = new Document(pdf, "document.pdf"))
        {
          Accusoft.PdfXpressSdk.SaveOptions saveOptions = new Accusoft.PdfXpressSdk.SaveOptions();
          saveOptions.Compress = true;
          saveOptions.Linearized = true;
          saveOptions.Overwrite = true;
          saveOptions.Filename = "compressed.pdf";
 
          doc.Save(saveOptions);
        }
      }

摘要

PDF文档压缩是PDF工作流程中的一项流行功能,但它往往被误解,有时甚至被严重错误处理。为了确保有效的压缩和保持文档的质量,务必选择功能强大的PDF压缩工具,并使用自定义设置来满足您的内容管理目标的要求。

© . All rights reserved.