我正在开发一个针对 .NET v8 的控制台应用程序。我正在使用 PDFsharp nuget package 来生成 PDF 文件。我使用下面的代码来压缩 75 KB 的 PDF 文件。 PDF 文件主要包含文本。
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using (var stream = new MemoryStream(File.ReadAllBytes("D:\\test.pdf")) { Position = 0 })
using (var source = PdfReader.Open(stream, PdfDocumentOpenMode.Import))
using (var document = new PdfDocument())
{
var options = document.Options;
options.FlateEncodeMode = PdfFlateEncodeMode.BestCompression;
options.UseFlateDecoderForJpegImages = PdfUseFlateDecoderForJpegImages.Automatic;
options.CompressContentStreams = true;
options.NoCompression = false;
options.EnableCcittCompressionForBilevelImages = true;
foreach (var page in source.Pages)
{
document.AddPage(page);
}
document.Save("D:\\testout.pdf");
}
我得到的输出文件大小为 73 KB。所以我只减少了 2 KB。有什么方法可以通过压缩来显着减小其大小吗?
启用
PdfFlateEncodeMode.BestCompression
通常会将大小减小约 2% 至 5%。
使用默认设置,内容已“压缩”。最佳压缩更有效,但速度更慢。
PDFsharp 尚不支持对象 XREF 流,因此其他库也许能够创建更小的文件而不会造成损失。