チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル».NET»Spire.PDF for .NET»文書操作»C#/VB.NET:PDF ファイルを圧縮する方法
2022-07-26

C#/VB.NET:PDF ファイルを圧縮する方法

大きな PDF ドキュメントは、電子メールで PDF ファイルを転送したい場合や、限られたストレージ容量のデバイスに PDF ファイルを保存したい場合など、すべての場合に適用されません。その時、PDF ファイルのサイズを圧縮することは、この問題を解決するための完璧な方法かもしれません。この記事では、Spire.PDF for .NET を使用して、C# および VB.NET でプログラムによって PDF ファイルを圧縮する方法を示します。

ここでは、画像、フィールド、コメント、ブックマーク、添付ファイル、埋め込みフォントを削除することによって PDF サイズを小さくすることには触れません。

Spire.PDF for .NET をインストールします

まず、Spire.PDF for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.PDF

PDF ファイルのコンテンツと画像を圧縮する

次の手順は、Spire.PDF for .NET を使用して PDFファイルを圧縮する方法を示しています

  • PdfDocument クラスのオブジェクトを作成する
  • PdfDocumentLoadFromFile() メソッドを使用して、PDF ドキュメントをロードする。 
  • PdfDocumentFileInfo.IncrementalUpdate の属性を false に設定して incremental update を無効にします。
  • 圧縮レベルを「最適」に設定して、ドキュメントのコンテンツを圧縮します。PdfCompressionLevel の例から他のいくつかのレベルを選択できます。
  • ドキュメント内のページをトラバースし、PdfImageHelper.GetImagesInfo() メソッドを使用して、各ページの画像情報セットを取得します。
  • コレクション内のすべてのアイテムをトラバースし、PdfImageHelperReplaceImage() メソッドを使用して、各ピクチャを圧縮ピクチャに置き換えます。
  • PdfDocumentSaveToFile() メソッドを使用して、ドキュメントを保存します。
  • C#
  • VB.NET
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
using Spire.Pdf.Utilities;

namespace CompressPdf
{
    class Program
    {
        static void Main(string[] args)
        {
            // PdfDocumentクラスのオブジェクトを作成する
            PdfDocument doc = new PdfDocument();

            // PDFファイルのロードする
            doc.LoadFromFile(@"sample.pdf");

            // incremental updateを無効にする
            doc.FileInfo.IncrementalUpdate = false;

            //圧縮レベルを最適に設定する
            doc.CompressionLevel = PdfCompressionLevel.Best;

            //ドキュメント内のページをループブラウズする
            foreach (PdfPageBase page in doc.Pages)
            {
                //PdfImageHelperのオブジェクトを作成する
                PdfImageHelper helper = new PdfImageHelper();

                //特定のページの画像情報セットを取得する
                PdfImageInfo[] imagesInfo = helper.GetImagesInfo(page);

                //コレクション内のすべてのアイテムをループブラウズする
                foreach (PdfImageInfo imageInfo in imagesInfo)
                {
                    //特定の画像を圧縮画像と一緒に配置する           
                    helper.ReplaceImage(imageInfo, CompressImage(imageInfo.Image));
                }

            }

            //ドキュメントを別のPDFファイルに保存する
            doc.SaveToFile("output.pdf");
            doc.Close();
        }

        //画質を低下させることで画像を圧縮する
        private static PdfBitmap CompressImage(Image img)
        {
            PdfBitmap newImage = new PdfBitmap(img);
            newImage.Quality = 10;
            return newImage;
        }
    }
}
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Drawing
Imports Spire.Pdf.Utilities
 
Namespace CompressPdf
    Class Program
        Shared  Sub Main(ByVal args() As String)
            ' PdfDocumentクラスのオブジェクトを作成する
            Dim doc As PdfDocument =  New PdfDocument() 
 
            ' PDFファイルのロードする
            doc.LoadFromFile("sample.pdf")
 
            ' incremental updateを無効にする
            doc.FileInfo.IncrementalUpdate = False
 
            '圧縮レベルを最適に設定する
            doc.CompressionLevel = PdfCompressionLevel.Best
 
            'ドキュメント内のページをループブラウズする
            Dim page As PdfPageBase
            For Each page In doc.Pages
                ' PdfImageHelperのオブジェクトを作成する
                Dim helper As PdfImageHelper =  New PdfImageHelper() 
 
                '特定のページの画像情報セットを取得する
                Dim imagesInfo() As PdfImageInfo =  helper.GetImagesInfo(page) 
 
                'コレクション内のすべてのアイテムをループブラウズする
                Dim imageInfo As PdfImageInfo
                For Each imageInfo In imagesInfo
                    '特定の画像を圧縮画像と一緒に配置する   
                    helper.ReplaceImage(imageInfo, CompressImage(imageInfo.Image))
                Next
 
            Next
 
            'ドキュメントを別のPDFファイルに保存する
            doc.SaveToFile("output.pdf")
            doc.Close()
            System.Diagnostics.Process.Start("output.pdf")
 
        End Sub
 
        '画質を低下させることで画像を圧縮する
        Private Shared Function CompressImage(ByVal img As Image) As PdfBitmap
            Dim NewImage As PdfBitmap =  New PdfBitmap(img) 
            NewImage.Quality = 10
            Return NewImage
        End Function
    End Class
End Namespace

C#/VB.NET:PDF ファイルを圧縮する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Read 353 times