Cómo ejecutar IronPDF for Java en una función Azure
- IronPDF for 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 elGuía oficial de Microsoft para la creación de funciones en Linux mediante imágenes personalizadas
Para
Elegir un lenguaje de programación
-> seleccioneJava
.- Sigue la guía hasta que tu aplicación esté en funcionamiento.
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.
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();
}
}
}
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, consulteGuía de instalación de IronPDF en 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 .
.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 ser lenta o fallar debido a la inicialización, pero después irá bien.