PDF文件压缩最优方案!使用Aspose不影响文件质量

Aspose 同时被 3 个专栏收录
196 篇文章 2 订阅
230 篇文章 1 订阅
274 篇文章 0 订阅

不同的组织使用PDF文件进行安全且有组织的信息交换。但是,有时由于嵌入的内容(例如图像,视频,绘图等),PDF文件的大小会变得很大。

在这种情况下,可以轻松优化或压缩此类PDF文件大小,而不会影响质量。让我们探索以下PDF大小压缩和优化方案,您可以将其合并到Java应用程序中:

  • 使用Java优化Web的PDF文档
  • 使用Java优化或压缩包含图像的PDF的大小
    • 使用Java缩小,压缩和调整所有图像的大小
    • 删除嵌入式字体,未使用的流并链接重复的流
  • 使用Java缩小或压缩PDF文档大小
    • 使用Java删除或展平注释以减小大小
    • 删除表单字段以使用Java最小化PDF文件大小
    • 使用Java将RGB颜色空间转换为灰度以进行PDF压缩和优化

目前,Java版Aspose.PDF升级到v20.9版,优化转换为JPG的时间过长问题,增强PDF到DOCX转换功能,修复PDF到HTML的转换等诸多bug问题,感兴趣的朋友可点击下载

使用Java优化Web的PDF文档

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

  • 开源PDF文件
  • 调用PDF优化的 optimize method
  • 保存输出的PDF文件

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

// Open document
Document pdfDocument = new Document("Original.pdf");

// Optimize for web
pdfDocument.optimize();

// Save output document
pdfDocument.save("Optimized_output.pdf");

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

在这里,我们将主要讨论PDF文件包含大量图像因而尺寸巨大的情况。例如,一个PDF文件,其中包含不同型号飞机的图纸以及有关每个零件(次要或主要)的信息,这些信息作为所有组件的图像或图片包含在内。此外,许多专业文档可能包含图像作为文件的主要工件。

在这种情况下,我们可以使用以下方法压缩PDF文件:

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

您可以通过缩小,压缩和调整图像大小来最小化包含许多图像的PDF文件的大小。由于我们现在打算缩小图片中的大多数文件大小,因此文件大小的改进可能会很明显。您需要按照以下步骤来缩小,压缩和调整PDF文件中的图片或图像的大小:

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

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

// Load input document
Document doc = new Document(dataDir + "Test.pdf");

// Initialize OptimizationOptions object
OptimizationOptions opt = new OptimizationOptions();

// Enable image compression
// Set the quality and resolution of images in PDF file
opt.getImageCompressionOptions().setCompressImages(true);
opt.getImageCompressionOptions().setImageQuality(10);
opt.getImageCompressionOptions().setMaxResolution(150);
opt.getImageCompressionOptions().setResizeImages(true);
doc.optimizeResources(opt);

// Save the updated file
doc.save(dataDir + "compressingPDFWithImages_out.pdf");

②使用Java删除嵌入式字体,未使用的流并链接重复的流

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

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

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

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

// Either
// Unembed all fonts in PDF
opt.setUnembedFonts(true);

//OR
// only keep embedded fonts for used characters
opt.setSubsetFonts(true);

// link duplicate streams
opt.setLinkDuplcateStreams(false);

// Remove unused streams
opt.setRemoveUnusedStreams(false);

// Remove unused objects
opt.setRemoveUnusedObjects(false);

doc.optimizeResources(opt);

// Save the updated file
doc.save(dataDir + "compressingPDF.pdf");

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

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

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

PDF文件可以包含很多注释。例如,水印,注释,形状等。如果不再需要注释,则可以将其删除;如果不需要进一步的更改,则可以对其进行注释。请按照以下步骤删除或展平注释以优化PDF文件大小:

  • 开源PDF文档
  • 遍历每个页面
  • 展平或删除注释
  • 保存输出的PDF文档

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

// Open document
Document pdfDocument = new Document(dataDir + "OptimizeDocument.pdf");

// Iterate through each page and annotation
for (Page page : pdfDocument.getPages())
{
    for (Annotation annotation : page.getAnnotations())
    {
        // Either flatten the annotation
        annotation.flatten();
        
        // OR delete the annotation
        // page.getAnnotations().delete(annotation);        
    }
}
// Save optimized PDF document
pdfDocument.save(dataDir + "OptimizeDocument_out.pdf");

②删除表单字段以使用Java最小化PDF文件大小

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

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

// Flatten Form fields
if (doc.getForm().getFields().length > 0)
{
    for (Field item : doc.getForm().getFields())
    {
        item.flatten();
    }
}

dataDir = dataDir + "FlattenForms_out.pdf";
// Save the updated document
doc.save(dataDir);

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

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

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

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

// Load input PDF document
Document document = new Document("input.pdf");

// Initialize RgbToDeviceGrayConversionStrategy instance
RgbToDeviceGrayConversionStrategy strategy = new RgbToDeviceGrayConversionStrategy();
for (int idxPage = 1; idxPage <= document.getPages().size(); idxPage++) { Page page = document.getPages().get_Item(idxPage); // Convert color space of each page to Greyscale strategy.convert(page); } // Save output PDF document document.save("output.pdf");

如果您有任何疑问或需求,请随时加入Aspose技术交流群(642018183),我们很高兴为您提供查询和咨询。

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

Lee-Shyllen

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值