HOWTO · Csharp

C# で HTML を PDF に変換する

HtmlRenderer.PdfSharp を使用して、C# で HTML 文字列を A4 PDF に変換します。

このページの内容

C# プロジェクトで HtmlRenderer.PdfSharp を使用して HTML 文字列を PDF ページにレンダリングし、そのドキュメントを書き込み可能なパスに保存します。このパッケージは HTML レンダラーを PdfSharp に接続します。基本的なスタイルはレンダリングされる場合がありますが、複雑なレイアウトや高度な CSS はブラウザーの出力と異なる場合があります。

HtmlRenderer.PdfSharp の概要

Visual Studio の NuGet パッケージ マネージャーで HtmlRenderer.PdfSharp をインストールするか、プロジェクト ファイルを含むディレクトリから dotnet add package HtmlRenderer.PdfSharp を実行します。NuGet は互換性のあるパッケージ バージョンを選択します。プロジェクトで固定されたバージョンが必要な場合は、選択する前に、そのバージョンのターゲット フレームワークがプロジェクトに適合するか確認してください。

パッケージベースの変換には、アプリケーション プロジェクトに NuGet アセンブリが必要です。その API は TheArtOfDev.HtmlRenderer.PdfSharp の PdfGenerator、PdfSharp.Pdf の PdfDocument、PdfSharp の PageSize.A4 を使用します。これらのパッケージ参照は、コンバーターをビルドするプロジェクトに保持してください。

HTML 文字列を PDF に変換する

次のスタンドアロン C# プログラムは、インストールされたパッケージで変換を実行します。PdfDocument を作成し、PageSize.A4 を指定して HTML 文字列を PdfGenerator.AddPdfPages に渡し、ドキュメントを出力パスに保存して、ドキュメントを破棄します。

using System;
using PdfSharp;
using PdfSharp.Pdf;
using TheArtOfDev.HtmlRenderer.PdfSharp;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Monthly report</h1><p>Revenue increased this month.</p></body></html>";
        string outputPath = "monthly-report.pdf";
        using (PdfDocument document = new PdfDocument())
        {
            PdfGenerator.AddPdfPages(document, html, PageSize.A4);
            document.Save(outputPath);
        }
        Console.WriteLine("Saved " + outputPath);
    }
}
Saved monthly-report.pdf

このプログラムは、HtmlRenderer.PdfSharp がインストールされているプロジェクトで実行してください。アプリケーションでは、プロセスが書き込める宛先を使用してください。相対ファイル名は現在の作業ディレクトリから解決されます。固定の宛先が必要な場合は絶対パスを使用してください。

CSS と画像を含む HTML をレンダリングする

HTML 文字列をジェネレーターに渡す前に、<style> ブロックと画像要素を HTML 文字列に含めてください。HtmlRenderer.PdfSharp は基本的な CSS をレンダリングできますが、その出力がブラウザーと一致することは保証されません。高度なセレクター、カスタム フォント、複雑な配置を使用するドキュメントは確認してください。

画像ソースは、変換中にアプリケーションが利用できる必要があります。外部の画像 URL には、そのプロセスからのネットワーク アクセスが必要です。ローカル画像については、プロジェクト内のパッケージ バージョンでサポートされるソース形式とパスを使用し、プロセスがそれを読み取れることを確認してください。画像が見つからない場合は、そのソースが正しく、アクセス可能か確認してください。利用可能なスクリーンショットはこの例に対して確認できなかったため、省略します。

制限事項とトラブルシューティング

HTML から PDF へのレンダリングは、同じページをブラウザーで開く場合とは異なります。マークアップを整形式に保ち、レンダラーでサポートされるスタイルを使用し、生成された PDF でレイアウトの変化を検査してください。複雑なレイアウトや高度な CSS は、期待どおりにレンダリングされない場合があります。

PDF が見つからない場合は、出力パスと、そのディレクトリに対するアプリケーションの書き込みアクセスを確認してください。スタイルが見つからない場合は、HTML を減らし、CSS を段階的に戻してください。画像が見つからない場合は、その URL またはローカル ソースが変換中に利用可能か確認してください。これらの確認は、パスやリソース アクセスの問題と、レンダリングの違いを区別するのに役立ちます。

FAQ

  1. HtmlRenderer.PdfSharp は何をしますか? PdfSharp を使用して HTML コンテンツを PDF ページにレンダリングし、C# アプリケーションがマークアップから生成されたドキュメントを保存できるようにします。
  2. CSS は使用できますか? 基本的な CSS はサポートされています。高度な CSS や複雑なレイアウトはブラウザーと見た目が異なる場合があるため、生成された PDF を確認してください。
  3. 画像はどのように動作しますか? 画像ソースは、変換中にレンダラーが利用できる必要があります。外部 URL にはアプリケーションからのネットワーク アクセスが必要です。ローカル ソースには、プロセスが読み取れるパスが必要です。
  4. PDF はカスタマイズできますか? PDF 生成 API でページ サイズを設定し、HTML とサポートされるスタイルを調整してください。インストールされているバージョンのその他のオプションについては API を確認してください。
  5. 複雑な HTML では何を期待すべきですか? レンダラーは HTML と CSS のサブセットをサポートします。実際のドキュメントで試し、見た目が意図と異なる場合はマークアップを簡略化または調整してください。