このページには自動翻訳されたテキストを含めることができます。

HTMLからPDFへの変換機能

Docotic.Pdf ライブラリを使用して、HTML を PDF に変換できます。 データから美しい PDF を作成する方法 については、このページに記載されているリソースを確認してください。

HTMLからPDFへの変換プロセス

HTMLからPDFへの変換にはHTML to PDFアドオンが必要です。 これは Docotic.Pdf ライブラリの無料アドオンです。 アドオンは、ライブラリ バイナリを含む zip ファイ ル でも入手できます。

Docotic.Pdf ライブラリ 9.5.17615-dev HTMLからPDFへのアドオン 9.5.17615-dev
回帰テスト 14,813人が合格 NuGet の合計ダウンロード数 4,924,084

APIリファレンス

私たちのサイトでは、HTML to PDF アドオンの API リファレン ス を提供しています。

記事

C# および VB.NET コードでの HTML から PDF への変換の詳細については、以下をお読みください。

サンプル コード

HTML から PDF への変換は、さまざまな関連タスクを説明できる用語です。次のセクションでは、これらのタスクについて詳しく説明します。

HTML から PDF への C# 変換

まずアドオンをインストールする必要があります。パッケージ マネージャーを使用して、NuGet から HTML から PDF へのアドオンをインストールします。

Install-Package BitMiracle.Docotic.Pdf.HtmlToPdf

このアドオンは非同期専用の API を提供します。非同期イベント ハンドラーと非同期メソッドで動作するように設計しました。このアドオンは、Windows フォーム、WPF、ASP.NET、コンソール アプリケーションで使用できます。

C# HTML から PDF へのコードは次のようになります。

using var converter = await HtmlConverter.CreateAsync();
var uri = new Uri("https://bitmiracle.com/pdf-library/html-pdf/");
using var pdf = await converter.CreatePdfAsync(uri);
pdf.Save("out.pdf");

このコードは、HTML から PDF へのコンバーターのインスタンスを作成します。次に、このインスタンスを使用して HTML から PDF を作成します。PDF ドキュメント の操作を続行できますが、サンプル コードではドキュメントを保存するだけです。

コンソール アプリケーションで古いバージョンの C# を使用していて、async Main がない場合でも心配はいりません。アプリでアドオンを引き続き使用できます。

次のコードは、通常の同期メソッドで URL を PDF に変換する方法を示しています。

Task.Run(async () =>
{
    using var converter = await HtmlConverter.CreateAsync();
    var uri = new Uri("https://bitmiracle.com/pdf-library/html-pdf/");
    using var pdf = await converter.CreatePdfAsync(uri);
    pdf.Save("out.pdf");
}).GetAwaiter().GetResult();

VB.NET アプリケーションでも同様のコードを使用します。以下は、VB.NET で HTML を PDF に変換する方法を示したスニペットです。

Task.Run(
    Async Function()
        Using converter = Await HtmlConverter.CreateAsync()
            Dim uri = New Uri("https://bitmiracle.com/pdf-library/html-pdf/")
            Using pdf = Await converter.CreatePdfAsync(uri)
                pdf.Save("out.pdf")
            End Using
        End Using
    End Function
).GetAwaiter().GetResult()

GitHub リポジトリから完全なテスト プロジェクトをダウンロードします:

C# で HTML 文字列を PDF に変換する

一般的なタスクの 1 つは、C# または VB.NET アプリケーションで HTML から PDF を生成することです。このプロセスは、アプリケーションがデータベースからデータを取り込むテンプレートから開始される場合があります。Web サイトのユーザーがテンプレート、データ、またはその両方を作成することは珍しくありません。

自動生成またはアップロードされた HTML は、ファイルまたはコードを含む文字列の形式を取ることができます。アドオンには、ファイル パスを受け入れる メソッドが用意されています。このメソッドを使用して、C# コードで HTML ファイルを PDF に変換します。次のコードは、文字列がある場合のコードです。

using var converter = await HtmlConverter.CreateAsync();

var html = "<body><br><br><br><h1>Hello, World</h1></body>";
using var pdf = await converter.CreatePdfFromStringAsync(html);
pdf.Save("out.pdf");

HTML には、画像、スクリプト、CSS ファイルへの相対参照を含めることができます。このようなコードを適切に変換するには、変換オプションを使用する必要があります。オプションを使用してベース URL を指定する方法は次のとおりです。

using var converter = await HtmlConverter.CreateAsync();

var incompleteHtml = "<img src=\"/images/team.svg\"></img>";
var options = new HtmlConversionOptions();
options.Load.BaseUri = new Uri("https://bitmiracle.com/");
using var pdf = await converter.CreatePdfFromStringAsync(incompleteHtml, options);
pdf.Save("out.pdf");

当社の GitHub リポジトリには 完全なテスト プロジェクト が含まれています。

変換前にJavaScriptを実行する

アドオン API は、変換前に JS コードを実行する方法を提供します。このコードは HTML コンテンツを動的に生成または変更できます。たとえば、要素を切り替えたり、動的なコンテンツの読み込みを実行したりできます。

次のコードは、JavaScript が完了するまで HTML から PDF への変換を遅延する方法を示しています。

using var converter = await HtmlConverter.CreateAsync();

var options = new HtmlConversionOptions();
var js = @"document.body.style.backgroundColor = 'green';";
options.Start.SetStartAfterScriptRun(js);

var url = new Uri("https://google.com");
using var pdf = await converter.CreatePdfAsync(url, options);
pdf.Save("out.pdf");

上記のスニペットでは、アプローチを説明するためだけに非常にシンプルなコードを使用しています。より現実的な例については、GitHub リポジトリの 対応するサンプル アプリ をご覧ください。このアプリは、コンテンツを動的に読み込むページの処理方法を示しています。アプリ内の JavaScript コードは、新しいコンテンツがなくなるまでページをスクロールします。その後、PDF への変換が行われます。

SSLエラーを無視する

HTML を読み込むための安全なリクエストを送信する場合、アドオンは、Web サイトの ID を認証し、暗号化された接続を可能にする SSL 証明書が有効で信頼できるかどうかを確認します。

デフォルトでは、HTML から PDF へのコンバーターが何らかの理由で証明書を信頼しない場合、アドオンは例外をスローします。信頼されていない証明書を受け入れることのリスクを理解している場合は、アドオンにチェックをバイパスするように指示できます。

var engineOptions = new HtmlEngineOptions
{
    IgnoreSslErrors = true
};
using var converter = await HtmlConverter.CreateAsync(engineOptions);

var url = new Uri("https://self-signed.badssl.com/");
using var pdf = await converter.CreatePdfAsync(url);
pdf.Save("out.pdf");

完全なコード については、Docotic.Pdf サンプル リポジトリをご覧ください。

保護されたページのパスワードを入力する

一部の Web ページでは、アクセスするために認証が必要です。HTTP 認証を必要とする安全な URL にアクセスすると、ブラウザはユーザー名とパスワードの入力を求めます。

変換オプションを使用すると、ログインが必要な Web ページの資格情報を提供するように API に指示できます。

このC#コードは、パスワードで保護されたHTMLをPDFに変換する方法を示しています。

using var converter = await HtmlConverter.CreateAsync();
var url = new Uri("http://httpbin.org/basic-auth/foo/bar");

var options = new HtmlConversionOptions();
options.Authentication.SetCredentials("foo", "bar");

using var pdf = await converter.CreatePdfAsync(url, options);
pdf.Save("out.pdf");

サンプル リポジトリで 完全な動作サンプル を見つけます。

変換前に待つ

ページが読み込まれた後もしばらく更新され続ける場合は、HTML から PDF への変換を遅らせると便利です。これは、JavaScript または AJAX 呼び出しによって生成された動的コンテンツを処理する場合によく発生します。

Acid 3 テストは、変換前に遅延を設定することでメリットが得られるページの好例です。このテストでは、複雑な Web ページを正しくレンダリングするブラウザーの能力を評価するために、いくつかのチェックを実行します。これらのチェックには時間がかかります。次のコードで待機時間を変更して、変換結果にどのような影響があるかを確認してください。

var options = new HtmlConversionOptions();
options.Start.SetStartAfterDelay(10 * 1000);

using var converter = await HtmlConverter.CreateAsync();
var url = new Uri("http://acid3.acidtests.org/");
using var pdf = await converter.CreatePdfAsync(url, options);
pdf.Save("out.pdf");

上記のコードは、遅延を使用して HTML を PDF に変換する方法を示しています。時間を追加すると、より良い結果が得られますが、遅延を追加するとパフォーマンスに影響する可能性があることに注意してください。遅延が不十分だと、変換の品質に悪影響を与える可能性があります。遅延を使用する代わりに、ページの準備ができるまで実行される スクリプトを使用する という方法もあります。

完全なテスト プロジェクト は Docotic.Pdf サンプル リポジトリから入手できます。

HTML から PDF への API は、生成されたページに繰り返し可能なフッター/ヘッダー ブロックを追加できます。コンバーターは、変換オプションで指定された HTML テンプレートからブロックを作成します。テンプレート内の画像には、インライン スタイルとデータ URI を使用することをお勧めします。

コンバーターは、ヘッダーとフッターをページ余白内に配置します。ページ余白が小さい場合、ヘッダーとフッターの内容が表示されないことがあります。上部余白と下部余白を明示的に指定することをお勧めします。サイズは、それぞれヘッダーとフッターのサイズと一致する必要があります。

HTMLをPDFに変換し、ヘッダーとフッターを追加する方法をご覧ください

using var converter = await HtmlConverter.CreateAsync();

var options = new HtmlConversionOptions();
options.Page.HeaderTemplate = File.ReadAllText("header-template.html");
options.Page.MarginTop = 50;

options.Page.FooterTemplate = File.ReadAllText("footer-template.html");
options.Page.MarginBottom = 50;

var url = new Uri("https://www.iana.org/numbers");
using var pdf = await converter.CreatePdfAsync(url, options);
pdf.Save("out.pdf");

コンバーターは、テンプレート内の定義済みの場所に、変換日やドキュメント タイトルなどの値を挿入できます。詳細については、HeaderTemplate プロパティと FooterTemplate プロパティの説明を参照してください。

完全な テスト プロジェクトとテンプレート コード は Docotic.Pdf サンプル リポジトリにあります。

コンテンツのスケール

幅の広いレイアウトの Web ページを扱う場合、出力 PDF サイズを大きくするか、コンテンツを縮小して PDF ページに収まるようにすることができます。拡大されたコンテンツをより適切に配置するために、余白を設定することもできます。

適切に拡大縮小された PDF では、読者はコンテンツを適切に表示するために拡大または縮小する必要がないため、読みやすさが向上します。フォント サイズが小さいために HTML ドキュメントが読みにくい場合は、コンテンツを拡大できます。

デフォルトでは、API はページ サイズが A4 の PDF を生成します。余白や拡大はありません。変換オプションを使用して、これらの設定を変更できます。

HTMLからPDFを生成する際にスケール係数と余白を設定する方法をご覧ください

using var converter = await HtmlConverter.CreateAsync();

var html = "<html><head><style>body { background-color: coral; margin-top: 100px;}</style></head>" +
"<body><h1>Did you notice the margins and the scale?</h1></body></html>";

var options = new HtmlConversionOptions();
options.Page.MarginLeft = 10;
options.Page.MarginTop = 20;
options.Page.MarginRight = 30;
options.Page.MarginBottom = 40;
options.Page.Scale = 1.5;

using var pdf = await converter.CreatePdfFromStringAsync(html, options);
pdf.Save("out.pdf");

Docotic.Pdf サンプル リポジトリには 完全なプロジェクト が含まれています。

既存のPDFにHTMLを重ねる

既存の PDF を変換結果の背景として使用したい場合があります。これは Docotic.Pdf とアドオンで可能です。

この方法では、HTML (オーバーレイ コンテンツ) から新しい PDF を作成し、それを既存の PDF と結合します。最終的なドキュメントには、元のコンテンツと新しいオーバーレイの両方が含まれます。この方法を説明するコードを以下に示します。

using var converter = await HtmlConverter.CreateAsync();

var options = new HtmlConversionOptions();
options.Page.SetSizeInches(4.13, 5.83);

string htmlCode =
    "<div style=\"position: absolute; top: 270px; right: 100px;\">" +
    "I would like to put this here</div>";
using var htmlPdf = await converter.CreatePdfFromStringAsync(htmlCode, options);

using var pdf = new PdfDocument("pdf-to-merge-with.pdf");
var xObj = pdf.CreateXObject(htmlPdf.Pages[0]);

pdf.Pages[0].Canvas.DrawXObject(xObj, 0, 0);
pdf.Save("out.pdf");

オーバーレイのページ サイズを指定することが重要です。通常、サイズはオーバーレイするページのサイズと同じである必要があります。次に、オーバーレイ コンテンツを含む新しい PDF を作成する必要があります。背景はデフォルトで透明であることに注意してください。必要に応じて、変換前にスクリプトを実行する ことで背景を変更できます。

既存の PDF を開きます。このドキュメントは、生成された PDF のページから XObject を作成する必要があります。次に、コードは既存のページの上に XObject を描画します。

完全な サンプル ソース PDF を含むテスト プロジェクト は、Docotic.Pdf サンプル リポジトリにあります。

C# で SVG を PDF に変換する

HTML から PDF へのコンバーターを使用して、スケーラブルなベクター グラフィックを含む画像から PDF を作成します。次のコードは、変換を実行する最も簡単な方法を示しています。

using var converter = await HtmlConverter.CreateAsync();
var uri = new Uri("https://bitmiracle.com/images/team.svg");
using var pdf = await converter.CreatePdfAsync(uri);
pdf.Save("out.pdf");

コンバーターは、SVG 画像で指定された幅および/または高さを使用して、正しいサイズの高品質の出力を生成します。

カスタマイズオプションを使用して異なるサイズの出力を作成できます。変換した画像を別のPDFに追加することも可能です。

GitHub で 完全なテスト プロジェクト を確認してください。