DioDocs for PDF ライブラリとともに GcHtml ライブラリを使用することで、HTML コンテンツを簡単に PDF ドキュメントに描画できます。GcHtml のようなユーティリティライブラリを使用すれば、請求書や報告書などの HTML ファイルを PDF に変換し、レイアウト、スタイル、フォーマットの乱れを気にすることなく印刷できます。また、PDF ドキュメントに HTML コンテンツを追加することもできます。
GcHtml は、ヘッドレスモードで動作する Chrome ウェブブラウザエンジンをベースにしており、Windows、Linux、macOS など任意のプラットフォームで HTML を PDF に描画できます。.NET アプリケーションが x64、x86、AnyCPU のいずれのプラットフォームをターゲットに構築されているかは関係ありません。ブラウザは常に別プロセスで動作しています。
GrapeCity.DioDocs.Html.ja パッケージには、以下の名前空間が含まれています。
プロジェクトに GcHtml パッケージをインストールするには、以下の手順を参照してください。
Visual Studio を開き、新規の .NET Core コンソールアプリケーションを作成します。
[ソリューションエクスプローラー]にて[依存関係]を右クリックし、[NuGetパッケージの管理]を選択します。
表示される [NuGetパッケージマネージャー]の[パッケージソース]にて、[nuget.org]を選択します。その後、「参照」タブにて「GrapeCity.DioDocs.Pdf.ja」を検索し、[インストール]をクリックします。
同様に、「GrapeCity.DioDocs.Html.ja」をインストールします。
GcHtml パッケージが正常にインストールされたら、Program.cs ファイルに以下の名前空間を追加します。
C# |
コードのコピー
|
---|---|
using GrapeCity.Documents.Html; using GrapeCity.Documents.Pdf; using GrapeCity.Documents.Drawing; |
GcHtml ライブラリの GcHtmlBrowser クラスに DioDocs for PDF ライセンスを適用すると、HTML を PDF に変換できるようになります。ライセンスを適用しないと、PDF への変換回数が5回に制限されます。ライセンスは、次のいずれかの方法で適用できます。
サンプルコードを記述します。
GcHtml を使用して、HTML Web ページを PDF に描画することができます。GcHtml では、PdfOptions クラス、GcHtmlBrowser クラス、HtmlPage クラスの SaveAsPdf メソッドを使用して、HTML を PDF に描画できます。
HTML Web ページを PDF に描画するには、以下の手順を参照してください。
C# |
コードのコピー
|
---|---|
// Web ページがレンダリングされる一時ファイルを取得します var tmp = Path.GetTempFileName(); // PDF に描画する Web ページの URI です var uri = new Uri(@"https://www.google.co.jp"); // オプションを設定します var pdfOptions = new PdfOptions() { PageWidth = 8.5f, PageHeight = 11f, Margins = new PdfMargins(0.2f, 1, 0.2f, 1), Landscape = true, Scale = 1.1f }; // HTML の描画に使用する GcHtmlBrowser のインスタンスを生成します var browserPath = BrowserFetcher.GetSystemChromePath(); using var browser = new GcHtmlBrowser(browserPath); // ソース Web ページを一時ファイルに描画します using var htmlPage = browser.NewPage(uri); htmlPage.SaveAsPdf(tmp, pdfOptions); // 作成した PDF を一時ファイルからターゲットストリームにコピーします using (var ts = File.OpenRead(tmp)) ts.CopyTo(stream); // 一時ファイルを削除します File.Delete(tmp); |
出力された PDF は以下のようになります。
HTML ページや文字列を PDF ドキュメントに追加するには、GcPdfGraphicsExt クラスの DrawHtml メソッドを使用します。
HTML 形式の文字列を PDF に描画するには、以下の手順を参照してください。
C# |
コードのコピー
|
---|---|
// 描画するコンテンツを表す HTMLのコード var html = "<!DOCTYPE html>" + "<html>" + "<head>" + "<style>" + "span.bold {" + "font-weight: bold;" + "}" + "p.round {" + "font: 36px arial, sans-serif;" + "color: DarkSlateBlue;" + "border: 4px solid SlateBlue;" + "border-radius: 16px;" + "padding: 3px 5px 3px 5px;" + "text-shadow: 3px 2px LightSkyBlue;" + "}" + "</style>" + "</head>" + "<body>" + "<p class='round'>Hello, World, from <span class='bold'>GcHtml</span>!</p>" + "</body>" + "</html>"; // 新しい PDF ドキュメントを作成してから、ページを追加し、描画するグラフィックを取得します var doc = new GcPdfDocument(); var page = doc.NewPage(); var g = page.Graphics; try { // HTML の描画に使用する GcHtmlBrowser のインスタンスを作成します var browserPath = BrowserFetcher.GetSystemChromePath(); using var browser = new GcHtmlBrowser(browserPath); // HTMLを描画します var ok = g.DrawHtml(browser, html, 72, 72, new HtmlToPdfFormat(false) { MaxPageWidth = 6.5f, MaxPageHeight = 9f }, out SizeF size); } catch (Exception ex) { throw new Exception($"エラー:\n{ex.Message}"); } // 完了 doc.Save(stream); |
出力された PDF は以下のようになります。
HTML を PDF に描画する方法の詳細については、DioDocs for PDF サンプルブラウザを参照してください。
アプリケーションが、廃止された GcHtmlRenderer クラスを使用して HTML ページまたはコンテンツを PDF 形式に変換している場合、以下の手順にて、Chromium のカスタムビルドに依存せず GPL や LGPL ライセンスが不要な新しい GcHtmlBrowser クラスへ簡単に移行できます。
C# |
コードのコピー
|
---|---|
GcHtmlRenderer.SetGcPdfLicenseKey(key); ⇒ GcHtmlBrowser.SetGcPdfLicenseKey(key); |
C# |
コードのコピー
|
---|---|
var path = BrowserFetcher.GetSystemChromePath();
|
C# |
コードのコピー
|
---|---|
var tp = Path.GetTempPath(); var bf = new BrowserFetcher() { DestinationFolder = Path.Combine(tp, "Chrome") }; var path = bf.GetDownloadedPath(); |
C# |
コードのコピー
|
---|---|
using var browser = new GcHtmlBrowser(path); // Linux システムで RunWithNoSandbox オプションが必要な場合 using var browser = new GcHtmlBrowser(path, new LaunchOptions { RunWithNoSandbox = true }); |
C# |
コードのコピー
|
---|---|
g.DrawHtml(html, ...); ⇒ g.DrawHtml(browser, html, ...); |
C# |
コードのコピー
|
---|---|
using var re = new GcHtmlRenderer(uri); ... re.RenderToPdf(file, new PdfSettings() {…}); |
C# |
コードのコピー
|
---|---|
// URI から HtmlPage を作成します // (PdfSettings/JpegSettings/PngSettings の DefaultBackgroundColor および WindowSize オプションは PageOptions に移動し、 // その他のオプションは PdfOptions/JpegOptions/PngOptions に移動しました) using var htmlPage = browser.NewPage(uri, new PageOptions() { WindowSize = pixelSize;… }); ... htmlPage.SaveAsPdf(file, new PdfOptions() {...}); |