Java için Azure üzerinde IronPDF Nasıl Kurulur
Bu kılavuz, IronPDF for Java Azure İşlevleri kapsayıcı içinde dağıtmak ve talep üzerine PDF'ler oluşturmak için gereken her şeyi kapsar. IronPDF, yerel bir Chromium render motoru gemisi olduğundan, Docker imajı olarak paketlenmelidir — Azure İşlevleri üzerindeki standart Zip dağıtımı, IronPDF'nin çalıştırma zamanında güvendiği ikili dosyaları çalıştıramaz. Bu kılavuzu izleyerek, çalışan bir Azure İşlevi, bir URL'yi sorgu parametresi olarak kabul eder ve indirilebilir bir dosya olarak tam olarak render edilmiş bir PDF döndürür.
Microsoft tarafından önerilen özel konteyner iş akışını Linux tabanlı Azure İşlevleri için kullanır. Bir Maven projesi, işlev kodunu ve bağımlılık yönetimini sağlar. Docker, toplu resim oluşturur, bir kayıt defterine gönderir ve Azure Function App tarafından referans gösterilir. Dağıtıldığında, soğuk başlatma süresi ana performans düşüncesidir - sonraki çağrılar hızlı ve tutarlıdır.
Başlamadan önce, Azure CLI, Docker Desktop, Maven 3.8+ ve JDK 11 veya JDK 17'nin yerel olarak yüklü olduğundan emin olun. Ayrıca, Function Apps ve saklama hesapları oluşturma izni olan aktif bir Azure aboneliği gereklidir.
Hızlı Başlangıç: IronPDF for Java'yı Azure İşlevlerine Dağıt
Aşağıdaki kod tam bir RenderPdf Azure Fonksiyonunu gösterir. Bir url sorgu parametresini kabul eder ve bir PDF byte akışı döndürür. Maven bağımlılık kurulumunu aşağıdaki bölümlerde tamamladıktan sonra bunu Function.java ekleyin.
//: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();
}
}
}
Bugün IronPDF ile projenizde ücretsiz bir deneme ile başlayın.
İçindekiler
- Ön Gereksinimler Nedir?
- Azure Fonksiyon Projesi Nasıl Ayarlanır?
- IronPDF Bağımlılıkları Maven Projesine Nasıl Eklenir?
- RenderPdf Fonksiyonunu Nasıl Yazarsınız?
- IronPDF için Dockerfile'ı Nasıl Yapılandırırsınız?
- Docker İmajını Nasıl Oluşturur ve İtersiniz?
- Fonksiyonu Azure'a Nasıl Dağıtırsınız?
- Fonksiyonu Nasıl Tetikler ve Test Edersiniz?
- Sonraki Adımlar Neler?
Ön Gereksinimler Nedir? {#prerequisites}
Başlamadan önce, gerekli tüm araçların kurulu olduğundan ve Azure aboneliğinin aktif olduğundan emin olun. Bu kontrolleri atlamak genellikle dağıtım sürecinin ortasında yapım hatalarına yol açar.
Yerel araçlar gereklidir:
- Azure CLI (sürüm 2.40 veya daha üzeri)
- Docker Desktop etkin Linux konteynerleri ile
- Maven 3.8 veya üzeri
- JDK 11 veya JDK 17 (JDK 17 önerilen LTS sürümüdür)
- Azure Functions Core Tools v4
Azure kaynakları gereklidir:
- Aktif bir Azure aboneliği
- Kaynak Grupları, Saklama Hesapları ve Fonksiyon Uygulama Planları oluşturma izinleri
- Yapılı imajı barındırmak için bir Docker Hub hesabı (veya Azure Container Registry)
ironpdf-engine-linux-x64 artefaktını gerektirir. Azure Functions üzerindeki standart Zip dağıtımı, IronPDF'nin yerel ikili dosyalarını çalıştıramaz — Docker, desteklenen tek dağıtım yöntemidir.Bir sonraki bölüme geçmeden önce Azure CLI'yi kimliklendirmek için az login çalıştırın.
Azure Fonksiyonu Projesi Nasıl Ayarlanır? {#set-up-project}
Özel bir resim kullanarak Linux üzerinde bir fonksiyon oluşturmak için Microsoft kılavuzu, tam iskele oluşturma sürecini kapsar. Dil için Java seçimiyle ilgili önemli bir seçim: programlama dili için istendiğinde Java seçin.
İlgili adımların hepsini çalıştırarak iskele projesi yapımını ve yerel olarak çalışan yedek işlev görmüş hale gelmesini sağlayın. Bunu şu şekilde doğrulayın:
//: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
Yerel bir HTTP isteğine yanıt olarak yer tutucu yanıt verdiğinde, proje yapısı doğru ve IronPDF entegrasyonu için hazırdır. Anahtar dosyalar pom.xml (Maven konfigürasyonu), Function.java (fonksiyon kodu) ve Dockerfile (konteyner tanımlaması).
pom.xml yanına bir host.json ve local.settings.json üretir. local.settings.json dosyası yerel geliştirme için ortam değişkenlerini depolar — varsayılan olarak kaynak kontrolünden hariç tutulur ve asla taahhüt edilmemelidir.IronPDF Bağımlılıkları Maven Projenize Nasıl Eklenir? {#add-ironpdf-dependencies}
IronPDF for Java, Maven Central aracılığıyla dağıtılır. İki artefakt gereklidir: Java API'sini sağlayan çekirdek ironpdf kütüphanesi ve Linux x86-64 için derlenmiş yerel Chromium motorunu paketleyen ironpdf-engine-linux-x64. Motor artefaktı Docker dağıtımını zorunlu hale getiren şeydir — çalışırken yürütülmesi gereken ikili dosyaları taşır.
pom.xml açın ve şu kodu <dependencies> bloğu içine ekleyin. Maven Central: adresinde mevcut olan geçerli sürümle LATEST_VERSION değiştirin.
//: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>
Her iki artefakt da aynı sürüm numarasını kullanmalıdır. ironpdf ve ironpdf-engine-linux-x64 arasındaki uyumsuz sürümler, fonksiyon ilk kez bir PDF oluşturmayı denediğinde bir çalışma zamanı istisnasına neden olur.
pom.xml güncelledikten sonra, her iki artefaktı da Central'dan indirip indiremeyeceğinizi doğrulamak için mvn dependency:resolve çalıştırın, Docker görüntüsünü oluşturmaya vakit harcamadan önce.
RenderPdf Fonksiyonunu Nasıl Yazarsınız? {#write-renderpdf-function}
RenderPdf fonksiyonu, bir url sorgu parametresi kabul eden HTTP-tetiklemeli bir Azure Fonksiyonudur, IronPDF'in Chromium tabanlı motorunu kullanarak hedef sayfayı render eder ve ortaya çıkan PDF'i bir Content-Disposition: attachment başlığı ile birlikte ikili bir yanıt olarak döndürür. Bu başlık, tarayıcının (veya HTTP istemcisinin) PDF'yi satır içi yerine indirmesini söyler.
Tam fonksiyon kodu yukarıdaki Hızlı Başlangıç'ta gösterilmiştir. Maven arketipi tarafından üretilen yer tutucu ile değiştirerek veya genişleterek src/main/java/com/example/Function.java içine yerleştirin.
//: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) konteyner içinde başsız bir Chromium örneği başlatır, hedef URL'yi tamamen yükler (JavaScript dahil) ve render edilen çıktıyı bir PDF olarak yakalar. Bu, bir kullanıcı tarayıcıda gördüğüne görsel olarak eşdeğer çıktı üretir, bu da modern web uygulamalarını, pano ve rapor sayfalarını yakalamak için uygun hale getirir.
authLevel = AuthorizationLevel.ANONYMOUS ayarı, uç noktanın herkese açık olarak erişilebilir olmasını sağlar. Üretim dağıtımları için, bunu FUNCTION veya ADMIN ile değiştirin ve fonksiyon anahtarını istek başlığında geçin.IronPDF için Dockerfile Nasıl Yapılandırılır? {#configure-dockerfile}
IronPDF'nin Chromium motoru, temel Azure İşlevleri imajında bulunmayan bir dizi paylaşılan Linux kütüphanesine bağlıdır. Debian 11 üzerine kurulu olan temel görüntü mcr.microsoft.com/azure-functions/java:4-java17-build olduğundan, paketlerin apt kullanılarak kurulması gerekir.
Azure Functions Maven arketipi tarafından oluşturulan Dockerfile eklenmesi gereken aşağıdaki RUN komutları. Bunları uygulama JAR'ını ekleyen COPY adımlarından önce ve FROM talimatından sonra yerleştirin:
//: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 paketi grafik render etme için GDI+ uyumluluğu sağlar. libnss3 ve libatk-bridge2.0-0 Chromium'un sanboxlama ve erişilebilirlik katmanları tarafından gereklidir. xvfb sanal bir framebuffer sağlar, Chromium'un gerek duyduğu bir özellik, Debian yapılandırmalarının bazılarında başsız modda bile. rm -rf /var/lib/apt/lists/* adımı RUN bloğunun sonunda paket yönetim sistemi önbelleğini kaldırır, bu da nihai görüntü boyutunun olabildiğince küçük kalmasını sağlar.
Docker Görüntüsünü Nasıl Oluşturur ve Itersiniz? {#build-push-docker}
Maven projesi yapıldı ve Dockerfile güncellendiğinde, konteyner görüntüsü oluşturulabilir ve bir Docker kayıt defterine yüklenebilir. Azure İşlevleri, İşlev Uygulaması oluşturulduğunda veya güncellendiğinde bu görüntüyü çeker.
Adım 1 — Maven projesini oluşturun ve paketleyin:
//: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 fonksiyon kodunu derler, tüm bağımlılıkları (her iki IronPDF artefakti dahil) çözer ve target/ dizininde dağıtılabilir bir JAR üretir. Devam etmeden önce derleme hatalarını düzeltin.
Adım 2 — Docker görüntüsünü oluşturun:
//: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 .
Yapı, Dockerfile'da listelenen Linux paketlerini yükler, JAR'ı kopyalar ve her şeyi son bir görüntüye katmanlaştırır. İlk yapı sırasında bu, paket indirmeleri ve katman önbelleği kurulduğu için birkaç dakika sürebilir. Aynı temel görüntüyü kullanan sonraki yapımlar önemli ölçüde daha hızlıdır.
Adım 3 — Görüntüyü Docker Hub'a gönderin:
//: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
İşlevi Azure'a Nasıl Dağıtırsınız? {#deploy-to-azure}
Görüntü kayıt defterinde olduğunda, Azure İşlev Uygulaması oluşturulabilir (veya güncellenebilir) ve ona referans verir. az functionapp create komutu Fonksiyon Uygulamasını sağlar, bir depolama hesabına bağlar ve konteyner görüntüsünü tek bir adımda ayarlar.
Adım 1 — İşlev Uygulamasını oluşturun veya güncelleyin:
//: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> ile Fonksiyon Uygulaması için küresel olarak benzersiz bir adla değiştirin, <STORAGE_NAME> ile mevcut bir Azure Depolama hesabı adı ve <DOCKER_ID> ile önceki adımda kullanılan Docker Hub kullanıcı adı veya ACR giriş sunucusu.
--plan myPremiumPlan bayrağı Premium barındırma planını seçer. IronPDF'in Chromium motoru, işleme sırasında önemli miktarda bellek tüketir; Tüketim planının 1,5 GB bellek sınırı çoğunlukla yetersizdir. Premium plan en az 3,5 GB sağlar ve soğuk başlangıç gecikmesini ortadan kaldıran ön ısıtmalı örnekleri destekler.
Adım 2 — Dağıtımı doğrulayın:
//: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"
Komut konteyner başarıyla başlatıldığında "Running" döndürür. Eğer "Starting" veya bir hata dönerse, konteyner çekme veya başlatma hataları için Azure portalının Fonksiyon Uygulaması altındaki Log Stream'ini kontrol edin.
İşlevi Nasıl Tetikler ve Test Edersiniz? {#trigger-and-test}
Fonksiyon Uygulaması bir Running durumu bildirdiğinde, RenderPdf uç noktası istekleri kabul etmeye hazırdır. Uç nokta URL'si, Fonksiyon Uygulama adı ve @FunctionName anotasyonunda tanımlanan fonksiyon adı temel alınarak tahmin edilebilir bir model izler.
Bir tarayıcı veya curl kullanarak test edin:
//: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"
Başarılı bir yanıt, output.pdf adlı bir PDF dosyasını mevcut dizine kaydeder. curl'daki -o bayrağı, ikili yanıt gövdesini terminale yazdırmak yerine bir dosyaya yazar.
Bir tarayıcıda test ederken şuraya gidin:
https://<APP_NAME>.azurewebsites.net/api/RenderPdf?url=https://www.example.com
Tarayıcı, bir PDF indirmeye başlamayı isteyecektir. Sayfanın doğru şekilde işlendiğini doğrulamak için açın.
Hatalar için günlükleri kontrol etme: Azure portalına gidin, İşlev Uygulamasını açın ve İzleme altında Günlük Akışı seçin. context.getLogger() çağrılarından gelen günlük girdileri yakın gerçek zamanlı olarak burada görünür ve bu da render hatalarını teşhis etmeyi kolaylaştırır.
Bir Sonraki Adımlar Nelerdir? {#next-steps}
Bu kılavuz, bir Azure İşlevleri Docker konteyneri içinde IronPDF for Java'yı dağıtmayı, URL'leri PDF olarak işleyen bir HTTP tetikli işlev yazmayı, Dockerfile'ı gerekli Linux bağımlılıklarıyla yapılandırmayı ve canlı uç noktayı test etmeyi gösterdi. Aynı desen, minimal değişikliklerle daha gelişmiş kullanım durumlarına yayılır.
İşlevi genişletin:
- URL yerine doğrudan
PdfDocument.renderHtmlAsPdf(htmlString)kullanarak HTML stringleri render edin - Su işaretleri uygulayın, birden fazla PDF'yi birleştirin veya dijital imzalar ekleyin IronPDF'in tam Java PDF API'si kullanarak
- Özel HTML içeriği veya işleme seçeneklerini geçirmek için istek başlıklarını veya POST gövdesini okuyun
Üretim hazırlığını iyileştirin:
authLevelileFUNCTIONdeğiştirin ve fonksiyon anahtarlarını düzenli olarak döndürün- Azure Key Vault kullanarak uygulama ayarlarında referans verilen herhangi bir sırrı depolayın
- Application Insights'ı işleme gecikmesi ve hata oranlarının uçtan uca gözlemlenebilirliği için yapılandırın
- Yeni bir görüntü sürümü gönderildiğinde Azure'un otomatik olarak yeniden dağıtması için bir Docker görüntü güncelleme webhook'u kurun
Daha fazla IronPDF for Java kılavuzu keşfedin:
- IronPDF for Java: Linux Kurulum Kılavuzu
- Java'da HTML'den PDF Oluşturma
- IronPDF for Java: Docker Dağıtım Kılavuzu
- Tam IronPDF Java API Referansı
Ücretsiz bir IronPDF denemesi başlatın ve değerlendirme süresi boyunca tüm işleme ve manipülasyon özelliklerine filigran olmadan erişin. Üretime hazır olduğunuzda, IronPDF lisanslama seçeneklerini görüntüleyin ve proje ölçeğine uygun planı bulun.
Sıkça Sorulan Sorular
Neden IronPDF'nin Azure Fonksiyonlarındaki Docker dağıtımı gerekiyor?
IronPDF, çalışma zamanında ikili dosyalarını çalıştırması gereken yerel bir Chromium render motoru ile birlikte gelir. Azure Fonksiyonları Zip dağıtımı, yerel ikili dosyaları çalıştıramaz, bu nedenle Docker konteyner görüntüsü tek desteklenen dağıtım yoludur.
Bir Docker konteynerinde IronPDF'yi çalıştırmak için hangi Maven artefaktları gereklidir?
pom.xml dosyasında iki eser gereklidir: Java API için com.ironsoftware:ironpdf ve yerel Chromium motoru için com.ironsoftware:ironpdf-engine-linux-x64. İkisi de aynı sürüm numarasını paylaşmalıdır.
IronPDF için Dockerfile’ın hangi Linux paketlerini yüklemesi gerekiyor?
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 ve libva-dev kütüphanelerini yüklemelidir.
RenderPdf fonksiyonu ne yapar?
RenderPdf fonksiyonu, url sorgu parametresini okuyan, bunu PdfDocument.renderUrlAsPdf'ye aktaran ve sonuçta ortaya çıkan PDF baytlarını Content-Disposition: attachment başlığı ile döndüren bir HTTP tetiklemeli Azure Fonksiyonudur, böylece çağrıcı indirilebilir bir PDF dosyası alır.
IronPDF için hangi Azure Fonksiyonları barındırma planı kullanılmalı?
Premium plan önerilir. IronPDF'nin Chromium motoru önemli miktarda bellek gerektirir - genellikle Tüketim planındaki 1.5 GB tavanının üzerinde. Premium plan en az 3.5 GB sağlar ve soğuk başlangıç gecikmesini ortadan kaldırmak için önceden ısıtılmış örnekleri destekler.
Yeni dağıtılan bir fonksiyona yapılan ilk istek neden yavaş?
Soğuk başlangıçtan sonraki ilk istek, yaklaşık 20–60 saniye sürebilir çünkü Azure, konteyner görüntüsünü çekmeli ve IronPDF, kendi Chromium motorunu başlatmalıdır. Aynı konteyner ömrü içindeki sonraki istekler çok daha hızlı yanıt verir. Premium planın önceden ısıtılmış örnekler özelliği bu gecikmeyi ortadan kaldırabilir.
Mevcut bir Azure Fonksiyon Uygulamasını yeni bir Docker görüntüsü kullanarak nasıl güncelleyebilirim?
Yeni bir etiket ile yeni görüntüyü yeniden oluşturup itin, ardından yeni --deployment-container-image-name değeriyle tekrar az functionapp create çalıştırın veya Azure portalında Fonksiyon Uygulaması'nın Dağıtım Merkezi altındaki konteyner ayarlarını güncelleyin.
IronPDF bir Azure Fonksiyonunda sadece URL'leri değil, HTML dizelerini de render edebilir mi?
Evet. HTML dizelerini doğrudan oluşturmak için PdfDocument.renderUrlAsPdf(url) yerine PdfDocument.renderHtmlAsPdf(htmlString) kullanın. Fonksiyon yapısı ve yanıt işleme aynı kalır.
İstekten url sorgu parametresi eksikse ne olur?
Fonksiyon url parametresinin null olup olmadığını kontrol eder ve herhangi bir PDF render denemesinden önce açıklayıcı bir mesajla bir HTTP 400 Kötü İstek yanıtı döndürür.


