C#がPDFドキュメントを圧縮する


PDFドキュメントは、私たちの日常のオフィスでよく使用されている文書で、PDFドキュメントが多くて、転送と送信には不利です。この文章は、C#を使用することによって、C#を使用するために、PDFファイルを圧縮したPDFファイルをどのように使用するかを紹介します。

Spire.PDFには、主に2つの圧縮方式があります。1つは圧縮ファイルの内容を圧縮して、もう一つは圧縮ファイルの中の画像で、その中の圧縮画像はまた画像の品質と直接圧縮の2つの異なる方法に分けられます。注意しなければならないのは、異なる文書の圧縮効果については、主に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");

画像を圧縮する

方法1:画像の品質を低減する

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

方法2:画像を直接圧縮する

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