Azure関数のIronPDFでHTMLをPDFに変換するためのC#の使い方
IronPDFはMVCウェブサイトやAzure Functionsを含むAzureプラットフォーム上でPDFドキュメントを生成、操作、読み込みます。 このガイドでは、Azure FunctionsでHTMLからPDFへの変換を実装する方法を、適切な構成と本番環境への最適化とともに紹介します。
Dockerコンテナ内でAzure Functionsを実行する場合は、代わりにこの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レンダリングエンジンに十分なリソースを提供します。
なぜ [パッケージ ファイルから実行] のチェックを外す必要があるのですか?
Azure Functions アプリケーションを公開する際は、Run from package file が選択されていないことを確認してください。 このオプションは、IronPDFが実行中に必要なランタイム依存関係を抽出しないように、読み取り専用の配置を作成します。
どのように.NET 6を設定しますか?
Microsoftは最近、.NET 6+からイメージライブラリを削除し、多くのレガシーAPIを破壊しました。したがって、プロジェクトを構成してこれらのレガシーAPI呼び出しが許可されるようにする必要があります。
- Linux では、
Installation.LinuxAndDockerDependenciesAutoConfig=true;を設定して、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の処理は、どのコンピュータにとっても大きな"負荷"となります。これは、自分のマシンでWebページを開いてレンダリングするのと同様です。実際のブラウザエンジンが使用されるため、それに応じたリソースを確保する必要があり、同等の性能を持つデスクトップマシンと同様のレンダリング時間を想定する必要があります。
どのように 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 ガイドを参照してください。
生産のためのベストプラクティス
- 常に適切なホスティングプラン(
B1以上)を使用し、安定したパフォーマンスを確保してください - ログ設定を適切に行う - 本番モニタリングにはAzure Application Insightsを使用
- 例外を上手に処理する - 一時的な失敗に対して再試行ロジックを実装
- HTMLコンテンツを最適化する - 外部リソースを最小化し、可能な限りbase64エンコード画像を使用
- 徹底的にテストする - 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生成需要の増加に対応できます。

