不同的组织使用 PDF 文件进行安全和有组织的信息交换。但是,有时 PDF 文件会因为图像、视频、绘图等嵌入内容而变得巨大。您可以轻松优化或压缩这样的 PDF 文件大小,而不会影响质量。让我们探索以下可以合并到 Java 应用程序中的 PDF 大小压缩和优化方案:

PDF 大小优化和压缩 API – 安装

您可以利用 Aspose.PDF for Java API 的高效可靠的例程来优化或压缩大尺寸 PDF 文件,同时保持相同的质量。您可以从 Downloads 或项目中的 Maven 配置 下载 JAR 文件。

使用 Java 优化 Web 的 PDF 文档

当您需要在网页中使用 PDF 文档时,可以对其进行优化。此优化有助于尽快显示 PDF 文档的第一页。您可以按照以下步骤获得优化的 PDF 文件:

  1. 开源 PDF 文件
  2. 调用优化方法进行PDF优化
  3. 保存输出 PDF 文件

下面的代码片段是如何在 Java 环境中优化 Web 的 PDF 文档的示例:

// 打开文档
Document pdfDocument = new Document("Original.pdf");

// 网络优化
pdfDocument.optimize();

// 保存输出文档
pdfDocument.save("Optimized_output.pdf");

使用 Java 压缩或优化包含图像的 PDF 的大小

在这里,我们将主要讨论 PDF 文件包含大量图像且体积巨大的场景。例如,一个 PDF 文件,其中包含不同型号飞机的图纸以及每个部件(次要或主要部件)的信息,包括所有部件的图像或图片。此外,许多专业文档可能包含图像作为文件的主要工件。在这种情况下,我们可以通过以下方法压缩 PDF 文件:

使用 Java 缩小、压缩和调整所有图像的大小

您可以通过缩小、压缩和调整图像大小来最小化包含许多图像的 PDF 文件的大小。大小的改进可能很明显,因为大部分文件大小都被我们现在打算缩小的图片所覆盖。您需要按照以下步骤来缩小、压缩和调整 PDF 文件中的图片或图像的大小:

  1. 加载输入 PDF 文件
  2. 初始化 OptimizationOptions 对象
  3. 设置图像质量和分辨率
  4. 调用 optimizeResources 方法
  5. 保存输出的 PDF 文档

下面的代码片段显示了如何使用 Java 缩小或压缩图像以减小和最小化 PDF 文件大小:

// 加载输入文档
Document doc = new Document(dataDir + "Test.pdf");

// 初始化 OptimizationOptions 对象
OptimizationOptions opt = new OptimizationOptions();

// 启用图像压缩
// 设置 PDF 文件中图像的质量和分辨率
opt.getImageCompressionOptions().setCompressImages(true);
opt.getImageCompressionOptions().setImageQuality(10);
opt.getImageCompressionOptions().setMaxResolution(150);
opt.getImageCompressionOptions().setResizeImages(true);
doc.optimizeResources(opt);

// 保存更新的文件
doc.save(dataDir + "compressingPDFWithImages_out.pdf");

使用 Java 删除嵌入式字体、未使用的流和链接重复的流

当您需要减小 PDF 文件大小时,每个字节都很重要。嵌入式字体可以通过不同的方法帮助减小文件大小。例如,您可以取消嵌入所有字体,也可以仅保留 PDF 文件中使用的字体字符子集。这将是部分取消嵌入的字体,这仍然有助于最小化文件大小。此外,您可以删除未使用的流或链接重复的流以节省更多空间。这些 PDF 优化将大大减少文件大小。您需要按照以下步骤优化和减小 PDF 文件大小:

  1. 加载输入的 PDF 文档
  2. 初始化 OptimizationOptions 类对象
  3. 取消嵌入所有字体或字体子集
  4. 链接重复的流
  5. 删除未使用的流

以下代码详细说明了如何压缩 PDF 文件以优化、减小和最小化 PDF 文档的大小:

Document doc = new Document(dataDir + "Test.pdf");
OptimizationOptions opt = new OptimizationOptions();

// 任何一个
// 取消嵌入 PDF 中的所有字体
opt.setUnembedFonts(true);

//或者
// 仅保留已使用字符的嵌入字体
opt.setSubsetFonts(true);

// 链接重复的流
opt.setLinkDuplcateStreams(false);

// 删除未使用的流
opt.setRemoveUnusedStreams(false);

// 删除未使用的对象
opt.setRemoveUnusedObjects(false);

doc.optimizeResources(opt);

// 保存更新的文件
doc.save(dataDir + "compressingPDF.pdf");

到目前为止,我们主要讨论了带有图像的 PDF 文件的优化方法。现在让我们继续进行一些 PDF 优化的方法。

使用 Java 压缩或减小 PDF 文档大小

PDF 文件通常包含共同占用空间的注释、可编辑的表单域和颜色伪影。让我们探索以下压缩 PDF 文件大小的过程。

使用 Java 删除或展平注释以减小大小

PDF 文件可以包含很多注释。例如,水印、评论、形状等。如果不再需要注释,您可以删除它们,如果不需要进一步更改,可以加肥注释。请按照以下步骤删除或展平注释以优化 PDF 文件大小:

  1. 开源 PDF 文档
  2. 遍历每一页
  3. 展平或删除 注解
  4. 保存输出的 PDF 文档

下面的代码片段是如何使用 Java 删除或展平 PDF 文档中的注释的示例:

// 打开文档
Document pdfDocument = new Document(dataDir + "OptimizeDocument.pdf");

// 遍历每个页面和注释
for (Page page : pdfDocument.getPages())
{
   for (Annotation annotation : page.getAnnotations())
    {
        // 要么展平注释
        annotation.flatten();
        
        // 或删除注释
        // page.getAnnotations().delete(注释);        
    }
}
// 保存优化的 PDF 文档
pdfDocument.save(dataDir + "OptimizeDocument_out.pdf");

使用 Java 删除表单域以最小化 PDF 文件大小

可填写的 PDF 表单在您需要大规模提交数据的情况下很常见。提交数据后,可以删除可填写的表单字段以优化和最小化 PDF 文件大小。您需要按照以下步骤删除表单字段:

  1. 加载输入的 PDF 文档
  2. 检查 PDF 文档中的表单域
  3. 遍历每个字段并将其展平
  4. 保存更新的压缩 PDF 文件
// 加载源 PDF 表单
Document doc = new Document(dataDir + "input.pdf");

// 展平表单字段
if (doc.getForm().getFields().length > 0)
{
   for (Field item : doc.getForm().getFields())
    {
        item.flatten();
    }
}

dataDir = dataDir + "FlattenForms_out.pdf";
// 保存更新的文档
doc.save(dataDir);

使用 Java 将 RGB 颜色空间转换为灰度以进行 PDF 压缩和优化

大多数 PDF 文件都包含文本内容,这些内容也可以在灰度色彩空间中很好地表示。此外,当目的和优先级是保存每个字节时,即使图像也可以转换为灰度,因为重点是存档数据。您可以按照以下步骤通过将 RGB 颜色空间转换为灰度来压缩和优化 PDF 文件大小:

  1. 访问源 PDF 文档
  2. 初始化 RgbToDeviceGrayConversionStrategy 实例
  3. 将每种颜色的颜色空间转换为灰度
  4. 保存输出优化的 PDF 文件

以下代码片段显示了如何通过更改 Java 环境中的颜色空间来压缩和优化 PDF 大小:

// 加载输入的 PDF 文档
Document document = new Document("input.pdf");

// 初始化 RgbToDeviceGrayConversionStrategy 实例
RgbToDeviceGrayConversionStrategy strategy = new RgbToDeviceGrayConversionStrategy();
for (int idxPage = 1; idxPage <= document.getPages().size(); idxPage++) {
	Page page = document.getPages().get_Item(idxPage);
        
        // 将每页的色彩空间转换为灰度
	strategy.convert(page);
}
// 保存输出 PDF 文档
document.save("output.pdf");

结论

在本文中,我们介绍了优化和压缩 PDF 文件以减小大小的不同方法和方法。首先,我们使用 Java 优化了 Web 的 PDF 文件大小。然后我们学习了对包含多个图像的 PDF 文件中的图像进行缩小、压缩和调整大小。此外,我们还探索了使用字体、流、注释、表单域以及将 PDF 文档的颜色空间转换为灰度,以便可以使用 Java 创建尺寸更小但质量相同的 PDF 文件。此外,如有任何与此主题相关的疑问,您可以通过免费支持论坛与我们联系。

也可以看看

信息:使用 Aspose 的新在线网络应用程序,您可以将一组图像转换为视频。您可能还想查看另一项服务,该服务从视频中提取声音