AzureでIronPDFを使ったHTML→PDF 変換のC#ガイド
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プロジェクトを迅速に実行しましょう。
最小限のワークフロー(5ステップ)
- AzureでPDFを生成するためにC#ライブラリをインストールする。
- Azure Basic B1ホスティング層以上を選択
- 公開時に`Run from package file`オプションのチェックを外してください。
- 推奨される設定手順に従う
- コード例を使用してAzureを使用したPDFジェネレータを作成する
チュートリアル
プロジェクトのセットアップ方法
どのIronPDFパッケージをインストールすべきですか?
最初のステップはNuGetを使用してIronPDFをインストールすることです。
- Windows ベースの Azure Functions では、
IronPdfパッケージを使用します - Windows 用のNuGet IronPDFパッケージ - Linux ベースの Azure Functions では、
IronPdf.Linuxパッケージを使用します - Linux 用のNuGet IronPDFパッケージ
Install-Package IronPdf
代わりに、IronPDFのAzure用直接ダウンロードパッケージリンクを使用して.dllを手動でインストールします。
より高度なインストールオプションについては、包括的なNuGet Packagesガイドをご覧ください。
どの Azure オプションを設定する必要がありますか?
どのAzureホスティング層を選択すればよいですか?
Azure Basic B1 は、レンダリングのニーズに必要な最小ホスティングレベルです。 高スループットシステムを作成する場合は、アップグレードが必要になる可能性があります。 B1層はIronPDFのHTMLからPDFへの変換を行うChrome PDF Rendering Engineに十分なリソースを提供します。
なぜ [パッケージ ファイルから実行] のチェックを外す必要があるのですか?
Azure Functions アプリケーションを公開するときは、Run from package file が選択されていないことを確認してください。 このオプションは、IronPDFが実行中に必要なランタイム依存関係を抽出しないように、読み取り専用の配置を作成します。
どのように.NET 6を設定しますか?
Microsoftは最近、.NET 6+からイメージライブラリを削除し、多くのレガシーAPIを破壊しました。したがって、プロジェクトを構成してこれらのレガシーAPI呼び出しが許可されるようにする必要があります。
- Linuxでは、
libgdiplusがマシンにインストールされていることを確認します。 - あなた .NET 向け 6プロジェクトの.csprojファイルに次のものを追加します:
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles><GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>XML -
プロジェクトに
runtimeconfig.template.jsonというファイルを作成し、次の内容を入力します。{ "configProperties": { "System.Drawing.EnableUnixSupport": true } } - 最後に、プログラムの冒頭に次の行を追加して、System.DrawingのUnixサポートを有効にします:
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);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");
}
<FunctionName("PrintPdf")>
Public Shared Async Function Run(<HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route := Nothing)> ByVal req As HttpRequest, ByVal log As ILogger, ByVal context As ExecutionContext) As Task(Of IActionResult)
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
Dim renderer As New ChromePdfRenderer()
Dim 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") With {.FileDownloadName = "google.pdf"}
Catch e As Exception
log.LogError(e, "Error while rendering pdf")
End Try
Return New OkObjectResult("OK")
End Function
高度な 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");
}
}
Imports System.IO
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.Azure.WebJobs
Imports Microsoft.Azure.WebJobs.Extensions.Http
Imports Microsoft.AspNetCore.Http
Imports Microsoft.Extensions.Logging
Imports IronPdf
Public Module HtmlToPdfFunction
<FunctionName("RenderHtmlWithCss")>
Public Async Function RenderHtmlWithCss(
<HttpTrigger(AuthorizationLevel.Function, "post", Route:=Nothing)> req As HttpRequest,
log As ILogger) As Task(Of IActionResult)
log.LogInformation("Processing HTML to PDF request")
' Read HTML content from request body
Dim htmlContent As String = Await New StreamReader(req.Body).ReadToEndAsync()
' Configure renderer with custom options
Dim renderer As New ChromePdfRenderer() With {
.RenderingOptions = New ChromePdfRenderOptions() With {
.MarginTop = 20,
.MarginBottom = 20,
.MarginLeft = 10,
.MarginRight = 10,
.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print,
.PrintHtmlBackgrounds = True,
.CreatePdfFormsFromHtml = True
}
}
Try
' Add custom CSS
Dim styledHtml As String = $"
<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>"
Dim pdf = renderer.RenderHtmlAsPdf(styledHtml)
Return New FileContentResult(pdf.BinaryData, "application/pdf") With {
.FileDownloadName = "styled-document.pdf"
}
Catch ex As Exception
log.LogError(ex, "Failed to render HTML to PDF")
Return New BadRequestObjectResult("Error processing HTML content")
End Try
End Function
End Module
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生成需要の増加に対応できます。

