フッターコンテンツにスキップ
IRONPDFの使用

C# で PDF からデータを抽出する方法

IronPDF を使用すると、C# 開発者はシンプルな Windows フォーム アプリケーションを使用してわずか 5 ステップで HTML を PDF に変換できます。HTML をプロフェッショナルな PDF ドキュメントとしてレンダリングするには、 NuGetパッケージのインストールと数行のコードのみが必要です。

C#開発者はIronPDFを使用してHTMLからPDFを生成できます。 この記事では.NET Frameworkを使用して作成されたC# Windows Formsアプリケーションでこのプロセスを実証します。

Visual Studio 2019でプロジェクトを作成するには、次の手順に従ってください。

PDF 生成用の Visual Studio プロジェクトを作成するにはどうすればよいですか?

まず、Visual Studio 2019を開きます。

Visual Studio 2019のスタートウィンドウには、リポジトリをクローン、プロジェクトまたはソリューションを開く、ローカルフォルダを開く、新しいプロジェクトを作成するオプションを表示

'Create a new project'をクリックします。

次に、テンプレートから'Windows Forms App'を選択し、'Next'を押します。 次のウィンドウが表示されます:

Visual Studioの

プロジェクト名に'Create PDF using IronPDF'を入力します。

Visual Studio新プロジェクト設定ウィンドウには、プロジェクト名

'Create'ボタンをクリックします。 プロジェクトは以下のように作成されます。

Visual Studio IDEには、Designビューで空のWindowsフォームと、ソリューションエクスプローラーが

このチュートリアルで Windows フォームを使用する必要があるのはなぜですか?

Windows フォームは、 C# で PDF 生成を学習する初心者にわかりやすいビジュアル環境を提供します。 ドラッグ アンド ドロップ デザイナーが提供されており、HTML や Web 開発の詳細な知識がなくてもユーザー インターフェイスを簡単に作成できます。 Windows フォームのイベント駆動型プログラミング モデルは、初心者の開発者がアプリケーション フローについて考える方法とよく一致しており、 IronPDF のコアとなる HTML から PDF への機能を示すのに最適です。

運用アプリケーションの場合、 Web ベースの PDF 生成にはASP.NET Coreバッチ処理にはコンソール アプリケーションの使用を検討してください。 ただし、開発中に迅速な視覚的なフィードバックが必要な内部ツール、デスクトップ ユーティリティ、学習環境には、Windows フォームが依然として最適な選択肢です。

Visual Studio のどのバージョンが最もよく機能しますか?

Visual Studio 2019 以降は、 IronPDF開発に最適なエクスペリエンスを提供します。 これらのバージョンには、改善されたNuGetパッケージ管理、モダンC#機能のより良いIntelliSenseサポート、PDF生成の問題をトラブルシューティングする際に役立つデバッグ機能の強化が含まれます。

Visual Studio 2022 では最新の機能とパフォーマンスの向上が提供されますが、Visual Studio 2019 は引き続き広く使用され、完全にサポートされています。 どちらのバージョンもIronPDF のNuGetパッケージとシームレスに動作します。 Visual Studio Code を使用している開発者は、引き続きIronPDFを使用できますが、パッケージ管理にはコマンド ライン インターフェイスを使用する必要があり、このチュートリアルで示した一部のビジュアル デザイン機能は利用できなくなります。

.NET Frameworkの代わりに.NET Coreを使用できますか?

絶対に! IronPDF は、 .NET Core、 .NET 5、 .NET 6、 .NET 7+ を完全にサポートしています。 実際、 .NET Core以降のバージョンを使用すると、クロスプラットフォームの互換性、パフォーマンスの向上、最新の C# 言語機能へのアクセスなど、いくつかの利点が得られます。

.NET Core を使用するには、プロジェクトの作成時に適切なターゲット フレームワークを選択するだけです。 このチュートリアルのコード例は、サポートされているすべてのフレームワークで同じように動作します。 展開の柔軟性のために、 .NET Coreアプリケーションは Windows に加えて Linux および macOS でも実行できるため、クラウド展開やコンテナー化された環境に最適です。

NuGetパッケージ マネージャーを使用してIronPDFをインストールするにはどうすればよいですか?

  • まず、メニューバーで'Tools'ボタンをクリックします。
  • メニューが開きます。 次にNuGetパッケージマネージャオプションをクリックします。
  • もう1つのサブメニューが開きます。 次にPackage Manager Consoleという名前のオプションをクリックします。

Visual Studioが展開されたツールメニューと、NuGetパッケージマネージャーサブメニューを表示し、パッケージマネージャーコンソールのオプションをハイライト

コマンドラインの下に新しい画面が表示されます。それに、IronPDFパッケージをインストールするコマンドを書きます。

Install-Package IronPdf

Visual Studio 2019 IDEは、IronPDFインストールコマンドが実行準備完了の状態のパッケージマネージャーコンソールを表示

コマンドを入力した後、Enterキーを押します。 コンピュータ/ラップトップがインターネットに接続されていることを確認してください。 IronPDFパッケージは既存のプロジェクトに自動的に追加されます。

Visual Studio 2019 IDEは、IronPDFライブラリのドキュメントを表示し、HTMLからPDFへの変換用のC#コード例と、成功したIronPDFインストールを示すパッケージマネージャーコンソールを並べて表示

上記の画面では、パッケージがプロジェクトに正常に追加されたことを示しています。

IronPDFをインストールする別の方法は何ですか?

パッケージ マネージャー コンソール以外にも、 IronPDFをインストールするためのオプションがいくつかあります。

  1. NuGetパッケージ マネージャー UI : プロジェクトを右クリックし、" NuGetパッケージの管理"を選択して、"IronPDF"を検索し、"インストール"をクリックします。 GUI インターフェースを好む初心者に最適です。

  2. .csprojでPackageReference: モダンな.NETプロジェクト用に、IronPDFをプロジェクトファイルに直接追加できます:

    <PackageReference Include="IronPdf" Version="*" />
    <PackageReference Include="IronPdf" Version="*" />
    XML
  3. .NET CLI: コマンドラインツールを好む開発者やVisual Studio Codeを使用する開発者向け:
    dotnet add package IronPdf

4.手動ダウンロード: IronPDF Web サイトから DLL を直接ダウンロードし、参照として追加することもできますが、この方法では更新が難しくなります。

インストール中にインターネット接続が必要なのはなぜですか?

NuGet、 NuGet .org リポジトリからIronPDFとその依存関係をダウンロードするためにインターネット接続が必要です。 パッケージには、HTML から PDF への変換に必要なコアIronPDFライブラリとChrome レンダリング エンジン バイナリが含まれています。

オフライン インストールの場合は、次のことが可能です。

IronPDF のレンダリング エンジンには、初回使用時にダウンロードされる可能性のある追加のランタイム コンポーネントが必要であることに注意してください。そのため、最初の PDF 生成ではインターネット接続も役立ちます。

インストールが成功したかどうかを確認するにはどうすればよいですか?

インストール後、次の指標をチェックしてIronPDFが正しく動作していることを確認します。

1.参照ノード: ソリューション エクスプローラーで、参照ノードを展開します。 プロジェクト参照に'IronPDF'がリストされているのを確認してください。

  1. IntelliSenseサポート: C#ファイルの先頭にIntelliSenseはエラーなしで名前空間を認識するはずです。

3.シンプルなテストコード: 機能性を検証するために、次の基本テストを追加します。

using IronPdf;

// Quick verification test
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Test</h1>");
// If no exceptions occur, IronPDF is installed correctly
using IronPdf;

// Quick verification test
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Test</h1>");
// If no exceptions occur, IronPDF is installed correctly
Imports IronPdf

' Quick verification test
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Test</h1>")
' If no exceptions occur, IronPDF is installed correctly
$vbLabelText   $csharpLabel
  1. パッケージマネージャー: パッケージマネージャーコンソールでGet-Package IronPdfを実行してバージョン情報を確認してください。

問題が発生した場合は、トラブルシューティング ガイドを参照するか、システムが要件を満たしているかどうかを確認してください。

PDF 生成用のユーザー インターフェイスをどのように設計すればよいですか?

次に、ラベルを追加し、テキストを"Create a PDF from HTML using IronPDF"に設定します。

Visual Studio IDEには、フォームデザイナーで

次に、ツールボックスからリッチ テキスト ボックスとボタンを追加します。 ボタンテキストを'Convert'に設定します。

Windowsフォームアプリケーションのインターフェースは、IronPDFを使用してHTMLからPDFを作成するためのテキスト入力エリアと変換ボタンを表示

なぜ通常のRichTextBoxを使用するのか?

あるRichTextBoxは、PDF生成シナリオでのHTML入力に際して、いくつかの利点を提供します。

  1. マルチラインサポート: HTMLは通常複数行にまたがり、TextBoxはMultiline = trueの設定を必要とします。

  2. フォーマットの保持: プレーンなHTMLを入力する際も、RichTextBoxはインデントや改行のようなフォーマットを保持し、開発中のHTMLをより読みやすくします。

  3. より大きなキャパシティ: RichTextBoxはより多くのテキストを扱うことができ、スニペットではなく完全なHTMLドキュメントを扱う際に役立ちます。

  4. 構文ハイライトの可能性: この基本的な例では実装されていませんが、RichTextBoxを拡張してHTMLの構文ハイライトを提供することができ、開発者の体験を向上させます。

運用アプリケーションでは、ユーザー エクスペリエンスを向上させるために、専用の HTML エディター コントロールを使用するか、外部エディターと統合することを検討してください。

ユーザー インターフェイスを強化できるその他のコントロールは何ですか?

より堅牢な PDF 生成アプリケーションを作成するには、次のコントロールを追加することを検討してください。

  1. WebBrowserコントロール: 変換する前にHTMLのプレビューを表示し、ユーザーがPDFの見た目を確認できるようにします。これはIronPDFのChromeレンダリングエンジンを模倣します。

  2. ProgressBar: 大規模なドキュメントやバッチ処理の変換進捗を表示します。

  3. テンプレート用ComboBox: 請求書やレポートのような一般的なドキュメントタイプに適した事前定義のHTMLテンプレートを提供します。

  4. PropertyGrid: PDFレンダリング設定(ページサイズ、余白、方向など)をユーザーが変更可能にします。

  5. TabControl: 入力HTML、プレビュー、PDF設定を整理されたタブで分離します。

フィードバック用のステータス ストリップを追加する例:

// Add to your form
StatusStrip statusStrip = new StatusStrip();
ToolStripStatusLabel statusLabel = new ToolStripStatusLabel("Ready");
statusStrip.Items.Add(statusLabel);
this.Controls.Add(statusStrip);
// Add to your form
StatusStrip statusStrip = new StatusStrip();
ToolStripStatusLabel statusLabel = new ToolStripStatusLabel("Ready");
statusStrip.Items.Add(statusLabel);
this.Controls.Add(statusStrip);
' Add to your form
Dim statusStrip As New StatusStrip()
Dim statusLabel As New ToolStripStatusLabel("Ready")
statusStrip.Items.Add(statusLabel)
Me.Controls.Add(statusStrip)
$vbLabelText   $csharpLabel

ベストプラクティスに従ってコントロールに名前を付けるにはどうすればよいでしょうか?

一貫した命名規則に従うことで、コードの読みやすさとメンテナンス性が向上します。 PDF 生成フォームの推奨プラクティスは次のとおりです。

  1. 説明的な接頭辞を使用する:

    • HTML入力のためのRichTextBox
    • 変換ボタンのためのbtnConvert
    • タイトルラベルのためのlblTitle
  2. 一貫性を保つ: camelCaseかPascalCaseのいずれかを選択し、プロジェクト全体でそれに固執します。

  3. デフォルト名を避ける: richTextBox1を有意義な名前に置き換えてください。例: rtbHtmlInput

4.関連するコントロールをグループ化する: 複雑なフォームの場合は、機能をグループ化するプレフィックスを使用します。

  • PDF特有の設定にはpdfOrientation
  • HTML関連コントロールにはhtmlPreview
  1. アクセシビリティを考慮する: スクリーンリーダーのためにAccessibleNameを設定します。

適切な名前を付けると、コードが自己文書化され、フォーム データの抽出などの機能を実装するときに役立ちます。

HTML を PDF に変換するコードをどのように記述すればよいですか?

'Convert'ボタンをダブルクリックします。 コンバートボタンクリックイベントのコードウィンドウが開きます。

Visual Studio IDEが、部分的なForm1クラスを含むC# Windows Formsコードと、IronPDFを使用してPDFを作成するために空のbtnConvert_Clickイベントハンドラを表示

.csファイルの上部にIronPDFライブラリをインポートするためのコードを追加してください。

まず、IronPDFライブラリのメソッドを使用するために次のコードを追加します。

using IronPdf;
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

下記は現在空のbtnConvert_Clickイベントの初期コードです。

private void btnConvert_Click(object sender, EventArgs e)
{

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

}
Private Sub btnConvert_Click(ByVal sender As Object, ByVal e As EventArgs)

End Sub
$vbLabelText   $csharpLabel

次に、ボタンクリックイベントに以下のコードを書きます。

private void btnConvert_Click(object sender, EventArgs e)
{
    // Declare an HtmlToPdf object
    var HtmlLine = new HtmlToPdf();

    // Get HTML text from the user
    string strHtml = txtHtml.Text;

    // Create SaveFileDialog to choose the save path for the PDF file
    SaveFileDialog saveFileDialog = new SaveFileDialog
    {
        InitialDirectory = @"D:\",
        Title = "Save PDF",
        CheckPathExists = true,
        DefaultExt = "pdf",
        Filter = "pdf files (*.pdf)|*.pdf",
        FilterIndex = 2,
        RestoreDirectory = true
    };

    // If the user presses Save
    if (saveFileDialog.ShowDialog() == DialogResult.OK)
    {
        // Get the file path from the user
        string filePath = saveFileDialog.FileName;

        // Convert HTML to PDF and save at the specified path
        using var PDF = HtmlLine.RenderHtmlAsPdf(strHtml);
        PDF.SaveAs(filePath);

        // Clear the TextBox and show a message confirming the successful creation
        txtHtml.Text = "";
        MessageBox.Show("File created successfully.");
    }
}
private void btnConvert_Click(object sender, EventArgs e)
{
    // Declare an HtmlToPdf object
    var HtmlLine = new HtmlToPdf();

    // Get HTML text from the user
    string strHtml = txtHtml.Text;

    // Create SaveFileDialog to choose the save path for the PDF file
    SaveFileDialog saveFileDialog = new SaveFileDialog
    {
        InitialDirectory = @"D:\",
        Title = "Save PDF",
        CheckPathExists = true,
        DefaultExt = "pdf",
        Filter = "pdf files (*.pdf)|*.pdf",
        FilterIndex = 2,
        RestoreDirectory = true
    };

    // If the user presses Save
    if (saveFileDialog.ShowDialog() == DialogResult.OK)
    {
        // Get the file path from the user
        string filePath = saveFileDialog.FileName;

        // Convert HTML to PDF and save at the specified path
        using var PDF = HtmlLine.RenderHtmlAsPdf(strHtml);
        PDF.SaveAs(filePath);

        // Clear the TextBox and show a message confirming the successful creation
        txtHtml.Text = "";
        MessageBox.Show("File created successfully.");
    }
}
Private Sub btnConvert_Click(ByVal sender As Object, ByVal e As EventArgs)
	' Declare an HtmlToPdf object
	Dim HtmlLine = New HtmlToPdf()

	' Get HTML text from the user
	Dim strHtml As String = txtHtml.Text

	' Create SaveFileDialog to choose the save path for the PDF file
	Dim saveFileDialog As New SaveFileDialog With {
		.InitialDirectory = "D:\",
		.Title = "Save PDF",
		.CheckPathExists = True,
		.DefaultExt = "pdf",
		.Filter = "pdf files (*.pdf)|*.pdf",
		.FilterIndex = 2,
		.RestoreDirectory = True
	}

	' If the user presses Save
	If saveFileDialog.ShowDialog() = DialogResult.OK Then
		' Get the file path from the user
		Dim filePath As String = saveFileDialog.FileName

		' Convert HTML to PDF and save at the specified path
		Dim PDF = HtmlLine.RenderHtmlAsPdf(strHtml)
		PDF.SaveAs(filePath)

		' Clear the TextBox and show a message confirming the successful creation
		txtHtml.Text = ""
		MessageBox.Show("File created successfully.")
	End If
End Sub
$vbLabelText   $csharpLabel

説明:

  • IronPDFの変換機能を利用するためにHtmlToPdfオブジェクトが作成されます。
  • HTML入力はテキストボックスから取得されます。
  • 結果のPDFを保存する場所を指定するようにユーザーに促すためにSaveFileDialogが使用されます。
  • ユーザーがファイルの場所を選択し、保存を押すと、パスが取得されます。
  • HTML入力はその後、RenderHtmlAsPdfを使用してPDFにレンダリングされ、選択したパスに保存されます。
  • 保存後、テキストボックスはクリアされ、PDF作成を確認するメッセージボックスが表示されます。

このコードにはどのようなエラー処理を追加すればよいでしょうか?

堅牢なエラー処理は、実稼働の PDF 生成アプリケーションにとって非常に重要です。 包括的なエラー処理を備えた拡張バージョンを次に示します。

private void btnConvert_Click(object sender, EventArgs e)
{
    try
    {
        // Validate input
        if (string.IsNullOrWhiteSpace(txtHtml.Text))
        {
            MessageBox.Show("Please enter HTML content.", "Validation Error", 
                MessageBoxButtons.OK, MessageBoxIcon.Warning);
            return;
        }

        var renderer = new ChromePdfRenderer();
        string strHtml = txtHtml.Text;

        SaveFileDialog saveFileDialog = new SaveFileDialog
        {
            InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
            Title = "Save PDF",
            CheckPathExists = true,
            DefaultExt = "pdf",
            Filter = "pdf files (*.pdf)|*.pdf",
            FilterIndex = 1,
            RestoreDirectory = true
        };

        if (saveFileDialog.ShowDialog() == DialogResult.OK)
        {
            try
            {
                // Show progress cursor
                Cursor.Current = Cursors.WaitCursor;

                using var pdf = renderer.RenderHtmlAsPdf(strHtml);
                pdf.SaveAs(saveFileDialog.FileName);

                txtHtml.Text = "";
                MessageBox.Show("PDF created successfully!", "Success", 
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (IronPdf.Exceptions.IronPdfProductException ex)
            {
                // Handle licensing issues
                MessageBox.Show($"Licensing error: {ex.Message}", "License Error", 
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show($"An error occurred: {ex.Message}", "Error", 
            MessageBoxButtons.OK, MessageBoxIcon.Error);
        // Log the full exception for debugging
        System.Diagnostics.Debug.WriteLine(ex.ToString());
    }
}
private void btnConvert_Click(object sender, EventArgs e)
{
    try
    {
        // Validate input
        if (string.IsNullOrWhiteSpace(txtHtml.Text))
        {
            MessageBox.Show("Please enter HTML content.", "Validation Error", 
                MessageBoxButtons.OK, MessageBoxIcon.Warning);
            return;
        }

        var renderer = new ChromePdfRenderer();
        string strHtml = txtHtml.Text;

        SaveFileDialog saveFileDialog = new SaveFileDialog
        {
            InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
            Title = "Save PDF",
            CheckPathExists = true,
            DefaultExt = "pdf",
            Filter = "pdf files (*.pdf)|*.pdf",
            FilterIndex = 1,
            RestoreDirectory = true
        };

        if (saveFileDialog.ShowDialog() == DialogResult.OK)
        {
            try
            {
                // Show progress cursor
                Cursor.Current = Cursors.WaitCursor;

                using var pdf = renderer.RenderHtmlAsPdf(strHtml);
                pdf.SaveAs(saveFileDialog.FileName);

                txtHtml.Text = "";
                MessageBox.Show("PDF created successfully!", "Success", 
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (IronPdf.Exceptions.IronPdfProductException ex)
            {
                // Handle licensing issues
                MessageBox.Show($"Licensing error: {ex.Message}", "License Error", 
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show($"An error occurred: {ex.Message}", "Error", 
            MessageBoxButtons.OK, MessageBoxIcon.Error);
        // Log the full exception for debugging
        System.Diagnostics.Debug.WriteLine(ex.ToString());
    }
}
Private Sub btnConvert_Click(sender As Object, e As EventArgs) Handles btnConvert.Click
    Try
        ' Validate input
        If String.IsNullOrWhiteSpace(txtHtml.Text) Then
            MessageBox.Show("Please enter HTML content.", "Validation Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Return
        End If

        Dim renderer As New ChromePdfRenderer()
        Dim strHtml As String = txtHtml.Text

        Dim saveFileDialog As New SaveFileDialog With {
            .InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
            .Title = "Save PDF",
            .CheckPathExists = True,
            .DefaultExt = "pdf",
            .Filter = "pdf files (*.pdf)|*.pdf",
            .FilterIndex = 1,
            .RestoreDirectory = True
        }

        If saveFileDialog.ShowDialog() = DialogResult.OK Then
            Try
                ' Show progress cursor
                Cursor.Current = Cursors.WaitCursor

                Using pdf = renderer.RenderHtmlAsPdf(strHtml)
                    pdf.SaveAs(saveFileDialog.FileName)
                End Using

                txtHtml.Text = ""
                MessageBox.Show("PDF created successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Catch ex As IronPdf.Exceptions.IronPdfProductException
                ' Handle licensing issues
                MessageBox.Show($"Licensing error: {ex.Message}", "License Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Finally
                Cursor.Current = Cursors.Default
            End Try
        End If
    Catch ex As Exception
        MessageBox.Show($"An error occurred: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        ' Log the full exception for debugging
        System.Diagnostics.Debug.WriteLine(ex.ToString())
    End Try
End Sub
$vbLabelText   $csharpLabel

主なエラー処理の改善:

  • 処理前の入力検証
  • IronPDFライセンス例外の具体的な処理
  • カーソルの変化による進行状況表示
  • デバッグのための適切な例外ログ
  • ユーザーフレンドリーなエラーメッセージ

ページサイズなどの PDF 設定をカスタマイズするにはどうすればよいですか?

IronPDF は、 ChromePdfRenderOptionsクラスを通じて広範なカスタマイズを提供します。 一般的なカスタマイズを実装する方法は次のとおりです。

private void ConvertWithCustomSettings()
{
    var renderer = new ChromePdfRenderer();

    // Configure rendering options
    renderer.RenderingOptions = new ChromePdfRenderOptions
    {
        // Page setup
        PaperSize = PdfPaperSize.A4,
        PaperOrientation = PdfPaperOrientation.Portrait,
        MarginTop = 25,    // millimeters
        MarginBottom = 25,
        MarginLeft = 20,
        MarginRight = 20,

        // Rendering behavior
        EnableJavaScript = true,
        RenderDelay = 500, // milliseconds
        CreatePdfFormsFromHtml = true,

        // Headers and footers
        TextHeader = new TextHeaderFooter
        {
            CenterText = "My Document",
            FontSize = 12,
            DrawDividerLine = true
        },
        TextFooter = new TextHeaderFooter
        {
            RightText = "Page {page} of {total-pages}",
            FontSize = 10
        }
    };

    // Apply custom CSS for print
    renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;

    // Generate PDF with custom settings
    var pdf = renderer.RenderHtmlAsPdf(txtHtml.Text);
    pdf.SaveAs("custom-output.pdf");
}
private void ConvertWithCustomSettings()
{
    var renderer = new ChromePdfRenderer();

    // Configure rendering options
    renderer.RenderingOptions = new ChromePdfRenderOptions
    {
        // Page setup
        PaperSize = PdfPaperSize.A4,
        PaperOrientation = PdfPaperOrientation.Portrait,
        MarginTop = 25,    // millimeters
        MarginBottom = 25,
        MarginLeft = 20,
        MarginRight = 20,

        // Rendering behavior
        EnableJavaScript = true,
        RenderDelay = 500, // milliseconds
        CreatePdfFormsFromHtml = true,

        // Headers and footers
        TextHeader = new TextHeaderFooter
        {
            CenterText = "My Document",
            FontSize = 12,
            DrawDividerLine = true
        },
        TextFooter = new TextHeaderFooter
        {
            RightText = "Page {page} of {total-pages}",
            FontSize = 10
        }
    };

    // Apply custom CSS for print
    renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;

    // Generate PDF with custom settings
    var pdf = renderer.RenderHtmlAsPdf(txtHtml.Text);
    pdf.SaveAs("custom-output.pdf");
}
Private Sub ConvertWithCustomSettings()
    Dim renderer = New ChromePdfRenderer()

    ' Configure rendering options
    renderer.RenderingOptions = New ChromePdfRenderOptions With {
        ' Page setup
        .PaperSize = PdfPaperSize.A4,
        .PaperOrientation = PdfPaperOrientation.Portrait,
        .MarginTop = 25,    ' millimeters
        .MarginBottom = 25,
        .MarginLeft = 20,
        .MarginRight = 20,

        ' Rendering behavior
        .EnableJavaScript = True,
        .RenderDelay = 500, ' milliseconds
        .CreatePdfFormsFromHtml = True,

        ' Headers and footers
        .TextHeader = New TextHeaderFooter With {
            .CenterText = "My Document",
            .FontSize = 12,
            .DrawDividerLine = True
        },
        .TextFooter = New TextHeaderFooter With {
            .RightText = "Page {page} of {total-pages}",
            .FontSize = 10
        }
    }

    ' Apply custom CSS for print
    renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print

    ' Generate PDF with custom settings
    Dim pdf = renderer.RenderHtmlAsPdf(txtHtml.Text)
    pdf.SaveAs("custom-output.pdf")
End Sub
$vbLabelText   $csharpLabel

より高度なカスタマイズ オプションについては、カスタム用紙サイズカスタム余白ビューポート設定を参照してください。

PDF 生成に Using ステートメントを使用する理由

PDF生成における適切なリソース管理のためにusingステートメントは重要です。

1.自動破棄: PDF ドキュメントは、特に画像や大きなコンテンツがある場合、大量のメモリを消費する可能性があります。 PDFオブジェクトを使用後に適切に破棄するためにusingステートメントが必要です。

2.ファイル ハンドルの解放: 適切に処理しないと、ファイル ハンドルがロックされたままになり、PDF ファイルに対する後続の操作ができなくなる可能性があります。

3.メモリ管理: IronPDF のレンダリング エンジンは、長時間実行されるアプリケーションでのメモリ リークを防ぐために解放する必要があるネイティブ リソースを使用します。

パターンの比較は次のとおりです。

// Recommended approach with using
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
    pdf.SaveAs("output.pdf");
} // Resources automatically released here

// Alternative with try-finally (more verbose)
PdfDocument pdf = null;
try
{
    pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("output.pdf");
}
finally
{
    pdf?.Dispose();
}
// Recommended approach with using
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
    pdf.SaveAs("output.pdf");
} // Resources automatically released here

// Alternative with try-finally (more verbose)
PdfDocument pdf = null;
try
{
    pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("output.pdf");
}
finally
{
    pdf?.Dispose();
}
' Recommended approach with Using
Using pdf = renderer.RenderHtmlAsPdf(html)
    pdf.SaveAs("output.pdf")
End Using ' Resources automatically released here

' Alternative with Try-Finally (more verbose)
Dim pdf As PdfDocument = Nothing
Try
    pdf = renderer.RenderHtmlAsPdf(html)
    pdf.SaveAs("output.pdf")
Finally
    If pdf IsNot Nothing Then
        pdf.Dispose()
    End If
End Try
$vbLabelText   $csharpLabel

非同期操作のために、C# 8.0+でawait usingを使用してください。

await using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
await using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
Await Using pdf = Await renderer.RenderHtmlAsPdfAsync(html)
$vbLabelText   $csharpLabel

最も効果的な一般的な HTML タグは何ですか?

IronPDF のChrome レンダリング エンジンは、すべての最新の HTML5 タグをサポートしていますが、PDF 生成に特に適したタグがいくつかあります。

ドキュメント構造:

<html>
<head>
    <meta charset="UTF-8">
    <style>
        @media print { /* PDF-specific styles */ }
        body { font-family: Arial, sans-serif; }
        .page-break { page-break-after: always; }
    </style>
</head>
<body>
    <h1>Document Title</h1>
    <div class="page-break"></div>
    <h2>New Page Content</h2>
</body>
</html>
<html>
<head>
    <meta charset="UTF-8">
    <style>
        @media print { /* PDF-specific styles */ }
        body { font-family: Arial, sans-serif; }
        .page-break { page-break-after: always; }
    </style>
</head>
<body>
    <h1>Document Title</h1>
    <div class="page-break"></div>
    <h2>New Page Content</h2>
</body>
</html>
HTML

PDF に最適なタグ:

  • <h6>: 明確なドキュメント階層を作成
  • <table>: 構造化データや請求書に最適
  • <img>: 埋め込み画像やbase64データをサポート
  • CSSを用いた<div>: 精密なレイアウト制御
  • <span>: 標準的なテキストフォーマット
  • <ol>: きれいなリストフォーマット

特別な考慮事項:

PDF 生成アプリケーションをテストするにはどうすればよいですか?

プロジェクトを実行すると、次の画面が表示されます。

テキスト入力フィールドには、シンプルなPDFファイル用のHTMLコードと変換ボタンを含むWindowsフォームアプリケーションを表示

RichTextBoxにHTMLコードを入力してください。例:

<h1>A Simple PDF File</h1><br><h6>Heading 6</h6>
<h1>A Simple PDF File</h1><br><h6>Heading 6</h6>
HTML

'Convert'をクリックします。 ファイルを保存するダイアログが表示されます。

WindowsでのPDF保存ダイアログボックスは、ファイルブラウザを表示し、Workドライブを選択し、HtmlToPDFをファイル名として表示

保存ボタンをクリックすると、指定したパスに名前と場所を指定したファイルが保存されます。

最初にどの HTML 要素をテストする必要がありますか?

IronPDF のレンダリング機能を理解するには、段階的に複雑になる HTML の例から始めてください。

基本的なテキスト書式設定:

<!DOCTYPE html>
<html>
<head>
    <style>
        body { font-family: Arial, sans-serif; margin: 40px; }
        .highlight { background-color: yellow; }
        .important { color: red; font-weight: bold; }
    </style>
</head>
<body>
    <h1>Test Document</h1>
    <p>This is <strong>bold</strong> and <em>italic</em> text.</p>
    <p class="highlight">Highlighted text example.</p>
    <p class="important">Important notice!</p>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
    <style>
        body { font-family: Arial, sans-serif; margin: 40px; }
        .highlight { background-color: yellow; }
        .important { color: red; font-weight: bold; }
    </style>
</head>
<body>
    <h1>Test Document</h1>
    <p>This is <strong>bold</strong> and <em>italic</em> text.</p>
    <p class="highlight">Highlighted text example.</p>
    <p class="important">Important notice!</p>
</body>
</html>
HTML

スタイル付きテーブル:

<table style="border-collapse: collapse; width: 100%;">
    <tr style="background-color: #f2f2f2;">
        <th style="border: 1px solid #ddd; padding: 8px;">Product</th>
        <th style="border: 1px solid #ddd; padding: 8px;">Price</th>
    </tr>
    <tr>
        <td style="border: 1px solid #ddd; padding: 8px;">IronPDF</td>
        <td style="border: 1px solid #ddd; padding: 8px;">$999</td>
    </tr>
</table>
<table style="border-collapse: collapse; width: 100%;">
    <tr style="background-color: #f2f2f2;">
        <th style="border: 1px solid #ddd; padding: 8px;">Product</th>
        <th style="border: 1px solid #ddd; padding: 8px;">Price</th>
    </tr>
    <tr>
        <td style="border: 1px solid #ddd; padding: 8px;">IronPDF</td>
        <td style="border: 1px solid #ddd; padding: 8px;">$999</td>
    </tr>
</table>
HTML

高度な機能:


<img src="___PROTECTED_URL_118___" width="200" alt="Company Logo">

<div style="page-break-after: always;"></div>

<ul>
    <li>First item</li>
    <li>Second item</li>
</ul>

<img src="___PROTECTED_URL_118___" width="200" alt="Company Logo">

<div style="page-break-after: always;"></div>

<ul>
    <li>First item</li>
    <li>Second item</li>
</ul>
HTML

これらの要素をテストして、 HTML から PDF への変換が期待どおりに機能することを確認します。

PDF が生成されない場合はどうすればデバッグできますか?

PDF 生成に失​​敗した場合は、次の体系的なデバッグ方法に従ってください。

1.ログを有効にする:

IronPdf.Logging.Logger.EnableDebugging = true;
IronPdf.Logging.Logger.LogFilePath = "IronPdfLog.txt";
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;
IronPdf.Logging.Logger.EnableDebugging = true;
IronPdf.Logging.Logger.LogFilePath = "IronPdfLog.txt";
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;
IronPdf.Logging.Logger.EnableDebugging = True
IronPdf.Logging.Logger.LogFilePath = "IronPdfLog.txt"
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All
$vbLabelText   $csharpLabel
  1. HTMLの有効性を確認する:

    // Validate HTML before conversion
    private bool IsValidHtml(string html)
    {
    try
    {
        var doc = new HtmlAgilityPack.HtmlDocument();
        doc.LoadHtml(html);
        return doc.ParseErrors.Count() == 0;
    }
    catch
    {
        return false;
    }
    }
    // Validate HTML before conversion
    private bool IsValidHtml(string html)
    {
    try
    {
        var doc = new HtmlAgilityPack.HtmlDocument();
        doc.LoadHtml(html);
        return doc.ParseErrors.Count() == 0;
    }
    catch
    {
        return false;
    }
    }
    ' Validate HTML before conversion
    Private Function IsValidHtml(html As String) As Boolean
        Try
            Dim doc As New HtmlAgilityPack.HtmlDocument()
            doc.LoadHtml(html)
            Return doc.ParseErrors.Count() = 0
        Catch
            Return False
        End Try
    End Function
    $vbLabelText   $csharpLabel
  2. Chrome DevToolsを使用:
    • HTMLをファイルに保存してChromeで開く
    • F12キーを押してJavaScriptエラーを確認します
    • コンソールで問題を確認する
    • Chromeの印刷プレビューを使用して、どのように表示されるかを確認します

4.よくある問題と解決策: -空白のPDF : JavaScriptでレンダリング遅延が必要かどうかを確認する -画像が見つからない:画像のパスが絶対パスであるか、base64 を使用していることを確認してください -フォントの問題:フォントを適切に埋め込む -レイアウトの問題: CSSメディアタイプの確認

5.最小限のテスト例:

// Start with the simplest possible HTML
var testHtml = "<h1>Test</h1>";
var pdf = new ChromePdfRenderer().RenderHtmlAsPdf(testHtml);
pdf.SaveAs("test.pdf");
// Start with the simplest possible HTML
var testHtml = "<h1>Test</h1>";
var pdf = new ChromePdfRenderer().RenderHtmlAsPdf(testHtml);
pdf.SaveAs("test.pdf");
' Start with the simplest possible HTML
Dim testHtml = "<h1>Test</h1>"
Dim pdf = New ChromePdfRenderer().RenderHtmlAsPdf(testHtml)
pdf.SaveAs("test.pdf")
$vbLabelText   $csharpLabel

アプリケーションを実行するときによくある問題は何ですか?

ジュニア開発者が遭遇する最も一般的な問題とその解決策は次のとおりです。

  1. "IronPdf.Exceptions.IronPdfDeploymentException"

  2. "アクセス拒否"エラー
    • 保護されたディレクトリ(C:\、Program Files)に保存しないでください
    • 安全なパスにはEnvironment.SpecialFolderを使用
    • WebアプリのIIS権限を確認する

3.大きなファイルサイズ

  • PDF圧縮を適用:
    pdf.CompressImages(90); // 90% quality
    pdf.CompressImages(90); // 90% quality
    pdf.CompressImages(90) ' 90% quality
    $vbLabelText   $csharpLabel

4.パフォーマンスの低下

5.コンテンツが不足している

問題が解決しない場合は、包括的なトラブルシューティング ガイドを参照してください。

最終的な PDF 出力はどのようになりますか?

出力PDFドキュメントは次のようになります。

白い背景にタイトル

PDF の品質を向上させるにはどうすればよいでしょうか?

以下のプロフェッショナルなテクニックを使用して、PDF 出力の品質を向上させます。

1.高解像度レンダリング:

renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.ImageQuality = 95; // Higher quality for images
renderer.RenderingOptions.DPI = 300; // Print-quality resolution
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.ImageQuality = 95; // Higher quality for images
renderer.RenderingOptions.DPI = 300; // Print-quality resolution
renderer.RenderingOptions.PrintHtmlBackgrounds = True
renderer.RenderingOptions.ImageQuality = 95 ' Higher quality for images
renderer.RenderingOptions.DPI = 300 ' Print-quality resolution
$vbLabelText   $csharpLabel

2.プロフェッショナルスタイリング:

<style>
    @page {
        size: A4;
        margin: 2cm;
    }
    body {
        font-family: 'Segoe UI', Tahoma, sans-serif;
        line-height: 1.6;
        color: #333;
    }
    h1 {
        color: #2c3e50;
        border-bottom: 2px solid #3498db;
        padding-bottom: 10px;
    }
</style>
<style>
    @page {
        size: A4;
        margin: 2cm;
    }
    body {
        font-family: 'Segoe UI', Tahoma, sans-serif;
        line-height: 1.6;
        color: #333;
    }
    h1 {
        color: #2c3e50;
        border-bottom: 2px solid #3498db;
        padding-bottom: 10px;
    }
</style>
HTML

3.視覚要素を追加する: -カスタムヘッダーとフッター -下書きの透かし -ページ番号 -企業ロゴ

4.さまざまな用途に合わせて最適化する: -画面表示: 低DPI (96-150)、 PDF圧縮 -印刷: 高DPI (300以上)、 CMYKカラー -アーカイブPDF/A形式

出力が予想と異なるのはなぜでしょうか?

HTML プレビューと PDF 出力のレンダリングの違いは、いくつかの要因によって発生する可能性があります。

  1. CSS メディア タイプ: PDF ではデフォルトで印刷メディアが使用されます。 印刷固有のスタイルを追加します。
    @media print {
    .no-print { display: none; }
    body { font-size: 12pt; }
    }

2.フォントの可用性: 一貫性を保つためにカスタムフォントを埋め込みます

@font-face {
    font-family: 'MyFont';
    src: url('data:font/woff2;base64,...') format('woff2');
}

3.動的コンテンツ: JavaScript でレンダリングされたコンテンツの読み込みには時間がかかります。

renderer.RenderingOptions.RenderDelay = 2000; // Wait 2 seconds
renderer.RenderingOptions.RenderDelay = 2000; // Wait 2 seconds
renderer.RenderingOptions.RenderDelay = 2000 ' Wait 2 seconds
$vbLabelText   $csharpLabel

4.ブラウザの違い: IronPDF はChromium を使用するため、正確なプレビューを行うには Chrome でテストしてください。 Chrome レンダラーについて学習します

5.解像度とスケーリング: モニターの DPI は印刷の DPI とは異なります。 一貫したレンダリングのためにビューポート設定を使用します。

ピクセルパーフェクトなレンダリングについては、 HTML から PDF へのベスト プラクティス ガイドに従ってください。

このチュートリアルの後の次のステップは何ですか?

上記のチュートリアルでは、IronPDFライブラリを使用してHTMLからPDFを作成する方法を説明しています。

詳細については、IronPDF公式サイトをご覧ください。 このライブラリは、完全にカスタマイズ可能なPDFファイルプログラムでのファイルのマージと分割、または単にさまざまな機能を示すサンプルコードのサポートを提供する他の機能も備えています。

30日間の試用版キーを使用して評価できます。 現在、5つのIron Software製品を2つの価格で入手できる素晴らしいオファーがあります。 ライセンスについての詳細は、このIronPDFライセンス情報をご覧ください。

次に学ぶべき高度な機能は何ですか?

HTML から PDF への基本的な変換を習得したら、次の高度な機能を調べてください。

  1. PDFフォーム: データ収集用の入力可能なフォームを作成します。
    // Create interactive form fields
    pdf.Form.Fields.Add(new PdfTextField("name", "Enter your name", 100, 100));
    // Create interactive form fields
    pdf.Form.Fields.Add(new PdfTextField("name", "Enter your name", 100, 100));
    ' Create interactive form fields
    pdf.Form.Fields.Add(New PdfTextField("name", "Enter your name", 100, 100))
    $vbLabelText   $csharpLabel

2.デジタル署名:文書にセキュリティと信頼性を追加する

  1. PDF Manipulation: -複数のPDFを結合する -特定のページを抽出する -ブックマークを追加する -スタンプや透かしを適用する

4.高度なレンダリング: -チャートとグラフ -バーコードとQRコード -複数列レイアウト

5.パフォーマンスの最適化:

  • Webアプリケーションの非同期レンダリング
  • 複数のドキュメントをバッチ処理
  • メモリ効率の高いストリーミング

プロジェクト要件に最も関連性の高い機能から始めます。

試用版から本番環境に移行するにはどうすればいいですか?

試験から生産への移行には、いくつかの重要なステップが含まれます。

1.適切なライセンスを選択する:

  • Lite : 単一の開発者、単一のプロジェクト -プラス: 単一の開発者、複数のプロジェクト -プロフェッショナル: 小規模チーム (開発者最大 3 名) -無制限:エンタープライズチーム

2.ライセンスキーを適用します

// In application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

// Or via configuration
// appsettings.json (for .NET Core)
{
  "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY"
}
// In application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

// Or via configuration
// appsettings.json (for .NET Core)
{
  "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY"
}
' In application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

' Or via configuration
' appsettings.json (for .NET Core)
' {
'   "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY"
' }
$vbLabelText   $csharpLabel

3.試用版の透かしを削除: ライセンス版では、生成されたすべての PDF から試用版の透かしが自動的に削除されます。

4.パフォーマンスに関する考慮事項:

5.展開チェックリスト: -サーバー要件を確認する

ライセンスに関する詳細なガイダンスについては、ライセンスに関する FAQ を参照してください。

より複雑な例はどこで見つかりますか?

以下の包括的なリソースを活用して、 IronPDF の知識を広げましょう。

1.コードサンプルライブラリ: -請求書の作成 -レポート作成 -バッチ処理

2.チュートリアルシリーズ:

3.統合ガイド

  1. APIドキュメント:
    • 包括的なクラスリファレンス
    • メソッドのシグネチャとパラメータ
    • 各機能のコードスニペット

5.コミュニティリソース:

まずはユースケースに最も近い例から始めて、必要に応じて徐々に高度な機能を調べてください。

よくある質問

C# で HTML を PDF に変換するにはどうすればいいですか?

IronPDFのRenderHtmlAsPdfメソッドを使用して、HTML文字列をPDFに変換できます。単にHtmlToPdfオブジェクトを作成し、メソッドを呼び出してHTMLをPDF文書にレンダリングします。

PDF生成のためにVisual Studioプロジェクトを設定するにはどのような手順が必要ですか?

まずVisual Studio 2019を開き、'新しいプロジェクトを作成'を選択し、'Windows Forms App'を選びプロジェクト名を設定します。その後、NuGetを経由してIronPDFをインストールし、PDF生成機能を統合し始めます。

Visual StudioでPDF生成ライブラリをインストールする方法は?

Visual Studioでパッケージマネージャーコンソールに移動し、コマンドInstall-Package IronPDFを実行することでIronPDFをインストールできます。

PDFを生成するためにフォームに含めるべきコンポーネントは何ですか?

ガイダンス用ラベル、HTML入力のためのリッチテキストボックス、そしてPDF生成のためにユーザーがクリックする'Convert'ラベルの付いたボタンを含めます。

PDFファイル作成のためのバックエンドコードをどのように実装しますか?

IronPDFを使用してHtmlToPdfオブジェクトを宣言します。テキストボックスからHTML入力を取得して、PDFを保存するようユーザーに促し、RenderHtmlAsPdfメソッドでHTMLをレンダリングします。

HtmlToPdfオブジェクトのPDFライブラリにおける機能は何ですか?

IronPDFのHtmlToPdfオブジェクトは、ライブラリの包括的な変換機能を使用してHTMLコンテンツをPDF文書に変換するために使用されます。

PDF生成プロジェクトが正しく機能しているかどうかをどのように確認しますか?

Visual Studioでプロジェクトを実行し、RichTextBoxにHTMLを入力し、'Convert'をクリックします。その後、SaveFileDialogを使ってPDFファイルの保存場所を選択し、変換が成功したかを確認します。

PDFライブラリが提供する高度な機能は何ですか?

IronPDFは完全にカスタマイズ可能なPDFの作成、ファイルのプログラム的なマージおよび分割を可能にします。ライブラリは様々な機能を持つサンプルコードも提供します。

購入前にPDFライブラリを試用できますか?

はい、IronPDFの公式ウェブサイトで30日間の試用キーが利用可能で、購入を決定する前にその機能を探求できます。

PDFライブラリのライセンス詳細はどこで確認できますか?

IronPDFライセンス情報ページでライセンスの詳細を確認でき、オプションおよび現在のオファーが記載されています。

IronPDF は .NET 10 と互換性がありますか?

はい。IronPDF はすでにすべての最新の .NET バージョンをサポートしており、2025 年 11 月に予定されている .NET 10 リリースにも対応しています。追加の回避策を必要とせず、.NET 10 プロジェクトですぐに使用できます。(ironpdf.com/blog/using-ironpdf/5-steps-to-generate-a-pdf-file-in-c-sharp/)

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね