IRON SUITEの使用

C#でHTMLファイルからPDFを作成

IronPDF はプログラムによって HTML を PDF ドキュメントに変換します。

C#でPDFを作成する方法 - HTMLからPDFへの変換例

この記事全体のソース コードは、C# HTML から PDF へのプロジェクト ソース コードのダウンロードとして C# で入手できます。

次のチュートリアルでは、IronPDF をC# PDF ジェネレーターとして使用するプロセスについて説明します。 基本的な内容だけでなく、多くの高度なC# PDFトピックもカバーしています。

HTMLからPDFへのウォークスルー

このデモでは、IronPdf の使用方法の例を説明します。 Iron Software から追加のユースケースデモをリクエストします

デモは、Hello World、 RenderHtmlAsPdfRenderUrlAsPdfの例で構成されています。 すべての例は、IronPDF デモ ソリューションの対応するプロジェクトにあります。

ステップ1: インストール

IronPdf は NuGet 経由でインストールできます。 The package name is IronPDF NuGet Package.

Or you can use the Direct Library Download.

ステップ2: Hello World

IronPDF をインストールしてプロジェクトで参照すると、いくつかの文字列を入力するだけですぐに使用を開始できます。

// Create a new instance of ChromePdfRenderer
var chromePdfRenderer = new ChromePdfRenderer();
// Create a new instance of ChromePdfRenderer
var chromePdfRenderer = new ChromePdfRenderer();
' Create a new instance of ChromePdfRenderer
Dim chromePdfRenderer As New ChromePdfRenderer()
$vbLabelText   $csharpLabel

次に、HTML を PDF に変換する必要がある場合:

// Define HTML content to turn into PDF
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";

// Render the HTML string as a PDF
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);

// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
// Define HTML content to turn into PDF
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";

// Render the HTML string as a PDF
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);

// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
' Define HTML content to turn into PDF
Dim html = "<h1>Hello World!</h1><br><p>This is IronPdf.</p>"

' Render the HTML string as a PDF
Dim pdf = chromePdfRenderer.RenderHtmlAsPdf(html)

' Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"))
$vbLabelText   $csharpLabel

または、Web ページを PDF ファイルに変換する場合:

// URI of the page to turn into PDF
var uri = new Uri("http://www.google.com/ncr");

// Render the webpage as a PDF
using var pdf = chromePdfRenderer.RenderUrlAsPdf(uri);

// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
// URI of the page to turn into PDF
var uri = new Uri("http://www.google.com/ncr");

// Render the webpage as a PDF
using var pdf = chromePdfRenderer.RenderUrlAsPdf(uri);

// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
' URI of the page to turn into PDF
Dim uri As New Uri("http://www.google.com/ncr")

' Render the webpage as a PDF
Dim pdf = chromePdfRenderer.RenderUrlAsPdf(uri)

' Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"))
$vbLabelText   $csharpLabel

以上です! 対応する結果は次のとおりです。

! C#でHTMLファイルからPDFを作成する、図1: HTMLをPDFに変換した結果 HTMLをPDFに変換した結果**

! HTMLファイルからC#でPDFを作成する、図2:WebページをPDFに変換した結果 ウェブページをPDFに変換した結果

コード サンプルは IronPDFDemo.HelloWorld プロジェクトにあります。

ステップ3: RenderHtmlAsPdf

例1

より現実的な例を評価するために、HTML 請求書を PDF に変換する必要があると想像してください。 これを実行する方法を示すコードは次のとおりです。

注:請求書の HTML は IronPDFDemo.DemoWebSite プロジェクト (~/Static/TestInvoice1.html) にあります。 請求書には"印刷"メディア タイプ用のカスタム CSS が含まれていることに注意してください。

ソース請求書はブラウザでは次のようになります。

! HTML ファイルから C# で PDF を作成する (図 4):


これを PDF ファイルに変換するには、上記の HelloWorld の例に似たコードが使用されますが、違いはソース HTML ファイルです。

// Read HTML from file
var html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"));
var chromePdfRenderer = new ChromePdfRenderer();
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"));
// Read HTML from file
var html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"));
var chromePdfRenderer = new ChromePdfRenderer();
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"));
' Read HTML from file
Dim html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"))
Dim chromePdfRenderer As New ChromePdfRenderer()
Dim pdf = chromePdfRenderer.RenderHtmlAsPdf(html)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"))
$vbLabelText   $csharpLabel

結果は次のとおりです:

! C#でHTMLファイルからPDFを作成する、図5: HTMLからPDFファイルを生成 HTMLからPDFファイルを生成する

素晴らしいですね! コード サンプルは IronPDFDemo.RenderHtmlAdPdfDemo プロジェクトにあります。

IronPDFでバイト配列を含むHTMLドキュメントまたは文字列を使用する方法についてのこの質問もご覧ください

例2

このセクションでは、例 1 の結果の PDF をカスタマイズする方法を説明します。たとえば、カスタム マージン、ドキュメント タイトルを含むヘッダー、作成日とページ番号を含むフッター、標準の請求書にある"印刷"メディア タイプ用のカスタム CSS などを追加します。 これを行うには、 ChromePdfRenderOptionsのインスタンスを初期化し、 ChromePdfRendererコンストラクターに渡します。

// Configure rendering options with margins, headers, and footers
var pdfRenderingOptions = new ChromePdfRenderOptions()
{
    MarginTop = 50,
    MarginBottom = 50,
    TextHeader = new TextHeaderFooter()
    {
        CenterText = "{pdf-title}",
        DrawDividerLine = true,
        FontSize = 16
    },
    TextFooter = new TextHeaderFooter()
    {
        LeftText = "{date} {time}",
        RightText = "Page {page} of {total-pages}",
        DrawDividerLine = true,
        FontSize = 14
    },
    CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
};

var chromePdfRenderer = new ChromePdfRenderer(pdfRenderingOptions);
// Configure rendering options with margins, headers, and footers
var pdfRenderingOptions = new ChromePdfRenderOptions()
{
    MarginTop = 50,
    MarginBottom = 50,
    TextHeader = new TextHeaderFooter()
    {
        CenterText = "{pdf-title}",
        DrawDividerLine = true,
        FontSize = 16
    },
    TextFooter = new TextHeaderFooter()
    {
        LeftText = "{date} {time}",
        RightText = "Page {page} of {total-pages}",
        DrawDividerLine = true,
        FontSize = 14
    },
    CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
};

var chromePdfRenderer = new ChromePdfRenderer(pdfRenderingOptions);
' Configure rendering options with margins, headers, and footers
Dim pdfRenderingOptions = New ChromePdfRenderOptions() With {
	.MarginTop = 50,
	.MarginBottom = 50,
	.TextHeader = New TextHeaderFooter() With {
		.CenterText = "{pdf-title}",
		.DrawDividerLine = True,
		.FontSize = 16
	},
	.TextFooter = New TextHeaderFooter() With {
		.LeftText = "{date} {time}",
		.RightText = "Page {page} of {total-pages}",
		.DrawDividerLine = True,
		.FontSize = 14
	},
	.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
}

Dim chromePdfRenderer As New ChromePdfRenderer(pdfRenderingOptions)
$vbLabelText   $csharpLabel

ヒント:コンストラクターでオプションをパラメーターとして渡す代わりに、 ChromePdfRendererインスタンスの対応するフィールドを設定できます。

var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;
var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;
Dim chromePdfRenderer As New ChromePdfRenderer()
chromePdfRenderer.RenderingOptions = pdfRenderingOptions
$vbLabelText   $csharpLabel

注:ヘッダーとフッターにはマージ機能が備わっているため、すべてのマージ フィールド ( {page}{total-pages}{url}{date}{time}{html-title}{pdf-title} ) に、対応するデータを入力できます。

残りのコードは例 1 と同じです。結果は次のようになります。

! HTMLファイルからC#でPDFを作成する、図6: ヘッダーとフッター付きの請求書を生成する ヘッダーとフッター付きの請求書を生成する

"印刷"メディア タイプのカスタム マージン、ヘッダー、フッター、および CSS が設定されました。 コード サンプルは IronPDFDemo.RenderHtmlAdPdfDemo プロジェクトにあります。 詳細な設定については、IronPDF API リファレンスを参照してください。

ステップ4: RenderUrlAsPdf

設定

このセクションのサンプルを実行するには、IronPDFDemo.DemoWebSite をローカルでホストする必要があります。 IIS Express でこれを行うには:

  1. DemoWebSiteへ移動
  2. 右クリック > スタートアッププロジェクトとして設定
  3. デバッグなしで開始する(Ctrl+F5)
  4. {baseurl}/Static/TestInvoice1.htmlに移動して、動作していることを確認します。 これは、URL http://localhost:51169/Static/TestInvoice1.htmlです (対応するプロジェクト設定を変更しない場合は同じになります)。

例1

このセクションでは、HelloWorld の例と同じコードを使用して、ホストされている DemoWebSite 請求書を PDF に変換します。 違いはホストされている URL にあります。

// URL of the hosted invoice webpage
var uri = new Uri("http://localhost:51169/Static/TestInvoice1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));
// URL of the hosted invoice webpage
var uri = new Uri("http://localhost:51169/Static/TestInvoice1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));
' URL of the hosted invoice webpage
Dim uri As New Uri("http://localhost:51169/Static/TestInvoice1.html")
Dim urlToPdf = New ChromePdfRenderer()
Dim pdf = urlToPdf.RenderUrlAsPdf(uri)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"))
$vbLabelText   $csharpLabel

結果は次のとおりです:

! HTMLファイルからC#でPDFを作成する、図7: ホストされたWebサイトをPDFに生成する ホストされたウェブサイトをPDFで生成する

これは素晴らしいです。期待どおりのようです。 コード サンプルは IronPDFDemo.RenderUrlAsPdfDemo プロジェクト内にあります。

例2

多くの Web サイトは認証方法によって保護されています。 このセクションでは、カスタム マージン、ドキュメント タイトルを含むヘッダー、作成日とページを含むフッター、および"印刷"メディア タイプ用のカスタム CSS などのカスタマイズを施した PDF ファイルをレンダリングするプロセス中に、提供されたユーザー名とパスワードを使用します。 請求書の URL はhttp://localhost:51169/Invoiceです。

http://localhost:51169/Invoiceにアクセスすると、"認証が必要です"というフォームが表示されます。

! HTMLファイルからC#でPDFを作成する、図8: 認証が必要なフォーム 認証が必要なフォーム

>注:資格情報は"testUser"/"testPassword"です。

では、認証をバイパスするにはどうすればよいでしょうか? HttpLoginCredentialsを設定することで:

// URL of the protected invoice webpage
var uri = new Uri("http://localhost:51169/Invoice");

// Configure renderer with login credentials to bypass authentication
var urlToPdf = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions()
    {
        MarginTop = 50,
        MarginBottom = 50,
        TextHeader = new TextHeaderFooter()
        {
            CenterText = "{pdf-title}",
            DrawDividerLine = true,
            FontSize = 16
        },
        TextFooter = new TextHeaderFooter()
        {
            LeftText = "{date} {time}",
            RightText = "Page {page} of {total-pages}",
            DrawDividerLine = true,
            FontSize = 14
        },
        CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
    },

    // Set login credentials to bypass basic authentication
    LoginCredentials = new HttpLoginCredentials()
    {
        NetworkUsername = "testUser",
        NetworkPassword = "testPassword"
    }
};

using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));
// URL of the protected invoice webpage
var uri = new Uri("http://localhost:51169/Invoice");

// Configure renderer with login credentials to bypass authentication
var urlToPdf = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions()
    {
        MarginTop = 50,
        MarginBottom = 50,
        TextHeader = new TextHeaderFooter()
        {
            CenterText = "{pdf-title}",
            DrawDividerLine = true,
            FontSize = 16
        },
        TextFooter = new TextHeaderFooter()
        {
            LeftText = "{date} {time}",
            RightText = "Page {page} of {total-pages}",
            DrawDividerLine = true,
            FontSize = 14
        },
        CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
    },

    // Set login credentials to bypass basic authentication
    LoginCredentials = new HttpLoginCredentials()
    {
        NetworkUsername = "testUser",
        NetworkPassword = "testPassword"
    }
};

using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));
' URL of the protected invoice webpage
Dim uri As New Uri("http://localhost:51169/Invoice")

' Configure renderer with login credentials to bypass authentication
Dim urlToPdf = New ChromePdfRenderer With {
	.RenderingOptions = New ChromePdfRenderOptions() With {
		.MarginTop = 50,
		.MarginBottom = 50,
		.TextHeader = New TextHeaderFooter() With {
			.CenterText = "{pdf-title}",
			.DrawDividerLine = True,
			.FontSize = 16
		},
		.TextFooter = New TextHeaderFooter() With {
			.LeftText = "{date} {time}",
			.RightText = "Page {page} of {total-pages}",
			.DrawDividerLine = True,
			.FontSize = 14
		},
		.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
	},
	.LoginCredentials = New HttpLoginCredentials() With {
		.NetworkUsername = "testUser",
		.NetworkPassword = "testPassword"
	}
}

Dim pdf = urlToPdf.RenderUrlAsPdf(uri)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"))
$vbLabelText   $csharpLabel

>注: ChromePdfRenderer Example2 と同じカスタマイズが使用されます。

結果は次のとおりです:

! HTMLファイルからC#でPDFを作成する、図9: PDFファイルに資格情報を含むHTMLサイトを生成する 資格情報を含む HTML サイトを PDF ファイルに生成します

すべてが整っています。 コード サンプルは IronPDFDemo.RenderUrlAsPdfDemo プロジェクトにあります。 HttpLoginCredentials がない場合、結果がどうなるか気になる場合は、次のようになります。

! HTMLファイルからC#でPDFを作成する、図10: 認証情報なしで空のPDFファイルを生成する 資格情報なしで空のPDFファイルを生成する

Jeanの.NET HTML to PDFチュートリアルもご覧ください。

さらに、IronPDF はさまざまな方法で PDF と対話することもできます。