C# 壓縮PDF文件
阿新 • • 發佈:2018-11-22
PDF文件是我們日常辦公中經常用到的文件,有時候PDF文件過大,就不利於傳輸和傳送。這篇文章將介紹如何使用C#和Spire.PDF元件壓縮PDF文件。
Spire.PDF中主要有兩種壓縮方式:一種是壓縮檔案內容,另一種是壓縮檔案中的圖片,其中壓縮圖片又分為降低圖片質量和直接壓縮兩種不同的方式。需要注意的是,針對不同的文件壓縮效果會有所區別,主要和pdf內容本身關係比較大,如文件中是文字較多還是圖片較多的效果都是不同的,可以根據自己的文件選擇相應的壓縮方式。
在使用以下程式碼前,需要:
1. 下載Spire.PDF,並從安裝路徑下引用Spire.Pdf.dll到應用程式
2. 引用名稱空間:
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Exporting;
using Spire.Pdf.Graphics;
壓縮內容
//載入PDF文件 PdfDocument doc = new PdfDocument("Test.pdf"); //禁用incremental update doc.FileInfo.IncrementalUpdate = false; //設定PDF文件的壓縮級別 doc.CompressionLevel = PdfCompressionLevel.Best; //儲存文件 doc.SaveToFile("Compressed.pdf");
壓縮圖片
方法一:降低圖片質量
//載入PDF文件 PdfDocument doc = new PdfDocument("Image.pdf"); //禁用incremental update doc.FileInfo.IncrementalUpdate = false; //遍歷文件所有頁面 foreach (PdfPageBase page in doc.Pages) { //提取頁面中的圖片 Image[] images = page.ExtractImages(); if (images != null && images.Length > 0) { //遍歷所有圖片 for (int j = 0; j < images.Length; j++) { Image image = images[j]; PdfBitmap bp = new PdfBitmap(image); //降低圖片的質量 bp.Quality = 20; //用壓縮後的圖片替換原文件中的圖片 page.ReplaceImage(j, bp); } } } //儲存文件 doc.SaveToFile("Output.pdf");
方法二:直接壓縮圖片
//載入PDF文件
PdfDocument doc = new PdfDocument("Image.pdf");
//禁用incremental update
doc.FileInfo.IncrementalUpdate = false;
//遍歷PDF頁面
foreach (PdfPageBase page in doc.Pages)
{
if (page != null)
{
if (page.ImagesInfo != null)
{
foreach (PdfImageInfo info in page.ImagesInfo)
{
//壓縮圖片
page.TryCompressImage(info.Index);
}
}
}
}
//儲存文件
doc.SaveToFile("Output1.pdf");