文檔中包含圖檔的話,會使得整個文檔比較大,占用存儲空間且不利于快速、高效的傳輸檔案。針對一些包含大量高質圖檔的pdf文檔,若是對圖檔進行壓縮,可以有效減少文檔的占用空間。并且,在文檔傳輸過程中也可以減少傳送時間,提高效率。本文将介紹2種通過c#來實作pdf圖檔文檔壓縮的方法。使用此方法,需要用到最新版本元件spire.pdf for .net3.9.462。下面是通過c#代碼來壓縮圖檔,進而實作整個pdf文檔壓縮的方法。
提示:編輯代碼前,需要安裝該元件,并添加引用dll檔案到項目程式中,同時添加指令。
方法一
using spire.pdf;
using system.drawing;
using spire.pdf.graphics;
using spire.pdf.exporting;
namespace compressimage_pdf
{
class program
static void main(string[] args)
//初始化一個pdfdocument類執行個體并加載一個pdf文檔
pdfdocument doc = new pdfdocument(@"c:\users\administrator\desktop\input.pdf");
//禁用增量更新
doc.fileinfo.incrementalupdate = false;
//周遊pdf所有頁,診斷頁面是否含有圖檔
foreach (pdfpagebase page in doc.pages)
if (page != null)
if (page.imagesinfo != null)
foreach (pdfimageinfo info in page.imagesinfo)
//調用方法trycompressimage()壓縮圖檔
page.trycompressimage(info.index);
}
//儲存文檔
doc.savetofile("output.pdf");
複制代碼
方法二
//周遊所有pdf頁,提取圖檔
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值,壓縮圖檔
bp.quality = 20;
//将壓縮後的圖檔替換原有圖檔
page.replaceimage(j, bp);
doc.savetofile("output2.pdf");
複制代碼(編輯:雷林鵬