1. 程式人生 > >C# 壓縮PDF文件

C# 壓縮PDF文件

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");