このガイドでは、IronPDF for JavaをAzure Functionsコンテナ内に展開し、サーバーレスHTTPエンドポイントからオンデマンドでPDFを生成するために必要なすべてをカバーします。 IronPDFはネイティブのChromiumレンダリングエンジンを搭載しているため、Dockerイメージとしてパッケージ化する必要があります。Azure Functionsの標準Zip展開では、実行時にIronPDFが依存するバイナリを実行できません。このガイドに従い、動作するAzure FunctionがクエリパラメータとしてURLを受け取り、完全にレンダリングされたPDFをダウンロード可能なファイルとして返すようになります。
Microsoft推奨のカスタムコンテナワークフロー を使用して、LinuxベースのAzure Functionsで展開します。 Mavenプロジェクトは機能コードと依存関係の管理を提供します。 Dockerがコンテナイメージを構築し、それをレジストリにプッシュし、Azure Function Appが参照します。展開が完了すると、初回起動時間が主なパフォーマンスの考慮事項で、その後の呼び出しは迅速かつ一貫しています。
開始する前に、Azure CLI、Docker Desktop、Maven 3.8以上、およびJDK 11またはJDK 17がローカルにインストールされていることを確認してください。 また、Function Appsとストレージアカウントを作成する権限を持つアクティブなAzureサブスクリプションが必要です。
クイックスタート:Azure FunctionsでIronPDF for Javaを展開
以下のコードは、RenderPdf Azure Function の完全な実装を示しています。 url クエリパラメータを受け付け、PDF バイトストリームを返します。 以下のセクションで Maven 依存関係の設定が完了したら、これを Function.java に追加してください。
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/RenderPdf.java
import com.microsoft.azure.functions.*;
import com.ironsoftware.ironpdf.PdfDocument;
import java.util.Optional;
public class Function {
/**
* HTTP-triggered Azure Function: accepts a URL, renders it as a PDF,
* and returns the PDF bytes as a downloadable attachment.
*/
@FunctionName("RenderPdf")
public HttpResponseMessage renderPdf(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET, HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {
context.getLogger().info("RenderPdf function triggered.");
// Read the target URL from the query string
final String url = request.getQueryParameters().get("url");
if (url == null) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
.body("Provide a 'url' query parameter.")
.build();
}
try {
context.getLogger().info("Rendering URL as PDF: " + url);
// IronPDF renders the full page including JavaScript
PdfDocument pdf = PdfDocument.renderUrlAsPdf(url);
byte[] pdfBytes = pdf.getBinaryData();
return request.createResponseBuilder(HttpStatus.OK)
.body(pdfBytes)
.header("Content-Disposition", "attachment; filename=output.pdf")
.header("Content-Type", "application/pdf")
.build();
} catch (Exception ex) {
context.getLogger().severe("PDF rendering failed: " + ex.getMessage());
return request.createResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR)
.body("PDF rendering failed. Check function logs for details.")
.build();
}
}
}
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/RenderPdf.java
import com.microsoft.azure.functions.*;
import com.ironsoftware.ironpdf.PdfDocument;
import java.util.Optional;
public class Function {
/**
* HTTP-triggered Azure Function: accepts a URL, renders it as a PDF,
* and returns the PDF bytes as a downloadable attachment.
*/
@FunctionName("RenderPdf")
public HttpResponseMessage renderPdf(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET, HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {
context.getLogger().info("RenderPdf function triggered.");
// Read the target URL from the query string
final String url = request.getQueryParameters().get("url");
if (url == null) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
.body("Provide a 'url' query parameter.")
.build();
}
try {
context.getLogger().info("Rendering URL as PDF: " + url);
// IronPDF renders the full page including JavaScript
PdfDocument pdf = PdfDocument.renderUrlAsPdf(url);
byte[] pdfBytes = pdf.getBinaryData();
return request.createResponseBuilder(HttpStatus.OK)
.body(pdfBytes)
.header("Content-Disposition", "attachment; filename=output.pdf")
.header("Content-Type", "application/pdf")
.build();
} catch (Exception ex) {
context.getLogger().severe("PDF rendering failed: " + ex.getMessage());
return request.createResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR)
.body("PDF rendering failed. Check function logs for details.")
.build();
}
}
}
今日あなたのプロジェクトでIronPDFを無料トライアルで使用開始。
目次
- 必要な前提条件は何ですか?
- Azure Functionプロジェクトをどのように設定しますか?
- IronPDF依存関係をMavenプロジェクトにどのように追加しますか?
- RenderPdf関数をどのように書きますか?
- IronPDF用のDockerfileをどのように設定しますか?
- Dockerイメージをどのようにビルドしてプッシュしますか?
- Azureに関数をどのようにデプロイしますか?
- 関数をどのようにトリガーしてテストしますか?
- 次のステップは何ですか?
必要な前提条件は何ですか? {#prerequisites}
開始前に、必要なすべてのツールがインストールされていることと、Azureサブスクリプションがアクティブであることを確認してください。これらのチェックをスキップすると、展開プロセスの途中でビルドの失敗が多発します。
必要なローカルツール:
- Azure CLI(バージョン2.40以降)
- Linuxコンテナが有効になっているDocker Desktop
- Maven 3.8以降
- JDK 11またはJDK 17(JDK 17が推奨されるLTSバージョン)
- Azure Functions Core Tools v4
必要なAzureリソース:
- アクティブなAzureサブスクリプション
- リソースグループ、ストレージアカウント、Function Appプランを作成する権限
- 作成したイメージをホストするためのDocker Hubアカウント(またはAzure Container Registry)
ironpdf-engine-linux-x64アーティファクトを必要とします。 Azure Functionsでの標準Zip展開では、IronPDFのネイティブバイナリを実行できません。Dockerが唯一サポートされる展開方法です。)}]次のセクションに進む前に、az login を実行して Azure CLI を認証してください。
Azure Functionプロジェクトをどのように設定しますか? {#set-up-project}
Linuxでカスタムイメージを使用して関数を作成するためのMicrosoftガイドは、完全なスキャフォルディングプロセスをカバーしています。 その手順を"プログラミング言語"にJavaを選択する重要な選択を行ってください。
スキャフォルドされたプロジェクトがビルドされ、プレースホルダ関数をAzure Functions Core Toolsを使用してローカルで実行するまでガイドを進めてください。 以下を使用してこれを検証します:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/local-run.sh
mvn clean package
func start
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/local-run.sh
mvn clean package
func start
プレースホルダがローカルHTTPリクエストに応答すると、プロジェクト構造が正しくなり、IronPDF統合の準備が整いました。 主要なファイルは、Dockerfile(コンテナ定義)です。
local.settings.jsonを生成します。 local.settings.json ファイルにはローカル開発用の環境変数が格納されています。このファイルはデフォルトでソース管理から除外されており、決してコミットしてはなりません。)}]IronPDF依存関係をMavenプロジェクトにどのように追加しますか? {#add-IronPDF-dependencies}
IronPDF for JavaはMaven Centralを通じて配布されています。 必要なアーティファクトは2つあります。Java APIを提供するコアライブラリであるironpdfと、Linux x86-64向けにコンパイルされたネイティブのChromiumエンジンをバンドルしたironpdf-engine-linux-x64です。このエンジンアーティファクトの存在により、Dockerによるデプロイが必須となります。これは、実行時に実行する必要があるバイナリを同梱しているためです。
pom.xml を開き、<dependencies> ブロック内に以下を追加してください。 LATEST_VERSION を、Maven Central で入手可能な最新のリリースに置き換えてください:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/pom.xml
<dependencies>
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>LATEST_VERSION</version>
</dependency>
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf-engine-linux-x64</artifactId>
<version>LATEST_VERSION</version>
</dependency>
</dependencies>
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/pom.xml
<dependencies>
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>LATEST_VERSION</version>
</dependency>
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf-engine-linux-x64</artifactId>
<version>LATEST_VERSION</version>
</dependency>
</dependencies>
両方のアーティファクトは同じバージョン番号を使用する必要があります。 ironpdf と ironpdf-engine-linux-x64 のバージョンが一致していない場合、関数が最初に PDF のレンダリングを試みた際にランタイム例外が発生します。
pom.xml を更新した後、Docker イメージのビルドに時間を費やす前に、mvn dependency:resolve を実行して、Maven が Central から両方のアーティファクトをダウンロードできることを確認してください。
[{t:(IronPDF for Javaリリースノートをご確認ください最新の安定版バージョン。 最新リリースの使用は、最新のChromiumレンダリングエンジンとの互換性を確保し、既知のバグを回避するのに役立ちます。)}]
RenderPdf関数をどのように書きますか? {#write-renderpdf-function}
RenderPdf 関数は、HTTP によってトリガーされる Azure Function であり、url クエリパラメータを受け取り、IronPDF の Chromium ベースのエンジンを使用して対象ページをレンダリングし、結果の PDF を Content-Disposition: attachment ヘッダー付きのバイナリレスポンスとして返します。 このヘッダーは、ブラウザ(またはHTTPクライアント)にPDFをインラインで表示するのではなくダウンロードするよう指示します。
完全な関数コードは、上記のクイックスタートに表示されています。 これを src/main/java/com/example/Function.java に配置し、Maven アーキタイプによって生成されたプレースホルダーを置き換えるか、または拡張してください。
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/RenderPdf-annotated.java
import com.microsoft.azure.functions.*;
import com.ironsoftware.ironpdf.PdfDocument;
import java.util.Optional;
public class Function {
@FunctionName("RenderPdf")
public HttpResponseMessage renderPdf(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET, HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {
// Log each invocation for Azure Monitor / Application Insights
context.getLogger().info("RenderPdf triggered.");
final String url = request.getQueryParameters().get("url");
// Return 400 if no URL was supplied
if (url == null) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
.body("Provide a 'url' query parameter.")
.build();
}
try {
// renderUrlAsPdf launches Chromium, loads the page, and captures it as PDF
PdfDocument pdf = PdfDocument.renderUrlAsPdf(url);
// getBinaryData returns the raw PDF bytes ready for transmission
byte[] pdfBytes = pdf.getBinaryData();
return request.createResponseBuilder(HttpStatus.OK)
.body(pdfBytes)
.header("Content-Disposition", "attachment; filename=output.pdf")
.header("Content-Type", "application/pdf")
.build();
} catch (Exception ex) {
context.getLogger().severe("Rendering error: " + ex.getMessage());
return request.createResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR)
.body("PDF rendering failed.")
.build();
}
}
}
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/RenderPdf-annotated.java
import com.microsoft.azure.functions.*;
import com.ironsoftware.ironpdf.PdfDocument;
import java.util.Optional;
public class Function {
@FunctionName("RenderPdf")
public HttpResponseMessage renderPdf(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET, HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {
// Log each invocation for Azure Monitor / Application Insights
context.getLogger().info("RenderPdf triggered.");
final String url = request.getQueryParameters().get("url");
// Return 400 if no URL was supplied
if (url == null) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
.body("Provide a 'url' query parameter.")
.build();
}
try {
// renderUrlAsPdf launches Chromium, loads the page, and captures it as PDF
PdfDocument pdf = PdfDocument.renderUrlAsPdf(url);
// getBinaryData returns the raw PDF bytes ready for transmission
byte[] pdfBytes = pdf.getBinaryData();
return request.createResponseBuilder(HttpStatus.OK)
.body(pdfBytes)
.header("Content-Disposition", "attachment; filename=output.pdf")
.header("Content-Type", "application/pdf")
.build();
} catch (Exception ex) {
context.getLogger().severe("Rendering error: " + ex.getMessage());
return request.createResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR)
.body("PDF rendering failed.")
.build();
}
}
}
PdfDocument.renderUrlAsPdf(url) は、コンテナ内でヘッドレス Chromium インスタンスを起動し、対象 URL(JavaScript を含む)を完全に読み込み、レンダリングされた出力を PDF としてキャプチャします。 これにより、ユーザーがブラウザで見るものと視覚的に同一の出力が生成され、最新のWebアプリケーション、ダッシュボード、およびレポートページをキャプチャするのに適しています。
authLevel = AuthorizationLevel.ANONYMOUS 設定により、エンドポイントが一般に公開されます。 本番環境でのデプロイ時には、これを FUNCTION または ADMIN に変更し、リクエストヘッダーにファンクションキーを指定してください。)}]IronPDF用のDockerfileをどのように設定しますか? {#configure-dockerfile}
IronPDFのChromiumエンジンは、ベースAzure Functionsイメージに含まれていない一連の共有Linuxライブラリに依存しています。 ベースイメージ mcr.microsoft.com/azure-functions/java:4-java17-build は Debian 11 を基盤としているため、パッケージは apt を使用してインストールする必要があります。
Azure Functions Mavenアーキタイプによって生成されたRUNコマンドを追加する必要があります。 これらを、FROM 命令の後に、アプリケーション JAR を追加する COPY 手順の前に配置してください:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/Dockerfile
FROM mcr.microsoft.com/azure-functions/java:4-java17-build AS installer-env
# Install system dependencies required by IronPDF's Chromium renderer
RUN apt-get update && apt-get install -y \
libgdiplus \
libxkbcommon-x11-0 \
libc6 \
libc6-dev \
libgtk2.0-0 \
libnss3 \
libatk-bridge2.0-0 \
libx11-xcb1 \
libxcb-dri3-0 \
libdrm-common \
libgbm1 \
libasound2 \
libxrender1 \
libfontconfig1 \
libxshmfence1 \
&& apt-get install -y xvfb libva-dev libgdiplus \
&& rm -rf /var/lib/apt/lists/*
# Copy the built function JAR
COPY --from=installer-env /home/site/wwwroot /home/site/wwwroot
ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
AzureFunctionsJobHost__Logging__Console__IsEnabled=true
libgdiplus パッケージは、グラフィックスレンダリングのための GDI+ 互換性を提供します。 libnss3 および libatk-bridge2.0-0 は、Chromiumのサンドボックスおよびアクセシビリティレイヤーによって必要とされます。 xvfb は仮想フレームバッファを提供します。これは、一部の Debian 構成において、ヘッドレスモードでも Chromium が必要とするものです。 rm -rf /var/lib/apt/lists/* ブロックの末尾にある RUN ステップは、パッケージマネージャーのキャッシュを削除し、最終的なイメージサイズを可能な限り小さく保ちます。
Dockerイメージをどのようにビルドしてプッシュしますか? {#build-push-docker}
Mavenプロジェクトがビルドされ、Dockerfileが更新されたら、コンテナイメージを作成してDockerレジストリにアップロードできます。 Azure Functionsは、Function Appが作成または更新されると、このイメージを取得します。
ステップ1 — Mavenプロジェクトをビルドおよびパッケージ化する:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/build.sh
# Compile the Java code and package it as a JAR
mvn clean package
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/build.sh
# Compile the Java code and package it as a JAR
mvn clean package
Mavenは関数コードをコンパイルし、すべての依存関係(IronPDFのアートファクトを含む)を解決し、target/ディレクトリにデプロイ可能なJARファイルを生成します。 進行する前にコンパイルエラーを修正してください。
ステップ2 — Dockerイメージをビルドする:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/docker-build.sh
# Replace <DOCKER_ID> with your Docker Hub username or ACR login server
docker build --tag <DOCKER_ID>/ironpdf-azure-functions:v1.0.0 .
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/docker-build.sh
# Replace <DOCKER_ID> with your Docker Hub username or ACR login server
docker build --tag <DOCKER_ID>/ironpdf-azure-functions:v1.0.0 .
ビルドはDockerfileに記載されたLinuxパッケージをインストールし、JARをコピーして、最終イメージにすべてをレイヤー化します。 最初のビルドではパッケージのダウンロードとレイヤーキャッシュが確立されるため数分かかることがあります。 同じベースイメージを使用する後続のビルドはかなり高速です。
ステップ3 — Docker Hubにイメージをプッシュする:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/docker-push.sh
# Authenticate if not already logged in
docker login
# Push the image to the registry
docker push <DOCKER_ID>/ironpdf-azure-functions:v1.0.0
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/docker-push.sh
# Authenticate if not already logged in
docker login
# Push the image to the registry
docker push <DOCKER_ID>/ironpdf-azure-functions:v1.0.0
関数をAzureにどのようにデプロイしますか? {#deploy-to-azure}
イメージがレジストリにある場合、Azure Function Appを作成(または更新)してそれを参照することができます。 az functionapp create コマンドは、Function App のプロビジョニング、ストレージ アカウントへのリンク、およびコンテナ イメージの設定を 1 つのステップで実行します。
ステップ1 — Function Appを作成または更新する:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/az-deploy.sh
az functionapp create \
--name <APP_NAME> \
--storage-account <STORAGE_NAME> \
--resource-group AzureFunctionsContainers-rg \
--plan myPremiumPlan \
--deployment-container-image-name <DOCKER_ID>/ironpdf-azure-functions:v1.0.0
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/az-deploy.sh
az functionapp create \
--name <APP_NAME> \
--storage-account <STORAGE_NAME> \
--resource-group AzureFunctionsContainers-rg \
--plan myPremiumPlan \
--deployment-container-image-name <DOCKER_ID>/ironpdf-azure-functions:v1.0.0
<APP_NAME> を Function App のグローバルに一意な名前に、<STORAGE_NAME> を既存の Azure Storage アカウント名に、<DOCKER_ID> を前の手順で使用した Docker Hub ユーザー名または ACR ログインサーバーに置き換えてください。
--plan myPremiumPlan フラグは、プレミアムホスティングプランを選択します。 IronPDFのChromiumエンジンはレンダリング中にかなりのメモリを消費します; 消費プランの1.5 GBメモリ上限では十分ではないことが多いです。 プレミアムプランは少なくとも3.5 GBを提供し、コールドスタート遅延を排除するために予備のインスタンスをサポートします。
ステップ2 — デプロイメントを確認する:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/az-verify.sh
# Check that the function app is running and the container has been pulled
az functionapp show \
--name <APP_NAME> \
--resource-group AzureFunctionsContainers-rg \
--query "state"
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/az-verify.sh
# Check that the function app is running and the container has been pulled
az functionapp show \
--name <APP_NAME> \
--resource-group AzureFunctionsContainers-rg \
--query "state"
コンテナの起動に成功すると、このコマンドは "Running" を返します。 "Starting" またはエラーが返された場合は、Azure ポータルの Function App の [Log Stream] で、コンテナのプルまたは起動エラーがないか確認してください。
関数をどのようにトリガーしてテストしますか? {#trigger-and-test}
Function App が Running ステータスを報告すると、RenderPdf エンドポイントはリクエストを受け付ける準備が整います。 エンドポイントのURLは、Function Appの名前と、@FunctionNameアノテーションで定義された関数名に基づいて、予測可能なパターンに従います。
ブラウザまたはcurlを使用してテストする:
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/test-request.sh
# Replace <APP_NAME> with the Function App name
curl -o output.pdf \
"https://<APP_NAME>.azurewebsites.net/api/RenderPdf?url=https://www.example.com"
//:path=/static-assets/pdf/content-code-examples/tutorials/azure/test-request.sh
# Replace <APP_NAME> with the Function App name
curl -o output.pdf \
"https://<APP_NAME>.azurewebsites.net/api/RenderPdf?url=https://www.example.com"
正常に処理されると、output.pdf という名前の PDF ファイルが現在のディレクトリに保存されます。 curl の -o フラグは、バイナリ形式のレスポンス本体をターミナルに出力するのではなく、ファイルに書き出します。
ブラウザでテストする場合は、以下のURLに移動します:
https://<APP_NAME>.azurewebsites.net/api/RenderPdf?url=https://www.example.com
ブラウザはPDFのダウンロードを促します。 それを開いてページが正しくレンダリングされたかどうかを確認します。
エラーのログを確認する:Azureポータルに移動し、Function Appを開き、監視の下のLog Streamを選択します。 context.getLogger() の呼び出しによるログエントリがほぼリアルタイムでここに表示されるため、レンダリングの失敗原因の特定が容易になります。
次のステップは何ですか? {#next-steps}
このガイドでは、IronPDF for JavaをAzure Functions Dockerコンテナ内に展開し、URLをPDFとしてレンダリングするHTTPトリガー関数を作成し、必要なLinux依存関係でDockerfileを設定し、ライブエンドポイントをテストする方法を示しました。 同じパターンは、わずかな変更でより高度なユースケースに拡張できます。
関数を拡張する:
- URLの代わりに
PdfDocument.renderHtmlAsPdf(htmlString)を使用して、HTML文字列を直接レンダリングする - 透かしを適用したり、複数のPDFをマージしたり、IronPDFのフルJava PDF API を使用してデジタル署名を追加することができます
- リクエストヘッダーまたはPOSTボディを読み取って、カスタムHTMLコンテンツやレンダリングオプションを渡す
本番準備を改善する:
authLevelをFUNCTIONに切り替え、ファンクションキーを定期的にローテーションしてください- Azure Key Vaultを使用して、アプリケーション設定で参照されている機密情報を保存します
- レンダリングの遅延と失敗率のエンドツーエンドの可視性を確保するためにApplication Insightsを構成する
- Dockerイメージの更新webhookを設定して、Azureが新しいイメージバージョンのプッシュを自動で再展開
さらに多くのIronPDF for Javaガイドを探索する:
- IronPDF for Java: Linuxインストールガイド
- JavaでHTMLからPDFを生成
- IronPDF for Java: Docker展開ガイド
- IronPDFのフルJava APIリファレンス
無料のIronPDFトライアルを開始して、評価期間中に透かしなしでレンダリングおよび操作機能にアクセスします。 本番環境への展開の準備が整ったら、IronPDFライセンスオプションを表示し、プロジェクトの規模に合ったプランを見つけてください。
よくある質問
Azure FunctionsにIronPDFをデプロイするためにDockerデプロイが必要なのはなぜですか?
IronPDFはネイティブのChromiumレンダリングエンジンを提供し、ランタイムでバイナリを実行する必要があります。Azure FunctionsのZipデプロイはネイティブバイナリを実行できないため、Dockerコンテナイメージが唯一のサポートされているデプロイパスです。
Dockerコンテナ内でIronPDFを実行するために必要なMavenアーティファクトはどれですか?
pom.xmlには2つのアーティファクトが必要です:Java API用のcom.ironsoftware:ironpdfとネイティブChromiumエンジン用のcom.ironsoftware:ironpdf-engine-linux-x64。両者は同じバージョン番号を共有する必要があります。
IronPDFに対してDockerfileがインストールする必要のあるLinuxパッケージは何ですか?
Dockerfileはlibgdiplus、libxkbcommon-x11-0、libc6、libc6-dev、libgtk2.0-0、libnss3、libatk-bridge2.0-0、libx11-xcb1、libxcb-dri3-0、libdrm-common、libgbm1、libasound2、libxrender1、libfontconfig1、libxshmfence1、xvfb、およびlibva-devをインストールする必要があります。
RenderPdf関数は何をしますか?
RenderPdf関数はHTTPトリガーされたAzure Functionで、urlクエリパラメータを読み取り、PdfDocument.renderUrlAsPdfに渡し、結果のPDFバイトをContent-Disposition: attachmentヘッダーと共に返し、呼び出し元がダウンロード可能なPDFファイルを受け取ることができます。
IronPDF用のAzure Functionsのホスティングプランはどれを使用するべきですか?
プレミアムプランが推奨されます。IronPDFのChromiumエンジンは容量を大量に必要とし、消費プランの1.5GBの上限を超えることがしばしばあります。プレミアムプランは最低でも3.5GBを提供し、コールドスタートのレイテンシーを排除するためにウォームインスタンスをサポートします。
新しくデプロイされた関数への最初のリクエストが遅いのはなぜですか?
コールドスタート後の最初のリクエストは、Azureがコンテナイメージをプルし、IronPDFがChromiumエンジンを初期化する必要があるため、20〜60秒かかることがあります。同じコンテナライフタイム内のその後のリクエストははるかに高速です。プレミアムプランのプレウォームドインスタンス機能がこの遅延を排除することができます。
既存のAzure Function Appを新しいDockerイメージに更新するにはどうすればよいですか?
更新されたタグで新しいイメージを再構築してプッシュした後、新しい--deployment-container-image-name値でaz functionapp createを再度実行するか、AzureポータルのFunction Appのデプロイセンターでコンテナの設定を更新します。
IronPDFはURLだけでなく、Azure FunctionでHTML文字列をレンダリングできますか?
はい。PdfDocument.renderUrlAsPdf(url)をPdfDocument.renderHtmlAsPdf(htmlString)に置き換えて直接HTML文字列をレンダリングします。関数構造とレスポンス処理は同じままです。
リクエストからurlクエリパラメータが欠落している場合はどうなりますか?
関数はurlパラメータがnullかどうかをチェックし、任意のPDFレンダリングを試みる前にHTTP 400 Bad Requestレスポンスと説明的なメッセージを返します。


