如何在Azure Function中運行IronPDF for Java
- IronPDF for Java only supports Docker deployment.
- Zip Deployment is not supported, since IronPDF requires execution of binaries at runtime.
請參考在 Linux 上使用自定義映像創建函數的 Microsoft 官方指南
對於
Choose a programming language
-> 選擇Java
- 按照指南操作,直到您的應用程序運行起來。
添加 IronPDF 依賴性
- 使用最新的
<version>
將此添加到您的 pom 中
- 使用最新的
<dependencies>
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>2022.xx.x</version>
</dependency>
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf-engine-linux-x64</artifactId>
<version>2022.xx.x</version>
</dependency>
</dependencies>
<dependencies>
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>2022.xx.x</version>
</dependency>
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf-engine-linux-x64</artifactId>
<version>2022.xx.x</version>
</dependency>
</dependencies>
- 注意:
ironpdf-engine-linux
是在 Docker 中運行 IronPDF 所必需的。
新增一個
RenderPdf
函數在
Function.java
中新增一個功能- 此功能將接收一個URL並返回渲染的PDF。
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) {
context.getLogger().info("Java HTTP trigger processed a request. (RenderPdf)");
// Parse query parameter
final String url = request.getQueryParameters().get("url");
if (url == null) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body("Please pass a url on the query string").build();
} else {
context.getLogger().info("IronPDF try to render url: " + url);
PdfDocument pdfDocument = com.ironsoftware.ironpdf.PdfDocument.renderUrlAsPdf(url);
byte [] content = pdfDocument.getBinaryData();
return request.createResponseBuilder(HttpStatus.OK)
.body(content)
.header("Content-Disposition", "attachment; filename=ironpdf_result.pdf")
.build();
}
}
}
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) {
context.getLogger().info("Java HTTP trigger processed a request. (RenderPdf)");
// Parse query parameter
final String url = request.getQueryParameters().get("url");
if (url == null) {
return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body("Please pass a url on the query string").build();
} else {
context.getLogger().info("IronPDF try to render url: " + url);
PdfDocument pdfDocument = com.ironsoftware.ironpdf.PdfDocument.renderUrlAsPdf(url);
byte [] content = pdfDocument.getBinaryData();
return request.createResponseBuilder(HttpStatus.OK)
.body(content)
.header("Content-Disposition", "attachment; filename=ironpdf_result.pdf")
.build();
}
}
}
更新 Dockerfile
- 添加 IronPDF Linux 所需的套件。
從範例中,基礎 Docker 映像為
mcr.microsoft.com/azure-functions/java:4-java$JAVA_VERSION-build
,它是Debian 11
。因此,我們需要將這些包添加到 Docker 文件中。
RUN apt update \
&& apt 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
RUN apt-get install -y xvfb libva-dev libgdiplus
- 對於其他 Linux 發行版,請參閱IronPDF Linux 安裝指南
將您的功能重新部署到 Azure
構建和打包
mvn clean package
建置 Docker 映像,例如:
docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 .
推送 Docker 映像,例如
docker push <DOCKER_ID>/azurefunctionsimage:v1.0.0
- 更新 Azure 函數,例如
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --resource-group AzureFunctionsContainers-rg --plan myPremiumPlan --deployment-container-image-name <DOCKER_ID>/azurefunctionsimage:v1.0.0
享受 IronPDF
觸發函數位址:
https://<APP_NAME>.azurewebsites.net/api/RenderPdf?url=https://www.google.com
- 注意:函式首次觸發時,可能因初始化而緩慢或失敗,但之後就會正常。