Cómo ejecutar IronPDF para Java en una función Azure
- IronPDF para Java sólo admite la implementación en Docker.
- No se admite la implantación Zip, ya que IronPDF requiere la ejecución de binarios en tiempo de ejecución.
- Siga esta guía oficial de Microsoft
- https://learn.microsoft.com/en-us/azure/azure-functions/functions-create-function-linux-custom-image
- Para
Elegir un lenguaje de programación
-> seleccioneJava
. - Sigue la guía hasta que tu aplicación esté en funcionamiento.
- Para
- https://learn.microsoft.com/en-us/azure/azure-functions/functions-create-function-linux-custom-image
- Añadir la dependencia IronPDF
- Añade esto a tu pom con la última
<version>
- Añade esto a tu pom con la última
<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>
- Nota:
ironpdf-engine-linux
es requerido para ejecutar IronPDF en Docker.- Añadir una función `RenderPdf
- Añade una nueva función en
Function.java
. - Esta función recibirá una URL y devolverá un PDF renderizado.
- Añade una nueva función en
- Añadir una función `RenderPdf
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)");
// Parámetro de consulta Parse
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();
}
}
}
Actualizar Dockerfile
Añada los paquetes necesarios de IronPDF Linux.
En el ejemplo, la imagen Docker base es
mcr.microsoft.com/azure-functions/java:4-java$JAVA_VERSION-build
, que esDebian 11
.Así que tenemos que añadir estos paquetes al archivo 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
- Para otras distribuciones de Linux, consulte /how-to/linux/
- Vuelva a implementar su función en Azure
- Construir y empaquetar
mvn clean package
.- Construya la imagen Docker, por ejemplo
docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 .
.
- Construya la imagen Docker, por ejemplo
- Empuje la imagen Docker, por ejemplo
docker push <DOCKER_ID>/azurefunctionsimage:v1.0.0
. - Actualice la función Azure, por ejemplo, `az functionapp create --name
--storage-account --resource-group AzureFunctionsContainers-rg --plan myPremiumPlan --deployment-container-image-name /azurefunctionsimage:v1.0.0``. - Disfruta de IronPDF
- Función de activación en:
https://<APP_NAME>.azurewebsites.net/api/RenderPdf?url=https://www.google.com
- Nota: La primera vez que se active la función, puede que se ralentice o falle debido a la inicialización, pero después irá bien.
- Función de activación en: