這個 C# 庫為開發人員提供了以編程方式快速有效地壓縮 PDF 文檔的能力。輕鬆獲得優化的 PDF 輸出,以便通過網絡進行打印、存檔或共享。它是一個用於 C# 的獨立 PDF 文檔處理解決方案,不需要安裝任何第三方軟件。
我們的產品為 C# 開發人員提供了一個集成的 API,以減小 PDF 文件的大小。 PDF 壓縮分兩次執行。在第一遍中,PDF 的所有頁面都轉換為圖像格式。我們的產品使用自適應和高效的圖像壓縮算法,使開發人員能夠獲得緊湊的 PDF 輸出,同時保持文檔的最佳質量。在下一輪中,圖像序列被壓縮並組合成一個新的、優化的 PDF 文件的內容。
'Aspose.Words for .NET' 使 PDF 壓縮變得容易。以下示例演示如何在 C# 中減小 PDF 文件的大小:
dotnet add package Aspose.Words
複製
using Aspose.Words;
using Aspose.Words.Pdf2Word.FixedFormats;
using var pdfStream = File.OpenRead("Input.pdf");
var renderer = new PdfFixedRenderer();
var pdfReadOptions = new PdfFixedOptions
{
ImageFormat = FixedImageFormat.Jpeg,
JpegQuality = 50
};
const double maxPageDimension = 1584;
var pagesStream = renderer.SavePdfAsImages(pdfStream, pdfReadOptions);
var builder = new DocumentBuilder();
for (var i = 0; i < pagesStream.Count; ++i)
{
// 設置最大頁面大小以避免當前頁面圖像縮放。
var pageSetup = builder.PageSetup;
SetPageSize(pageSetup, maxPageDimension, maxPageDimension);
var pageImage = builder.InsertImage(pagesStream[i]);
SetPageSize(pageSetup, pageImage.Width, pageImage.Height);
pageSetup.TopMargin = 0;
pageSetup.LeftMargin = 0;
pageSetup.BottomMargin = 0;
pageSetup.RightMargin = 0;
if (i != pagesStream.Count - 1)
builder.InsertBreak(BreakType.SectionBreakNewPage);
}
var saveOptions = new PdfSaveOptions
{
CacheBackgroundGraphics = true
};
builder.Document.Save("Output.pdf", saveOptions);
private void SetPageSize(PageSetup pageSetup, double width, double height)
{
pageSetup.PageWidth = width;
pageSetup.PageHeight = height;
}
using Aspose.Words;
var doc = new Document("Input.pdf");
doc.Cleanup();
var nodes = doc.GetChildNodes(NodeType.Shape, true);
foreach (Shape shape in nodes)
{
if (shape.IsImage)
{
// 由開發人員選擇用於圖像壓縮的庫。
using var image = Image.FromStream(shape.ImageData.ToStream());
// ...
// 壓縮圖像並將其設置回形狀。
shape.ImageData.SetImage("yourCompressedImage");
}
}
var saveOptions = new PdfSaveOptions
{
CacheBackgroundGraphics = true
};
doc.Save("Output.pdf", saveOptions);
using Aspose.Words;
var doc = new Document("Input.pdf");
doc.Cleanup();
var nodes = doc.GetChildNodes(NodeType.Shape, true);
foreach (Shape shape in nodes)
{
if (shape.IsImage)
{
// 由開發人員選擇用於圖像壓縮的庫。
using var image = Image.Fromstream(shape.ImageData.ToStream());
// ...
// 壓縮圖像並將其設置回形狀。
shape.ImageData.SetImage("yourCompressedImage");
}
}
doc.Save("Output.pdf");
using Aspose.Words;
var doc = new Document("Input.pdf");
doc.Cleanup();
var nodes = doc.GetChildNodes(NodeType.Shape, true);
foreach (Shape shape in nodes)
{
if (shape.IsImage)
{
// 由開發人員選擇用於圖像壓縮的庫。
using var image = Image.FromStream(shape.ImageData.ToStream());
// ...
// 壓縮圖像並將其設置回形狀。
shape.ImageData.SetImage("yourCompressedImage");
}
}
var saveOptions = new OoxmlSaveOptions
{
CompressionLevel = CompressionLevel.Maximum
};
doc.Save("Output.pdf", saveOptions);
using Aspose.Words;
var doc = new Document();
var builder = new DocumentBuilder(doc);
var shape = builder.InsertImage("Input.pdf");
var saveOptions = new ImageSaveOptions(SaveFormat.Pdf)
{
};
shape.GetShapeRenderer().Save("Output.pdf", saveOptions);
using Aspose.Words;
using Aspose.Words.Pdf2Word.FixedFormats;
using var pdfStream = File.OpenRead("Input.pdf");
var renderer = new PdfFixedRenderer();
var pdfReadOptions = new PdfFixedOptions
{
ImageFormat = FixedImageFormat.Jpeg,
JpegQuality = 50
};
const double maxPageDimension = 1584;
var pagesStream = renderer.SavePdfAsImages(pdfStream, pdfReadOptions);
var builder = new DocumentBuilder();
for (var i = 0; i < pagesStream.Count; ++i)
{
// 設置最大頁面大小以避免當前頁面圖像縮放。
var pageSetup = builder.PageSetup;
SetPageSize(pageSetup, maxPageDimension, maxPageDimension);
var pageImage = builder.InsertImage(pagesStream[i]);
SetPageSize(pageSetup, pageImage.Width, pageImage.Height);
pageSetup.TopMargin = 0;
pageSetup.LeftMargin = 0;
pageSetup.BottomMargin = 0;
pageSetup.RightMargin = 0;
if (i != pagesStream.Count - 1)
builder.InsertBreak(BreakType.SectionBreakNewPage);
}
var saveOptions = new PdfSaveOptions
{
CacheBackgroundGraphics = true
};
builder.Document.Save("Output.pdf", saveOptions);
private void SetPageSize(PageSetup pageSetup, double width, double height)
{
pageSetup.PageWidth = width;
pageSetup.PageHeight = height;
}
在您的系統上 "Aspose.Words for .NET" 有三個備選選項。請選擇符合您需求的一種,並按照分步說明進行操作:
我們的產品完全跨平台,支援所有主要的 .NET 實作:
由於 .NET 程式碼不依賴底層硬體或作業系統,而僅依賴虛擬機,因此您可以自由地為 Windows、macOS、Android、iOS 和 Linux 開發任何類型的軟體。只要確保您已安裝對應版本的.NET Framework, .NET Core, Windows Azure, Mono或Xamarin即可。
我們建議使用 Microsoft Visual Studio、Xamarin 和 MonoDevelop 整合開發環境來建立C#, F#, VB.NET應用程式。
更多詳細資訊請參閱產品文件。