Azure で .NET を使用して HTML を PDF に生成する方法

Azure関数のIronPDFでHTMLをPDFに変換するためのC#の使い方

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPdfはMVCウェブサイトやAzure Functionsを含むAzureプラットフォーム上でPDFドキュメントを生成、操作、読み込みます。 このガイドでは、Azure FunctionsでHTMLからPDFへの変換を実装する方法を、適切な構成と本番環境への最適化とともに紹介します。

このAzure Docker Linuxチュートリアルを参照してください。

クイックスタート: Azure 上のIronPDFを使用した HTML から PDF への変換

IronPDFを使ってAzureアプリケーションでHTMLをPDFに変換しましょう。 このクイックガイドでは、IronPDFのAPIメソッドを使ってURLをPDFドキュメントとしてレンダリングする方法を説明します。 この例では、AzureソリューションにPDF機能を統合するためのIronPDFのシンプルさを紹介しています。 例に従って、フォーマットを失うことなくPDFの生成を開始し、Azureプロジェクトを迅速に実行しましょう。

  1. IronPDF をNuGetパッケージマネージャでインストール

    PM > Install-Package IronPdf
  2. このコード スニペットをコピーして実行します。

    var pdf = new IronPdf.ChromePdfRenderer()
        .RenderHtmlAsPdf("<h1>Hello Azure!</h1>")
        .SaveAs("output-azure.pdf");
  3. 実際の環境でテストするためにデプロイする

    今日プロジェクトで IronPDF を使い始めましょう無料トライアル

    arrow pointer

チュートリアル

プロジェクトのセットアップ方法

どのIronPDFパッケージをインストールすべきですか?

最初のステップはNuGetを使用してIronPDFをインストールすることです。

Install-Package IronPdf

代わりに、IronPDFのAzure用直接ダウンロードパッケージリンクを使用して.dllを手動でインストールします。

より高度なインストールオプションについては、包括的なNuGet Packagesガイドをご覧ください。

どの Azure オプションを設定する必要がありますか?

どのAzureホスティング層を選択すればよいですか?

Azure Basic B1 は、レンダリングのニーズに必要な最小ホスティングレベルです。 高スループットシステムを作成する場合は、アップグレードが必要になる可能性があります。 B1層はIronPDFのHTMLからPDFへの変換を行うChrome PDF Rendering Engineに十分なリソースを提供します。

警告アプリ サービス プランのプラン タイプを選択しないと、 IronPDF でPDF ドキュメントをレンダリングできない場合があります。

プランタイプのドロップダウンでアプリサービスプランオプションが強調表示されたAzure Functionアプリ作成フォーム

なぜ [パッケージ ファイルから実行] のチェックを外す必要があるのですか?

Azure Functions アプリケーションを公開するときは、Run from package file が選択されていないことを確認してください。 このオプションは、IronPDFが実行中に必要なランタイム依存関係を抽出しないように、読み取り専用の配置を作成します。

Azure Functionsの公開ダイアログで、

どのように.NET 6を設定しますか?

Microsoftは最近、.NET 6+からイメージライブラリを削除し、多くのレガシーAPIを破壊しました。したがって、プロジェクトを構成してこれらのレガシーAPI呼び出しが許可されるようにする必要があります。

  1. Linuxでは、libgdiplusがマシンにインストールされていることを確認します。
  2. あなた for .NET 6プロジェクトの.csprojファイルに次のものを追加します:
    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
    XML
  3. プロジェクトに runtimeconfig.template.json というファイルを作成し、次の内容を入力します。

    {
      "configProperties": {
        "System.Drawing.EnableUnixSupport": true
      }
    }
  4. 最後に、プログラムの冒頭に次の行を追加して、System.DrawingのUnixサポートを有効にします:
    System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
    System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
    $vbLabelText   $csharpLabel

いつAzure上でDockerを使うべきですか?

Azure上でコントロールを得て、SVGフォントのアクセス、およびパフォーマンスの制御を可能にする1つの方法は、Dockerコンテナ内からのIronPDFアプリケーションとFunctionsの使用です。 このアプローチは、ランタイム環境をよりよく制御し、多くのプラットフォーム固有の制限を排除します。

LinuxおよびWindowsインスタンス向けの包括的なIronPDF Azure Dockerチュートリアルがあり、これは推奨の教材です。

Azure関数のコードはどのように見えますか?

この例では、組み込みの Azure ロガーにログ エントリを自動的に出力します (ILogger log を参照)。 詳細なロギング設定については、カスタムロギングガイドを参照してください。

[FunctionName("PrintPdf")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
    ILogger log, ExecutionContext context)
{
    log.LogInformation("Entered PrintPdf API function...");

    // Apply license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

    // Configure logging
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom;
    IronPdf.Logging.Logger.CustomLogger = log;
    IronPdf.Logging.Logger.EnableDebugging = false;

    // Configure IronPdf settings
    Installation.LinuxAndDockerDependenciesAutoConfig = false;
    Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;

    try
    {
        log.LogInformation("About to render pdf...");

        // Create a renderer and render the URL as PDF
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.google.com/");

        log.LogInformation("Finished rendering pdf...");

        // Return the rendered PDF as a file download
        return new FileContentResult(pdf.BinaryData, "application/pdf") { FileDownloadName = "google.pdf" };
    }
    catch (Exception e)
    {
        log.LogError(e, "Error while rendering pdf");
    }

    return new OkObjectResult("OK");
}
[FunctionName("PrintPdf")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
    ILogger log, ExecutionContext context)
{
    log.LogInformation("Entered PrintPdf API function...");

    // Apply license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

    // Configure logging
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom;
    IronPdf.Logging.Logger.CustomLogger = log;
    IronPdf.Logging.Logger.EnableDebugging = false;

    // Configure IronPdf settings
    Installation.LinuxAndDockerDependenciesAutoConfig = false;
    Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;

    try
    {
        log.LogInformation("About to render pdf...");

        // Create a renderer and render the URL as PDF
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.google.com/");

        log.LogInformation("Finished rendering pdf...");

        // Return the rendered PDF as a file download
        return new FileContentResult(pdf.BinaryData, "application/pdf") { FileDownloadName = "google.pdf" };
    }
    catch (Exception e)
    {
        log.LogError(e, "Error while rendering pdf");
    }

    return new OkObjectResult("OK");
}
$vbLabelText   $csharpLabel

高度な HTML 文字列レンダリングの例

CSSスタイリングによるカスタムHTMLを含む、より複雑なシナリオについては、HTML String to PDF機能を使用することができます:

[FunctionName("RenderHtmlWithCss")]
public static async Task<IActionResult> RenderHtmlWithCss(
    [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
    ILogger log)
{
    log.LogInformation("Processing HTML to PDF request");

    // Read HTML content from request body
    string htmlContent = await new StreamReader(req.Body).ReadToEndAsync();

    // Configure renderer with custom options
    var renderer = new ChromePdfRenderer()
    {
        RenderingOptions = new ChromePdfRenderOptions()
        {
            MarginTop = 20,
            MarginBottom = 20,
            MarginLeft = 10,
            MarginRight = 10,
            CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print,
            PrintHtmlBackgrounds = true,
            CreatePdfFormsFromHtml = true
        }
    };

    try
    {
        // Add custom CSS
        string styledHtml = $@"
            <html>
            <head>
                <style>
                    body {{ font-family: Arial, sans-serif; padding: 20px; }}
                    h1 {{ color: #2c3e50; }}
                    .highlight {{ background-color: #f1c40f; padding: 5px; }}
                </style>
            </head>
            <body>
                {htmlContent}
            </body>
            </html>";

        var pdf = renderer.RenderHtmlAsPdf(styledHtml);

        return new FileContentResult(pdf.BinaryData, "application/pdf") 
        { 
            FileDownloadName = "styled-document.pdf" 
        };
    }
    catch (Exception ex)
    {
        log.LogError(ex, "Failed to render HTML to PDF");
        return new BadRequestObjectResult("Error processing HTML content");
    }
}
[FunctionName("RenderHtmlWithCss")]
public static async Task<IActionResult> RenderHtmlWithCss(
    [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
    ILogger log)
{
    log.LogInformation("Processing HTML to PDF request");

    // Read HTML content from request body
    string htmlContent = await new StreamReader(req.Body).ReadToEndAsync();

    // Configure renderer with custom options
    var renderer = new ChromePdfRenderer()
    {
        RenderingOptions = new ChromePdfRenderOptions()
        {
            MarginTop = 20,
            MarginBottom = 20,
            MarginLeft = 10,
            MarginRight = 10,
            CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print,
            PrintHtmlBackgrounds = true,
            CreatePdfFormsFromHtml = true
        }
    };

    try
    {
        // Add custom CSS
        string styledHtml = $@"
            <html>
            <head>
                <style>
                    body {{ font-family: Arial, sans-serif; padding: 20px; }}
                    h1 {{ color: #2c3e50; }}
                    .highlight {{ background-color: #f1c40f; padding: 5px; }}
                </style>
            </head>
            <body>
                {htmlContent}
            </body>
            </html>";

        var pdf = renderer.RenderHtmlAsPdf(styledHtml);

        return new FileContentResult(pdf.BinaryData, "application/pdf") 
        { 
            FileDownloadName = "styled-document.pdf" 
        };
    }
    catch (Exception ex)
    {
        log.LogError(ex, "Failed to render HTML to PDF");
        return new BadRequestObjectResult("Error processing HTML content");
    }
}
$vbLabelText   $csharpLabel

Azure Functionsのライセンス管理については、Using License Keys ドキュメントを参照してください。

既知の問題は何ですか?

共有ホスティングプランで SVG フォントがレンダリングされないのはなぜですか?

1つの制限は、Azureホスティングプラットフォームの概要が、Google FontsのようにSVGフォントをロードするサーバーを、安価な共有ウェブアプリ層でサポートしていないことです。 これは、Windows GDI+グラフィックスオブジェクトへのアクセスを防ぐセキュリティ制限のためです。

Windows または Linux Docker Containerガイド for IronPDFもしくはおそらく Azure上のVPSの使用を推奨し、最良のフォントレンダリングが必要な場合にはこの問題に対処します。

なぜ Azure 無料層ホスティングは遅いのか

Azureの無料および共有ティアと消費プランは、PDFレンダリングには適していません。 私たち自身が使用しているAzure B1ホスティング/プレミアムプランをお勧めします。 HTML to PDF のプロセスは、どのコンピュータにとっても大きな"作業"です。これは、自分のマシンでウェブページを開いてレンダリングするのと同等です。実際のブラウザエンジンが使用されるため、それに応じたプロビジョニングが必要であり、同等の性能を持つデスクトップマシンと同等のレンダリング時間を想定しています。

どのように Azure Functions をローカルでデバッグできますか?

ローカルでの開発とテストについては、Debugging Azure Functions Project on Local Machineのガイドを参照してください。 これは、Azureにデプロイする前に問題を特定し、解決するのに役立ちます。

Azureのログはどこで確認できますか?

PDF生成の問題をトラブルシューティングする際、Azureのログは非常に貴重です。 Azure Log Files ガイドでIronPDF操作に特化したログへのアクセスと解釈の手順をご確認ください。

エンジニアリング サポート リクエストを作成するには?

リクエストチケットを作成するには、How to Make an Engineering Support Request for IronPDF ガイドを参照してください。

生産のためのベストプラクティス

1.常に適切なホスティング層を使用してください- 信頼性の高いパフォーマンスを得るには、B1 以上
2.ロギングを適切に設定する - Azure Application Insightsを本番監視に使用する 3.例外を優雅に処理する - 一過性の失敗に対する再試行ロジックを実装する。 4.HTMLコンテンツの最適化 - 可能な限り、外部リソースを最小限にし、base64エンコードされた画像を使用する。 5.徹底的にテストする - Azureデプロイの前にローカルでPDF生成を検証する。 6.リソース使用量を監視する - メモリとCPUの消費量を追跡し、適切にスケーリングする。

よくある質問

PDF生成に必要なAzureホスティングの最小ティアは?

IronPDFはPDFレンダリングのニーズに対応するため、最低ホスティングレベルとしてAzure Basic B1ティアを必要とします。B1階層は、IronPDFのHTMLからPDFへの変換機能を提供するChrome PDFレンダリングエンジンに十分なリソースを提供します。

WindowsベースのAzure Functionsにはどのパッケージをインストールすればよいですか?

WindowsベースのAzure Functionsについては、NuGetからIronPDFパッケージをインストールしてください。このパッケージはWindows環境に最適化されており、Chromeレンダリングエンジンによる完全なPDF生成機能を提供します。

Azure FunctionsでHTMLをPDFに変換するには?

IronPDFのChromePdfRendererを使えば、1行のコードでHTMLをPDFに変換できます。新しいインスタンスを作成し、HTMLコンテンツでRenderHtmlAsPdf()を呼び出し、結果のPDFファイルを保存するだけです。

正しいApp Service Planを選択しなかった場合はどうなりますか?

Appサービスプランのプランタイプを選択しないと、IronPDFがPDFドキュメントのレンダリングに失敗する可能性があります。PDFレンダリングエンジンが正しく機能するためには、Azureホスティング環境の適切な設定が不可欠です。

公開時に「パッケージファイルから実行」のチェックを外す必要があるのはなぜですか?

Azure Functionsアプリケーションを公開する際、IronPDFがAzure環境内でレンダリングコンポーネントと依存関係に適切にアクセスし利用できるようにするため、'パッケージファイルから実行'のチェックは外してください。

LinuxベースのAzure FunctionsをPDF生成に使用できますか?

はい、LinuxベースのAzure Functionsには、NuGetのIronPdf.Linuxパッケージを使用してください。このパッケージはLinux環境に最適化されており、同じPDF生成機能を提供します。

PDF生成に高いスループットが必要な場合はどうすればよいですか?

高スループットのシステムの場合、B1ティアを超えてアップグレードする必要があるかもしれません。IronPDFはお客様のAzureリソースに合わせてスケールするため、より高いパフォーマンス層を選択することでPDF生成需要の増加に対応できます。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はできましたか?
Nuget ダウンロード 17,803,474 | バージョン: 2026.3 リリース
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package IronPdf
サンプルを実行するHTML が PDF に変換されるのを確認します。