文檔中包含圖片的話,會使得整個文檔比較大,佔用存儲空間且不利於快速、高效的傳輸文件。針對一些包含大量高質圖片的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");
}
}
}
方法二
using Spire.Pdf;
using System.Drawing;
using Spire.Pdf.Graphics;
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)
{
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");
}
}
}
針對包含大量高質圖片的PDF文檔,以上方法可以有效壓縮文檔,並且不會出現市面上壓縮軟件在壓縮文檔時存在的廣告水印或者破壞源文檔的情況。方法介紹到此,如果對您有用,歡迎轉載(轉載請註明出處)。
(本文完)