天天看點

C# 壓縮PDF圖檔

  文檔中包含圖檔的話,會使得整個文檔比較大,占用存儲空間且不利于快速、高效的傳輸檔案。針對一些包含大量高質圖檔的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");

  複制代碼(編輯:雷林鵬