C#とVB.NETでPDFを印刷する

PDF形式は、異なるプラットフォームやアプリケーションで見た場合にも一貫性のある表示が可能であり、さまざまな文書を簡単かつ正確に共有するための便利な形式です。PDF印刷では、様々なオプション（用紙サイズ、品質、グレースケールなど）を設定して、印刷する前にドキュメントをプレビューすることができます。同様に、プログラミングによってさまざまな方法でPDF印刷を実現することができます。以下はコードの説明とサンプルコードです。

## Free Spire.PDF for .NETをインストールする
この記事で使用している製品はFree Spire.PDF for .NETです。
**方法1**：[NuGet](https://www.nuget.org/packages/FreeSpire.PDF)でFree Spire.PDF for .NETをインストールする
Visual Studioを開いて新しいプロジェクトを作成します。次に、「Solution Explorer」で「References」を右クリックし、「Nuget Manage Packages」を選択します。Free Spire.PDF for .NETを検索してインストールします。
**方法2**：手動でSpire.PDF.dllを追加する
[Free Spire.PDF for .NET](https://www.e-iceblue.com/Download/download-pdf-for-net-free.html)をローカルにダウンロードしインストールします。次に、Visual Studioて新しいプロジェクトを作成し、右側の「Solution Explorer」で「References」を右クリックし、「Add Reference」>「Browse」を選択して、インストールパス下のBINフォルダのdllファイルを見つけ、「OK」をクリックして、プログラムに参照を追加します。

## デフォルトのプリンター
### 説明：
LoadFromFile()メソッドを使用して、 PdfDocumentオブジェクトを作成することができます。その後、 Print()メソッドを使用して、PDFを印刷します。
### サンプルコード
C#:
```C#
using Spire.Pdf;

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

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

            //デフォルトのプリンタで印刷する
            doc.Print();
        }
    }
}
```
VB.NET:
```VB
Imports Spire.Pdf
 
Namespace PrintWithDefaultPrinter
    Class Program
        Shared  Sub Main(ByVal args() As String)
            'PdfDocumentオブジェクトを作成する
            Dim doc As PdfDocument =  New PdfDocument() 
 
            'PDFファイルをロードする
            doc.LoadFromFile("sample.pdf")
 
            'デフォルトのプリンタで印刷する
            doc.Print()
        End Sub
    End Class
End Namespace
```
## 指定したプリンターで特定のページを印刷する
### 説明：
PdfDocumentオブジェクトを作成し、 LoadFromFile()メソッドを使用してPDFファイルを読み込みます。次に、 PrintSettingsプロパティを使用してプリンター名と印刷オプション（ページ範囲など）を設定します。最後に、 Print()メソッドを使用してPDFファイルを印刷します。
### サンプルコード
C#:
```c#
using Spire.Pdf;

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

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

            //プリンター名を指定する
            doc.PrintSettings.PrinterName = "XXXXX";

            //印刷するページ範囲を選択する
            doc.PrintSettings.SelectPageRange(1, 5);

            //印刷する不連続ページを選択する
            //doc.PrintSettings.SelectSomePages(new int[] { 1, 3, 5, 7 });

            //ドキュメントを印刷する
            doc.Print();
        }
    }
}
```
VB.NET:
```vb
Imports Spire.Pdf
 
Namespace PrintWithSpecifiedPrinter
    Class Program
        Shared  Sub Main(ByVal args() As String)
            'PdfDocumentオブジェクトを作成する
            Dim doc As PdfDocument =  New PdfDocument() 
 
            'PDFファイルをロードする
            doc.LoadFromFile("sample.pdf")
 
            'プリンター名を指定する
            doc.PrintSettings.PrinterName = "XXXXX"
 
            '印刷するページ範囲を選択する
            doc.PrintSettings.SelectPageRange(1, 5)
 
            '印刷する不連続ページを選択する
            'doc.PrintSettings.SelectSomePages(new int[] { 1, 3, 5, 7 });
 
            'ドキュメントを印刷する
            doc.Print()
        End Sub
    End Class
End Namespace
```
## サイレント印刷
### 説明：
このコードでは、 PdfDocumentオブジェクトを作成し、 LoadFromFile()メソッドを使用してPDFファイルを読み込みます。次に、 PrintSettingsプロパティを使用してプリンター名を指定します。さらに、 StandardPrintController()を使用してPrintControllerプロパティにサイレント印刷コントローラを設定します。最後に、 Print()メソッドを使用してPDFファイルをサイレント印刷します。
### サンプルコード
C#:
```c#
using Spire.Pdf;
using System.Drawing.Printing;

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

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

            //プリンター名を指定する
            doc.PrintSettings.PrinterName = "XXXXX";

            //サイレント印刷する
            doc.PrintSettings.PrintController = new StandardPrintController();

            //ドキュメントを印刷する
            doc.Print();
        }
    }
}
```
VB.NET:
```vb
Imports Spire.Pdf
Imports System.Drawing.Printing
 
Namespace PrintPdfSilently
    Class Program
        Shared  Sub Main(ByVal args() As String)
            'PdfDocumentオブジェクトを作成する
            Dim doc As PdfDocument =  New PdfDocument() 
 
            'PDFファイルをロードする
            doc.LoadFromFile("sample.pdf")
 
            'プリンター名を指定する
            doc.PrintSettings.PrinterName = "XXXXX"
 
            'サイレント印刷する
            doc.PrintSettings.PrintController = New StandardPrintController()
 
            'ドキュメントを印刷する
            doc.Print()
        End Sub
    End Class
End Namespace
```
## 両面印刷
### 説明：
PdfDocumentオブジェクトを作成し、 LoadFromFile()メソッドを使用してPDFファイルを読み込みます。次に、 PrintSettingsプロパティを使用してプリンター名を指定します。さらに、 CanDuplexプロパティを使用して、プリンターが両面印刷をサポートしているかどうかを確認します。プリンターが両面印刷をサポートしている場合、 Duplexプロパティを使用して両面印刷モードに設定し、 Print()メソッドを使用してPDFファイルを印刷します。
### サンプルコード
C#:
```c#
using Spire.Pdf;
using System.Drawing.Printing;

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

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

            //プリンタ名を指定する
            doc.PrintSettings.PrinterName = "XXXXX";

            //プリンタが両面印刷をサポートしているかどうかを確認する
            if (doc.PrintSettings.CanDuplex)
            {
                //両面印刷モードに設定する
                doc.PrintSettings.Duplex = Duplex.Default;

                //ドキュメントを印刷する
                doc.Print();
            }
        }
    }
}
```
VB.NET:
```vb
Imports Spire.Pdf
Imports System.Drawing.Printing
 
Namespace PrintInDuplexMode
    Class Program
        static void Main(string() args)
        {
            'PdfDocumentオブジェクトを作成する
            Dim doc As PdfDocument =  New PdfDocument() 
 
            'PDFファイルをロードする
            doc.LoadFromFile("sample.pdf")
 
            'プリンター名を指定する
            doc.PrintSettings.PrinterName = "XXXXX"
 
            'プリンタが両面印刷をサポートしているかどうかを確認する
            if (doc.PrintSettings.CanDuplex)
            {
                '両面印刷モードに設定する
                doc.PrintSettings.Duplex = Duplex.Default
 
                'ドキュメントを印刷する
                doc.Print()
            }
        }
    End Class
End Namespace
```
## PDF をグレースケールで印刷する
### 説明：
PdfDocumentオブジェクトを作成し、 LoadFromFile()メソッドを使用してPDFファイルを読み込みます。次に、 PrintSettingsプロパティを使用してプリンター名を指定します。さらに、 Colorプロパティを使用して白黒で印刷するように設定し、 Print()メソッドを使用してPDFファイルを印刷します。
### サンプルコード
C#:
```c#
using Spire.Pdf;

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

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

            //プリンター名を指定する
            doc.PrintSettings.PrinterName = "XXXXX";

            //白黒で印刷する
            doc.PrintSettings.Color = false;

            //ドキュメントを印刷する
            doc.Print();
        }
    }
}
```
VB.NET:
```vb
Imports Spire.Pdf
 
Namespace PrintInGrayscale
    Class Program
        Shared  Sub Main(ByVal args() As String)
            'PdfDocumentオブジェクトを作成する
            Dim doc As PdfDocument =  New PdfDocument() 
 
            'PDFファイルをロードする
            doc.LoadFromFile("sample.pdf")
 
            'プリンター名を指定する
            doc.PrintSettings.PrinterName = "XXXXX"
 
            '白黒で印刷する
            doc.PrintSettings.Color = False
 
            'ドキュメントを印刷する
            doc.Print()
        End Sub
    End Class
End Namespace
```
## 異なるページ範囲を異なるトレイに印刷する
### 説明：
このコードでは、 PdfDocumentオブジェクトを作成し、 LoadFromFile()メソッドを使用してPDFファイルを読み込みます。次に、 PaperSettingsイベントを処理するために、 PdfPaperSettingsEventArgsを使用してデリゲートを登録します。このデリゲートでは、1〜10ページのトレイ1の給紙元と残りのページのトレイ2の給紙元を設定します。最後に、 Print()メソッドを使用してPDFファイルを印刷します。
### サンプルコード
C#:
```c#
using Spire.Pdf;
using Spire.Pdf.Print;

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

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

            //用紙設定イベントを処理するデリゲートにPaperSettingsイベントを登録する
            doc.PrintSettings.PaperSettings += delegate (object sender, PdfPaperSettingsEventArgs e)
            {
                // トレイ1の給紙元を1〜10ページに設定する
                if (1 <= e.CurrentPaper && e.CurrentPaper <= 10)
                {
                    e.CurrentPaperSource = e.PaperSources[0];
                }

                //トレイ2の給紙元を残りのページに設定する
                else
                {
                    e.CurrentPaperSource = e.PaperSources[1];
                }
            };

            //ドキュメントを印刷する
            doc.Print();
        }
    }
}
```
VB.NET:
```vb
Imports Spire.Pdf
Imports Spire.Pdf.Print
 
Namespace PrintToDifferentTrays
    Class Program
        Shared  Sub Main(ByVal args() As String)
            'PdfDocumentオブジェクトを作成する
            Dim doc As PdfDocument =  New PdfDocument() 
 
            'PDFファイルをロードする
            doc.LoadFromFile("sample.pdf")
 
            '用紙設定イベントを処理するデリゲートにPaperSettingsイベントを登録する
            doc.PrintSettings.PaperSettings Function delegate(ByVal sender As Object, ByVal e As PdfPaperSettingsEventArgs) As +=
                ' トレイ1の給紙元を1〜10ページに設定する
                If 1 <= e.CurrentPaper And e.CurrentPaper <= 10 Then
                    e.CurrentPaperSource = e.PaperSources(0)
                End If
 
                'トレイ2の給紙元を残りのページに設定する
                else
                {
                    e.CurrentPaperSource = e.PaperSources(1)
                }
            End Function

 
            'ドキュメントを印刷する
            doc.Print()
        End Sub
    End Class
End Namespace
```