C# で HTML ドキュメントを PDF ドキュメントに変換する

ブログ カテゴリ: イメージングPDF.NET

2026/04/08

C# で HTML ページを PDF ドキュメントに変換することは一般的なタスクであり、HTML テンプレートから請求書、レポート、契約書、その他のビジネス ドキュメントを作成するためによく使用されます。C# で HTML ページを PDF ドキュメントに変換することは、動的な Web コンテンツから静的でポータブルで印刷可能なドキュメントを作成するためにも不可欠です。

HTML ページを PDF ドキュメントに変換するプロセスには、次の手順が含まれます。

HTML5 標準の仕様 (https://html.spec.whatwg.org/print.pdf) には 1553 ページが含まれています。

CSS2 標準の仕様 (https://www.w3.org/TR/CSS22/css2.pdf) には 426 ページが含まれています。

JavaScript 標準の仕様 (https://ecma-international.org/wp-content/uploads/ECMA-262_16th_edition_june_2025.pdf) には 835 ページが含まれています。

HTML を PDF に変換する手順と HTML5、CSS2、JavaScript の仕様に関する情報は、HTML を PDF に変換する手順を上記で説明しており、一般的に、HTML を PDF に変換することは、ゼロから実装すると非常に複雑な作業であることを明確にしています。

同時に、この複雑な作業は、HTML ページを完全にレンダリングし、レンダリングされた HTML ページを PDF ファイルに保存できる最新の Web ブラウザですでに実装されています。したがって、妥当な疑問が生じます。C# アプリケーションで Web ブラウザを使用して HTML ページを PDF ドキュメントに変換することは可能でしょうか?

この記事では、Chromium を使用して、C# アプリケーションで任意の複雑さの HTML ページを完全に無料で最高品質で PDF ドキュメントに変換する方法を見ていきます。

Chromium は、主に Google Chrome、Microsoft Edge、Opera など、ほとんどの最新の Web ブラウザの基盤として使用されているオープンソースの Web ブラウザ プロジェクトです。速度、セキュリティ、安定性を念頭に置いて設計されており、Google、Microsoft、その他の企業の開発者による重要な貢献が特徴です。


Chrome コマンドラインを使用して C# で HTML ページを PDF ドキュメントに変換する

HTML ページを PDF ドキュメントに変換する最も簡単な方法は、コマンドラインから次の Chrome コマンドを実行することです。
"C:\Program Files\Google\Chrome\Application\chrome.exe" --headless --disable-gpu —run-all-compositor-stages-before-draw --no-margins --printBackground=true --no-pdf-header-footer --print-to-pdf="D:\result.pdf" "https://www.vintasoft.com/index.html"

Chrome コマンドラインで使用されるパラメーターの簡単な説明は次のとおりです。

上記のコマンドは、Windows/Linux/maOS コマンドラインまたは C# コードから実行できます。

以下は、Chrome を使用して .NET コンソール アプリケーションで HTML ページを PDF ドキュメントに変換する方法を示す C# コードです。
using System.Diagnostics;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string chromePath = @"C:\Program Files\Google\Chrome\Application\chrome.exe";
            string sourceUrl = "https://www.vintasoft.com/index.html";
            string resultPdfFilePath = @"D:\result.pdf";
            string chromeArgsTemplate =
                "--headless --no-pdf-header-footer --no-margins --disable-gpu --run-all-compositor-stages-before-draw --printBackground=true --print-to-pdf=\"{0}\" {1}";
            
            ProcessStartInfo startInfo = new ProcessStartInfo
            {
                FileName = chromePath,
                Arguments = string.Format(chromeArgsTemplate, resultPdfFilePath, sourceUrl),
                UseShellExecute = false,
                CreateNoWindow = false
            };
            using (Process process = Process.Start(startInfo))
            {
                process.WaitForExit();
            }
            
            Console.WriteLine("HTML page is converted to the PDF document.");
        }
    }
}


この変換方法は、コンピューターに Chrome ウェブ ブラウザーがインストールされており、「chrome.exe」 ファイルへのパスがわかっている場合に使用できます。

結果として生成される .NET アプリケーションは、追加のライブラリを含まず、Chrome ウェブ ブラウザーに完全に依存するため、サイズが小さくなります。


CefSharp.OffScreen nuget パッケージを使用して C# で HTML ページを PDF ドキュメントに変換する

CefSharp.OffScreen nuget パッケージには、コンパイル済みの CefSharp ライブラリが含まれており、開発者は目に見えるユーザー インターフェイスなしで Chromium ウェブ ブラウザーの完全なインスタンスをバックグラウンドで実行できます。

.NET Framework アプリケーションで CefSharp.OffScreen ライブラリを使用する場合は、.NET Framework アプリケーションに CefSharp.OffScreen nuget パッケージへの参照を追加するだけです。

.NET Core アプリケーションで CefSharp.OffScreen ライブラリを使用する場合は、.NET Core アプリケーションに CefSharp.OffScreen.NETCore nuget パッケージへの参照を追加するだけです。

以下は、CefSharp.OffScreen ライブラリを使用して HTML ページを PDF ドキュメントに変換する .NET コンソール アプリケーションの C# コードです。
using CefSharp;
using CefSharp.OffScreen;
using System;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string sourceUrl = "https://www.vintasoft.com/index.html";
            string resultPdfFilePath = @"D:\result.pdf";
            Task task = ConvertHtmlToPdfUsingCefSharpOffScreen(sourceUrl, resultPdfFilePath);
            task.Wait();
            Console.WriteLine("HTML page is converted to the PDF document.");
            Console.ReadKey();
        }

        static async Task ConvertHtmlToPdfUsingCefSharpOffScreen(string url, string pdfPath)
        {
            // if CEF is not initialized
            if (Cef.IsInitialized == null || Cef.IsInitialized == false)
            {
                // create CEF settings
                CefSettings settings = new CefSettings();
                // initialize CEF
                Cef.Initialize(settings);
            }

            // create Chromium web browser
            using (ChromiumWebBrowser browser = new ChromiumWebBrowser(url))
            {
                // wait while page will be loaded
                await browser.WaitForInitialLoadAsync();

                // create PDF print settings
                PdfPrintSettings printSettings = new PdfPrintSettings
                {
                    MarginType = CefPdfPrintMarginType.None,
                    PrintBackground = true,
                    Landscape = false,
                    Scale = 1.0,
                    PreferCssPageSize = true,
                    DisplayHeaderFooter = false
                };

                // print web page to a PDF file
                await browser.PrintToPdfAsync(pdfPath, printSettings);
            }
        }
    }
}


この変換方法は Chrome Web ブラウザーに依存しないため、この場合、CefSharp.OffScreen nuget パッケージの作成者が既にコンパイル済みなので、CefSharp を自分でコンパイルする必要はありません。

結果として生成される .NET アプリケーションは、CefSharp ライブラリ ファイルが含まれているため、完全にスタンドアロンでサイズが大きくなっています (300 MB を少し超える)。


CefSharp ライブラリを使用して C# で HTML ページを PDF ドキュメントに変換する

CefSharp は、Chromium Embedded Framework (CEF) の .NET ラッパーを提供するオープンソース プロジェクトです。CefSharp を使用すると、開発者は完全に機能する Chromium ベースの Web ブラウザーを C# または VB.NET デスクトップ アプリケーションに直接埋め込むことができます。

CefSharp リポジトリは GitHub にあります: https://github.com/cefsharp/cefsharp

リポジトリには、サンプル コンソール アプリケーション、サンプル WinForms アプリケーション、サンプル WPF アプリケーションなど、15 個のプロジェクトが含まれています。

サンプル WPF アプリケーション (プロジェクト "CefSharp.Wpf.Example.「.NET Core」を選択すると、Chrome と同様のページナビゲーションを備えた WPF アプリケーションが表示されます。この WPF アプリケーションには、リンクナビゲーション、CSS スタイル、JavaScript コードが含まれており、Chrome と全く同じ操作感です。アプリケーションのメインメニューで、「テスト => 現在のタブを PDF に印刷」メニューを選択し、レンダリングされた HTML ページを PDF ファイルとして保存できます。


この変換方法は Chrome Web ブラウザに依存しませんが、Visual Studio で CefSharp プロジェクトをコンパイルすると自動的に行われるソースコードから CefSharp を手動でコンパイルする必要があります。

結果として生成される .NET アプリケーション (「CefSharp.Wpf.Example.netcore」プロジェクト) は完全にスタンドアロンで、CefSharp ライブラリ ファイルが含まれているため、サイズが大きくなっています (400 MB 強)。


VintaSoft Imaging .NET SDK を使用した PDF ドキュメントの処理

VintaSoft は、 HTML ページを PDF ドキュメントに変換する機能は、非常に複雑で、最新の Web ブラウザですでに実装されているため、SDK に含める必要があります。

同時に、VintaSoft Imaging .NET SDKVintaSoft PDF .NET Plug-in を使用すると、Windows、Linux、macOS で PDF および PDF/A ドキュメントを作成、表示、検証、印刷、注釈付け、編集、保護、署名、最適化、圧縮、変換、保存できます。

したがって、VintaSoft SDK を使用して、作成された PDF ドキュメントを処理できます。具体的には次のようになります。

VintaSoft Imaging .NET SDK + VintaSoft PDF .NET Plug-in を使用した PDF 文書の処理機能に関する詳細情報は、こちらをご覧ください: https://www.vintasoft.com/ja/vspdf-dotnet-index.html