LoginSignup
5
5

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

Last updated at Posted at 2023-05-18

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

Free Spire.PDF for .NETをインストールする

この記事で使用している製品はFree Spire.PDF for .NETです。
方法1NuGetで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をローカルにダウンロードしインストールします。次に、Visual Studioて新しいプロジェクトを作成し、右側の「Solution Explorer」で「References」を右クリックし、「Add Reference」>「Browse」を選択して、インストールパス下のBINフォルダのdllファイルを見つけ、「OK」をクリックして、プログラムに参照を追加します。

デフォルトのプリンター

説明:

LoadFromFile()メソッドを使用して、 PdfDocumentオブジェクトを作成することができます。その後、 Print()メソッドを使用して、PDFを印刷します。

サンプルコード

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:

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#:

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:

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#:

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:

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#:

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:

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#:

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:

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#:

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:

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
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5