Aspose.pdf C# 压缩pdf文件 pdf文件变大

如下代码:
Document pdfDocument = new Document(dataDir + “input.pdf”);
pdfDocument.OptimizeResources();
pdfDocument.Save(dataDir + “output.pdf”);

20MB的文件能压缩成30至40MB;

下列代码则直接报错内存溢出:
问题出在:PdfoptimizeOptions.ImageCompressionOptions.CompressImages = true;
注释掉这段代码就不会爆内存溢出 压缩的pdf文件也不大 只有5MB左右

// 加载 PDF 文件进行压缩
Document CompressPdfDocument = new Document(“document.pdf”);
// 优化PDF
OptimizationOptions PdfoptimizeOptions = new OptimizationOptions();
// 启用图像压缩
PdfoptimizeOptions.ImageCompressionOptions.CompressImages = true;
// 设置图像质量
PdfoptimizeOptions.ImageCompressionOptions.ImageQuality = 50;
// 应用优化
CompressPdfDocument.OptimizeResources(PdfoptimizeOptions);
// 保存压缩的 PDF
CompressPdfDocument.Save(“compressed.pdf”)

@bq1129

在使用Aspose.PDF进行PDF文件压缩时,您遇到的文件大小增加和内存溢出问题可能与图像压缩设置有关。根据您的描述,当您启用图像压缩时,文件大小反而增加,并且出现内存溢出错误。

以下是一些可能的解决方案和建议:

  1. 图像压缩设置:您提到在启用PdfoptimizeOptions.ImageCompressionOptions.CompressImages = true;时出现问题。您可以尝试调整图像质量设置,例如将ImageQuality设置为更高的值(如70或80),以查看是否能在压缩和文件大小之间找到更好的平衡。

  2. 使用Flate解码压缩:考虑使用Flate解码压缩方法来优化PDF文件。Flate解码压缩是一种有效的图像数据压缩方法,可以在保持质量的同时减少文件大小。您可以在优化选项中指定使用Flate编码来处理图像。

  3. 分步优化:如果文件仍然过大,您可以尝试分步优化PDF文件。首先,优化文本和其他资源,然后再单独处理图像压缩。这可以帮助您识别具体导致内存溢出的问题。

  4. 内存管理:确保您的应用程序有足够的内存可用来处理大文件。如果可能,增加应用程序的内存限制,或者在处理大文件时使用更高效的内存管理策略。

以下是一个示例代码,展示如何使用Flate解码压缩来优化PDF文件:

// 加载 PDF 文件进行压缩
Document pdfDocument = new Document("document.pdf");

// 初始化优化选项
OptimizationOptions optimizeOptions = new OptimizationOptions();

// 启用图像压缩并设置图像质量
optimizeOptions.ImageCompressionOptions.CompressImages = true;
optimizeOptions.ImageCompressionOptions.ImageQuality = 70; // 调整图像质量

// 应用优化
pdfDocument.OptimizeResources(optimizeOptions);

// 保存压缩的 PDF
pdfDocument.Save("compressed.pdf");

请尝试这些建议,并根据您的具体需求进行调整。如果问题仍然存在,您可能需要进一步检查PDF文件的内容和结构,以确定是否有特定的元素导致了内存溢出或文件大小增加。

希望这些信息能帮助您解决问题!

没实质性的回复,这样的回复完全没有任何意义

@bq1129

您是否尝试过使用最新版本的 API?您能否与我们分享您的示例 PDF 文档,以便我们在我们的环境中测试该场景并相应地解决它?

Aspose.PDF 版本号:23.1.0
附件中为需要压缩的pdf文件
image.png (3.2 KB)
文件上传不上去
image.png (4.1 KB)

@bq1129

您可以将文件上传到 Google Drive 或其他公共文件共享服务并与我们分享链接。我们将在我们的环境中测试该场景并相应地解决它。此外,在共享文件之前,请尝试使用 25.2 版本。