C# または VB.NET プログラムで PDF 文書のサイズを圧縮する方法

## はじめに
PDFのサイズは、ファイルのアップロード、送信、保存の速度に影響するだけでなく、場合によっては大量のハードディスク容量を占有することもあります。そのため、PDFを圧縮して文書をより効果的に保存または管理することができます。圧縮する際には、フォントと高品質画像がファイルサイズに影響する主要な要素です。したがって、フォントリソースと画像品質を圧縮することで文書のサイズを減らすことが良い選択肢です。この記事では、.NETプログラムを使用してPDF文書を圧縮する方法を紹介しますが、内容は変更しません。サンプルコードにはC#とVB.NETが含まれています。
## ツール
* Visual Studio 2022
* [Free Spire.PDF for .NET](https://www.e-iceblue.com/Introduce/free-pdf-component.html)

このライブラリは、無料でPDFファイルを作成、編集、変換することができますが、ページ数の制限があります。または、有料版の製品の[無料トライアル](https://www.e-iceblue.com/TemLicense.html)を申し込むこともできます。
[Spire.PDF for .NET](https://www.e-iceblue.com/Introduce/pdf-for-net-introduce.html)
## インストール方法

1.[Free Spire.PDF for .NET](https://www.e-iceblue.com/Download/download-pdf-for-net-free.html)をダウンロードします。
2.Visual Studioで新しいプロジェクトを作成します。
3.「Solution Explorer」>「References」を右クリックし、「Add Reference」>「Browse」を選択します。
4.BINフォルダ内のdllファイルを見つけて、「OK」をクリックします。
## サンプルコード
このコードでは、**PdfCompressor**オブジェクトの**Options**プロパティを取得することで、テキスト圧縮オプションと画像圧縮オプションを取得できます。
テキスト圧縮オプションでは、**CompressFonts**プロパティをtrue/Trueに設定して、文書内のフォントを圧縮します。埋め込まれたフォントを解除する場合は、**UnembedFonts**プロパティをtrue/Trueに設定してください。
画像圧縮オプションでは、**ImageQuality**プロパティを設定して画像の圧縮品質を制御できます。例えば、**ImageQuality.High**に設定すると高品質な画像が得られます。同時に、**ResizeImages**プロパティをtrue/Trueに設定すると、画像のサイズを調整できます。**CompressImage**プロパティをtrue/Trueに設定すると、文書内の画像を圧縮することができます。
#### C#：
```c#
using Spire.Pdf;
using Spire.Pdf.Conversion.Compression;

namespace CompressPdf
{
    class Program
    {
        static void Main(string[] args)
        {
            // PdfCompressor オブジェクトの初期化し、PDF 文書をロードする
            PdfCompressor compressor = new PdfCompressor("Sample.pdf");

            //テキスト圧縮オプションを取得する
            TextCompressionOptions textCompression = compressor.Options.TextCompressionOptions;

            //フォントを圧縮する
            textCompression.CompressFonts = true;

            //フォントの埋め込みを解除する
            //textCompression.UnembedFonts = true;

            //画像圧縮オプションを取得する
            ImageCompressionOptions imageCompression = compressor.Options.ImageCompressionOptions;

            //圧縮画質を設定する
            imageCompression.ImageQuality = ImageQuality.High;

            //画像のサイズを変更する
            imageCompression.ResizeImages = true;

            //画像を圧縮する
            imageCompression.CompressImage = true;

            //圧縮された文書をPDFに保存する
            compressor.CompressToFile("Compressed.pdf");
        }
    }
}
```
### VB.NET:
```vb
Imports Spire.Pdf
Imports Spire.Pdf.Conversion.Compression

Namespace CompressPdf
    Class Program
        Shared  Sub Main(ByVal args() As String)

            'PdfCompressor オブジェクトの初期化し、PDF 文書をロードする
            Dim compressor As PdfCompressor =  New PdfCompressor("Sample.pdf")

            'テキスト圧縮オプションを取得する
            Dim textCompression As TextCompressionOptions =  compressor.Options.TextCompressionOptions

            'フォントを圧縮する
            textCompression.CompressFonts = True

            'フォントの埋め込みを解除する
            textCompression.UnembedFonts = True

            '画像圧縮オプションを取得する
            Dim imageCompression As ImageCompressionOptions =  compressor.Options.ImageCompressionOptions

            '圧縮画質を設定する
            imageCompression.ImageQuality = ImageQuality.High

            '画像のサイズを変更する
            imageCompression.ResizeImages = True

            '画像を圧縮する
            imageCompression.CompressImage = True

            '圧縮された文書をPDFに保存する
            compressor.CompressToFile("Compressed.pdf")
        End Sub
    End Class
End Namespace
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/7dd1615e-3ae9-03e2-6c86-3d11e0aea11c.png)