C# で PDF ファイルを開く

Syed Hassan Sabeeh Kazmi 2023年10月12日
  1. Process.Start() メソッドを使用して C# で PDF ファイルを開く
  2. DynamicPDF ビューアを使用して C# で PDF ファイルを開く
  3. PdfDocument を使用して C# で PDF ファイルを開く
  4. System.IO.Stream インスタンスを使用して C# で PDF ファイルを開く
  5. iTextSharp NuGet パッケージを使用して C# で PDF ファイルを開く
  6. ツールボックスから PdfViewer を使用して C# で PDF ファイルを開く
C# で PDF ファイルを開く

このチュートリアルでは、C# を使用して Windows フォーム内で PDF ファイルを開く方法を説明します。 Windows アプリケーション用の C# プログラミングで Portable Document Format ファイルにアクセスするには、6つの方法があります。

各メソッドは、C# プログラミングと GUI コントロールに関するユーザーの基本的な知識に基づいて配置されています。 実行可能な C# の例を使用すると、プログラミングの背景知識がなくても、これらのさまざまな方法を理解して学習できます。

C# で PDF ファイルを生成するための直接的なサポートがないことを知っておく必要があります。 代わりに、サードパーティのライブラリまたはツールを使用してファイルを生成できます。 PDFSharp は、MIT ライセンスの下で公開されている GDI+ で知られる描画ルーチンを Windows アプリケーションで使用できるようにする例です。

Process.Start() メソッドを使用して C# で PDF ファイルを開く

C# の System.Diagnostics.Process.Start() メソッドは、システムの既定の PDF ファイルまたはその他のドキュメント ビューアーとして機能します。 多くの初心者がこのアプローチで抱える共通の問題は、ファイル パスです。

プログラムの .exe ファイルからリソースのあるフォルダーへの相対パスが必要な場合は、Resources\ または ...\Resources\ をファイル パスに追加します。 それ以外の場合は、Path.GetTempPath() を使用して PDF ファイルを一時的な場所に保存して開くことにより、PDF ファイルを埋め込みリソースとして C# プロジェクトに追加できます。

using System;
using System.Diagnostics;  // essential namespace
using System.Windows.Forms;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      /* alternative approach

      ProcessStartInfo file_info = new ProcessStartInfo();
      file_info.FileName = "report.pdf";
      string _path = @"C:\Users\DELL"; // file path
      file_info.Arguments = _path;
      Process.Start(file_info);

       */

      Process.Start(@"C:\Users\DELL\report.pdf");
    }
  }
}

出力:

プロセス開始

これは、ProcessStartInfo の定義も保持する System.Diagnostics 名前空間に属します。 PDF を含むファイルにアクセスするための、fileNameargumentsuserNamepassword、および domain などのさまざまなパラメーターがあります。

DynamicPDF ビューアを使用して C# で PDF ファイルを開く

DynamicPDF ビューアは、Windows アプリケーション内の .NET がファイル、バイト配列、またはパスワードで保護されたファイルを使用して PDF にアクセスしたり、Stream を使用して PDF を開いたりするための強力なツールです。 この方法の例では、DynamicPDF ビューアーを使用して .pdf ファイルにアクセスしたり開いたりする方法を説明します。

DynamicPDF が提供する MSI インストーラーを使用してこのビューアーをインストールし、インストールが正常に完了したら、DynamicPDFViewer コントロールを Visual Studio ツールボックスに追加します。 現在、ツールボックスにアクセスして DynamicPDFViewer コントロールを Windows フォームに追加することは有効なオプションです。

これは、C# アプリケーションのパフォーマンスを向上させるためのカスタマイズ可能な機能を備えたプレミアム ツールです。 このビューアーは、任意の .NET WinForm アプリケーションに完全に埋め込むことができるため、ドキュメントの表示や操作を外部ビューアーに依存する必要がなくなり、その高い効率性、信頼性、および互換性を活用できます。

using System;
using System.Windows.Forms;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      pdfViewer1.Open(@"C:\Users\DELL\report.pdf");
    }

    private void pdfViewer1_Click(object sender, EventArgs e) {}
  }
}

出力:

DynamicPDF

ceTe.DynamicPDF.Viewer.NET という名前で Visual Studio に NuGet パッケージとしてインストールできます。 このツールの x64 および x86 バージョンが利用可能です。インストールして C# プロジェクトへの参照を配置すると、PDF ファイルをより効率的に開くことができます。

PdfDocument を使用して C# で PDF ファイルを開く

Open メソッドは、pdfViewer.Open(pdf_path); のようなものを使用して C# で PDF ファイルを開く場合、非常にシンプルで有名です。 また、バイト配列から PDF を直接開きたい場合、pdfDocument のインスタンスを作成してバイト配列をコンストラクターに渡す必要がある場合は、Open メソッドを使用できます。

pdfDocument pdf_doc = new pdfDocument(pdf_file); のような Open メソッドを使用して作成した Viewer コントロールに pdfDocument インスタンスを渡します。 Open メソッド pdfViewer.Open(pdf_doc); を使用して実行できます。

最も重要なことは、パスワードで保護された PDF ファイルの場合、pdfDocument pdf_doc = new pdfDocument(pdf_path, "my_password123"); のように、ファイル パスと共にパスワードをコンストラクターに渡す必要があることです。 Open メソッドを使用して、このインスタンスを DynamicPDF ビューア コントロールに渡します。

using System;
using System.Windows.Forms;
using ceTe.DynamicPDF.Viewer;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      PdfDocument file_pdf =
          new PdfDocument(data_pdf);  // `data_pdf` contains the byte array info of pdf file
      pdfViewer1.Open(file_pdf);
    }

    private void pdfViewer1_Click(object sender, EventArgs e) {}
  }
}

開くボタンをクリックすると、Windows フォームに埋め込まれたDynamicPDFビューアでバイト配列から PDF ファイルが開きます。

パスワードで保護された PDF ファイルを開くのは、PdfDocument のインスタンスを作成し、ファイル パスとパスワードをコンストラクターに渡すことによって、バイト配列から PDF ファイルを開くのと同じくらい簡単です。

PDF は暗号化され、パスワードで保護されているため、Open() メソッドを使用して PdfDocument インスタンスを pdfViewer1 に渡します。

using System;
using System.Windows.Forms;
using ceTe.DynamicPDF.Viewer;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      PdfDocument file_pdf = new PdfDocument(
          @"C:\Users\DELL\report.pdf", "password");  // first string is the path, and the second
                                                     // string is the password on that pdf file
      pdfViewer1.Open(file_pdf);
    }

    private void pdfViewer1_Click(object sender, EventArgs e) {}
  }
}

出力:

PdfDocument パスワード

System.IO.Stream インスタンスを使用して C# で PDF ファイルを開く

System.IO.Stream インスタンスを直接使用して、Open メソッドでこのタスクを実行することができます。 Stream から pdfDocument インスタンスを作成する必要があります。たとえば、pdfDocument pdf_doc = new pdfDocument(pdf_stream); のようになります。

using System;
using System.Windows.Forms;
using ceTe.DynamicPDF.Viewer;
using System.IO;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      /* perform some stream operation to get `pdf_stream`

      string dictionary_start = @"C:\Users\DELL\";
      string dictionary_end = @"C:\Users\DELL\edvdd";

      foreach (string info_file in Directory.EnumerateFiles(dictionary_start))
      {
          using (FileStream SourceStream = File.Open(info_file, FileMode.Open))
          {
              using (FileStream DestinationStream = File.Create(dictionary_end +
      info_file.Substring(info_file.LastIndexOf('\\'))))
              {
                  await SourceStream.CopyToAsync(DestinationStream);
              }
          }
      }

      */

      PdfDocument file_pdf =
          new PdfDocument(pdf_stream);  // `pdf_stream` contains the pdf path directly from the
                                        // `System.IO.Strem` instance
      pdfViewer1.Open(file_pdf);
    }

    private void pdfViewer1_Click(object sender, EventArgs e) {}
  }
}

開くボタンをクリックすると、Windows フォームに埋め込まれたpdfViewer1``DynamicPDFビューアーのストリームから PDF ファイルが開きます。

iTextSharp NuGet パッケージを使用して C# で PDF ファイルを開く

Visual Studio で新しい C# プロジェクト (Windows フォーム C# アプリケーション) を作成し、iTextSharp NuGet パッケージ バージョン v5.5.11 または更新されたバージョンをインストールします。

CREATEINSERTADAPTMAINTAIN ドキュメントなどの機能を PDF で提供する重要なライブラリであり、可能なすべての .pdf 機能を C# プロジェクトに追加できます。

ボタンを使用してフォームを設計し、iTextSharp.text.pdf.parser 名前空間を使用してフォームを処理します。 高度なツール ライブラリとして、複雑な PDF レポートを作成し、PDF 機能を使用してアプリケーションを強化するのに役立ちます。

using System;
using System.Windows.Forms;
using iTextSharp.text.pdf.parser;  // essential namespace
using System.Text;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      using (OpenFileDialog dialog_pdffile =
                 new OpenFileDialog() { Filter = "PDF files|*.pdf", ValidateNames = true,
                                        Multiselect = false }) {
        if (dialog_pdffile.ShowDialog() == DialogResult.OK) {
          try {
            iTextSharp.text.pdf.PdfReader file_proc =
                new iTextSharp.text.pdf.PdfReader(dialog_pdffile.FileName);
            StringBuilder build_string = new StringBuilder();
            for (int i = 1; i <= file_proc.NumberOfPages; i++) {
              // read the pdf document
              build_string.Append(PdfTextExtractor.GetTextFromPage(file_proc, i));
            }
            richTextBox1.Text = build_string.ToString();
            file_proc.Close();
          } catch (Exception ex) {
            MessageBox.Show(ex.Message, "Caution, Error occurs!", MessageBoxButtons.OK,
                            MessageBoxIcon.Error);
          }
        }
      }
    }

    private void richTextBox1_TextChanged(object sender, EventArgs e) {}
  }
}

出力:

iTextSharp

ツールボックスから PdfViewer を使用して C# で PDF ファイルを開く

この方法では、C# で WinForms PDF ビューアーを使用して PDF ファイルを開く方法と、単純な PDF ビューアー C# アプリケーションを作成するために必要なアセンブリを学習します。

Patagames.pdf は、PDF ファイルを作成、編集、およびロードするためのクラス ライブラリと、PDF レンダリング エンジンを含むプライマリ アセンブリです。

Patagames.Pdf.WinForms アセンブリには、PdfViewer UserControl と、PDF ビューア用のその他の UI コントロールが含まれています。この WinForms .pdf ビューアに必要なアセンブリは、これら 2つだけです。

コードからコントロールを手動で作成することは、多くの利点を持つ複雑なプロセスです。 VS ツールボックスからコントロールをドラッグし、C# フォームのデザイナー ウィンドウにドロップするだけで、PDF ビューアーを作成できます。 Patagames Pdf.Net SDK タブに移動し、PdfViewer ツールボックス項目をデザイナー ウィンドウにドラッグします。

pdfViewer にはユーザー インターフェイス要素が含まれておらず、すべての重要な機能はパブリック メソッドを通じて利用できることを思い出してください。

インスタンスをデザイナに追加した後、pdfViewer1.LoadDocument("file_name.pdf"); のようにして、pdfViewerControl にドキュメントをロードできます。

using System;
using System.Windows.Forms;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      pdfViewer1.LoadDocument(@"C:\Users\DELL\Resumed.pdf");
    }

    private void pdfViewer1_Load(object sender, EventArgs e) {}
  }
}

出力:

PdfViewer

この SDK タブの助けを借りて使用できる別のアプローチは、Patagames Pdf.Net SDK タブに移動し、PdfToolStripMain ツールボックス項目をデザイナー ウィンドウにドラッグして、そのインスタンスをデザイナーに追加することにより、プロパティを使用して PDF ドキュメントを開くことです。 .cs ファイル。

その後、プロパティ グリッドで PdfViewer プロパティをクリックし、ドロップダウン リストから pdfViewer1 を選択します。 開く アイコンをクリックして、PDF ドキュメントを読み込んだり追加したりできるようになりました。

ボタン クリック イベントについて説明しているので、アセンブリの名前空間参照を追加し、pdfViewer インスタンスを作成し、PDF ファイルをロードすることで、C# コードからコントロールを手動で追加できます。 ボタンのクリック イベントで、PdfViewerControl を初期化し、ドキュメントをロードしてフォームに追加します。

Spire PDF ビューアは、Patagames PDF ビューアの有効な代替手段として、C# で PDF ファイルを簡単に開くことができます。 Spire.PDFViewer をダウンロードし、Windows フォームにツール スクリプトを追加し、Spire.PdfViewer.Forms 参照を C# プロジェクトに追加して、システムから PDF ファイルを直接ロードするか、ダイアログ ボックスから PDF ファイルを選択します。 あなたのコンピュータから。

このチュートリアルでは、パフォーマンスを維持するための最も効果的な方法を使用して、C# で PDF またはその他のファイルを開く方法を学習しました。

Syed Hassan Sabeeh Kazmi avatar Syed Hassan Sabeeh Kazmi avatar

Hassan is a Software Engineer with a well-developed set of programming skills. He uses his knowledge and writing capabilities to produce interesting-to-read technical articles.

GitHub

関連記事 - Csharp PDF