C# içinde PDF Dönüşümü (Geliştirici Eğitimi)
Azure İşlevlerinde HTML'yi PDF'ye dönüştürmek, IronPDF'nin Chrome işleme motoru ve doğru Azure yapılandırmasını gerektirir (en az B1 katmanı), basit dizgilerden yoğun JavaScript sayfalarına kadar her türlü HTML içeriğini piksel mükemmelliğindeki PDF'lere dönüştürmenizi sağlar ve Azure'un kumsal sınırlamalarını ve GDI+ eksikliklerini ele alır.
HTML - PDF Dönüştürme Neden Öğrenmeye Değer?
Cloud ortamlarında HTML içeriğini PDF belgelerine dönüştürmek şaşırtıcı derecede zor olabilir. PDF oluşturucuyu Azure İşlevlerine yerleştirmeyi denediyseniz, muhtemelen GDI+ veya sandbox sınırlamaları hakkında belirsiz hatalarla karşılaştınız. İyi haber? Doğru kurulumla birlikte IronPDF sayesinde, herhangi bir HTML içeriğini piksel mükemmelliğinde PDF dosyalarına dönüştürebilirsiniz.
Bu öğretici size IronPDF kullanarak bir üretime hazır HTML - PDF dönüştürücüyü Azure İşlevlerine nasıl dağıtacağınızı gösteriyor. Azure'un benzersiz ortam sınırlamalarını aşarken, basit HTML dizgilerinden yoğun JavaScript web sayfalarına kadar her şeyi nasıl ele alacağınızı öğreneceksiniz. İster basit fatura oluştururken ister karmaşık raporlar üretirken, sonunda IronPDF ile HTML - PDF dönüştürme ustalığı kazanacaksınız.
HTML - PDF Dönüştürme Azure'da Neden Zorlayıcı?
PDF dönüştürmeye dalış yapmadan önce, bu görevin Azure'daki geliştiricileri neden zorladığını anlayalım. Azure'un sunucusuz ve uygulama hizmetleri, geleneksel PDF kütüphanelerinin bağımlı olduğu işlemleri kısıtlayan bir güvenlik kumsalında çalışır:
- Sınırlı GDI+ Erişimi: Alt katmanlarda Windows Grafik çağrıları engellenmiştir.
- Font İşleme Sınırlamaları: Özel fontlar ve SVG fontları kısıtlamalarla karşılaşır.
- Bellek Kısıtlamaları: HTML - PDF dönüştürme önemli kaynaklar gerektirir.
- Süreç İzolasyon: Tarayıcı motorlarını çalıştırmak için özel izinler gerekir.
Bu sınırlamalar, Azure'un Tüketim planı ve Ücretsiz/Paylaşılan katmanlarında en katıdır. Başarılı bir HTML - PDF dönüştürme sağlamanın nedeni, en azından Azure Temel B1 katmanına veya Premium aboneliğe sahip olmaktan geçiyor. Bunlar, IronPDF'nin Chrome işleme motorunun düzgün çalışması için gerekli izinleri ve kaynakları sağlar. Azure barındırma katmanları ve PDF işleme performansı hakkında daha fazla bilgi için IronPDF'nin Azure dağıtım kılavuzunu kontrol edin.
PDF Üretimi için Hangi Azure Dağıtım Seçeneği En İyi Çalışır?
Üç dağıtım seçeneğiniz var (Windows, Linux veya Konteyner). Azure Function App Konteyner önerilir, ancak herhangi bir seçenek iyi çalışır.
Bugün, minimal yapılandırma ve IronPDF'nin işleme motoruyla daha iyi uyumluluk sağlayan izole bir ortam sunan konteyner yaklaşımına odaklanacağız. Azure Government Cloud veya Azure China gibi özel ortamlar için, aynı prensipler geçerlidir — yalnızca dağıtım uç noktalarınızı uygun şekilde ayarlayın.
IronPDF Neden Azure'da HTML - PDF Konusunda Üstündür?
IronPDF, Azure'da HTML - PDF dönüştürme kabiliyetleri açısından Chrome işleme motoru sayesinde öne çıkıyor. Bu sadece temel bir HTML ayrıştırıcı değildir — Google Chrome'u güçlendiren aynı teknoloji sayesinde, PDF belgeleriniz modern bir tarayıcıda göründüğü gibi görünecektir.
Chrome İşleme Motorunun En Önemli Özellikleri Nelerdir?
Chrome motoru, HTML - PDF dönüştürme için kritik faydalar sağlar:
- Tam CSS3 Desteği: Modern CSS stilleri kusursuz işlenir.
- JavaScript Yürütme: Dinamik JavaScript işleme için tam destek.
- Web Fontu Renderleme: Google fontları ve özel yazı tipleri doğru şekilde görüntülenir.
- Modern Web Standartları: HTML5 elemanları, SVG grafikleri ve Canvas desteği.
Bu, Bootstrap stilleri, JavaScript çerçeveleri veya karmaşık görselleştirmeler ile tam modern bir web sayfasını alabileceğiniz ve uyumluluk sorunları yaşamadan PDF'ye dönüştürebileceğiniz anlamına gelir. IronPDF, Azure'un kısıtlanmış ortamında bir Headless Chrome örneğini çalıştırmayı ele alır. IronPDF'nin Chrome işleme kabiliyetleri ve piksel mükemmelliğinde PDF işleme hakkında daha fazla bilgi edinin.
HTML - PDF için Microsoft Azure Ortamı Nasıl Kurulur?
IronPDF kullanarak HTML - PDF dönüştürme için optimize edilmiş bir Azure Function App ayarlamaya birlikte bakalım.
Başlamadan Önce Hangi Ön Koşullara İhtiyacım Var?
Başlamadan önce, sahip olduğunuzdan emin olun:
- Aktif bir Azure aboneliği
- Visual Studio 2022 veya Visual Studio Code
- .NET 6.0 SDK veya daha yeni (Microsoft'tan indirin)
- Azure Functions Core Tools (kurulum rehberi)
Azure İşlevleri'nde PDF üretimi için özel kurulum talimatları için, IronPDF'nin Azure Functions öğreticisine bakın.
Azure Function App Nasıl Oluşturulur?
- Azure Portal'a gidin ve "Bir kaynak oluştur"a tıklayın
- "Function App" arayın ve "Oluştur" a tıklayın
-
Temelleri yapılandırın:
- Barındırma Seçeneğini Seçin: İhtiyacınıza uygun olanı seçin
- Abonelik: Azure aboneliğinizi seçin
- Kaynak Grubu: Yenisi yaratın veya mevcut olanı seçin
- Function App Adı: Eşsiz bir ad seçin
- Yayınla: "Konteyner" seçin
- Konum: Tercih ettiğiniz konumu seçin
-
Barındırma planını yapılandırın:
- Azure App Service Plan altında "Yeni oluştur"a tıklayın
- Fiyatlandırma Katmanı: En az B1 (Temel) veya daha yükseğini seçin
- Unutmayın: Ücretsiz, Paylaşılan ve Tüketim planları PDF işleme için çalışmaz
- Function App'inizi inceleyin ve oluşturun
IronPDF'i Projemde Nasıl Kurarım?
Öncelikle, Visual Studio'da yeni bir Azure Functions projesi oluşturun (veya mevcut birini yükleyin) ve IronPDF paketini ekleyin.
Windows Dağıtımı için:
Install-Package IronPdf
Docker Container Dağıtımı için (önerilir)
Install-Package IronPdf.Linux #For Docker Container deployment (recommended)
Ayrıntılı kurulum talimatları, NuGet Paketleri yapılandırması ve platforma özgü hususlar ile ilgili IronPDF kurulum kılavuzunu ziyaret edin.
Azure için Hangi Yapılandırma Ayarları Temeldir?
HTML - PDF dönüştürme için ideal şekilde Function App .cs dosyanızı yapılandırın:
using IronPdf;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;
public class HtmlToPdfFunction
{
private readonly ILogger _logger;
public HtmlToPdfFunction(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger<HtmlToPdfFunction>();
// Configure IronPDF for Azure
ConfigureIronPdf();
}
private void ConfigureIronPdf()
{
// Set your license key (get a trial key from ___PROTECTED_URL_132___
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Essential Azure configurations
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
IronPdf.Installation.CustomDeploymentDirectory = "/tmp";
// Optional: Enable logging for troubleshooting
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;
}
}
using IronPdf;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;
public class HtmlToPdfFunction
{
private readonly ILogger _logger;
public HtmlToPdfFunction(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger<HtmlToPdfFunction>();
// Configure IronPDF for Azure
ConfigureIronPdf();
}
private void ConfigureIronPdf()
{
// Set your license key (get a trial key from ___PROTECTED_URL_132___
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Essential Azure configurations
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
IronPdf.Installation.CustomDeploymentDirectory = "/tmp";
// Optional: Enable logging for troubleshooting
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;
}
}
Imports IronPdf
Imports Microsoft.Azure.Functions.Worker
Imports Microsoft.Azure.Functions.Worker.Http
Imports Microsoft.Extensions.Logging
Public Class HtmlToPdfFunction
Private ReadOnly _logger As ILogger
Public Sub New(loggerFactory As ILoggerFactory)
_logger = loggerFactory.CreateLogger(Of HtmlToPdfFunction)()
' Configure IronPDF for Azure
ConfigureIronPdf()
End Sub
Private Sub ConfigureIronPdf()
' Set your license key (get a trial key from ___PROTECTED_URL_132___)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
' Essential Azure configurations
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
IronPdf.Installation.CustomDeploymentDirectory = "/tmp"
' Optional: Enable logging for troubleshooting
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All
End Sub
End Class
HTML Dizgileri PDF'ye Nasıl Dönüştürülür?
Gelin en yaygın senaryoyla başlayalım: HTML dizgilerini doğrudan PDF'ye dönüştürme. Bu yaklaşım, dinamik olarak üretilen içerikler için iyi çalışır, örneğin faturalar, raporlar veya onay emailleri.
Temel HTML Dizgi Dönüşümü Nasıl Yapılır?
[Function("ConvertHtmlToPdf")]
public async Task<HttpResponseData> ConvertHtmlToPdf(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
FunctionContext executionContext)
{
_logger.LogInformation("Starting HTML to PDF conversion");
try
{
// Simple HTML invoice example
string htmlContent = @"
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
.header { color: #333; border-bottom: 2px solid #0066cc; }
.invoice-details { margin: 20px 0; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }
.total { font-weight: bold; font-size: 1.2em; }
</style>
</head>
<body>
<div class='header'>
<h1>Invoice #12345</h1>
<p>Date: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>
</div>
<div class='invoice-details'>
<table>
<tr>
<th>Item</th>
<th>Quantity</th>
<th>Price</th>
</tr>
<tr>
<td>Professional Services</td>
<td>10 hours</td>
<td>$1,000.00</td>
</tr>
<tr>
<td colspan='2' class='total'>Total</td>
<td class='total'>$1,000.00</td>
</tr>
</table>
</div>
</body>
</html>";
// Create Chrome renderer
var renderer = new ChromePdfRenderer();
// Configure rendering options
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.MarginLeft = 25;
renderer.RenderingOptions.MarginRight = 25;
// Convert HTML to PDF
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Return PDF as response
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "application/pdf");
response.Headers.Add("Content-Disposition", "attachment; filename=invoice.pdf");
await response.Body.WriteAsync(pdf.BinaryData);
_logger.LogInformation("PDF generated successfully");
return response;
}
catch (Exception ex)
{
_logger.LogError(ex, "Error generating PDF");
var errorResponse = req.CreateResponse(HttpStatusCode.InternalServerError);
await errorResponse.WriteStringAsync($"Error: {ex.Message}");
return errorResponse;
}
}
[Function("ConvertHtmlToPdf")]
public async Task<HttpResponseData> ConvertHtmlToPdf(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
FunctionContext executionContext)
{
_logger.LogInformation("Starting HTML to PDF conversion");
try
{
// Simple HTML invoice example
string htmlContent = @"
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
.header { color: #333; border-bottom: 2px solid #0066cc; }
.invoice-details { margin: 20px 0; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }
.total { font-weight: bold; font-size: 1.2em; }
</style>
</head>
<body>
<div class='header'>
<h1>Invoice #12345</h1>
<p>Date: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>
</div>
<div class='invoice-details'>
<table>
<tr>
<th>Item</th>
<th>Quantity</th>
<th>Price</th>
</tr>
<tr>
<td>Professional Services</td>
<td>10 hours</td>
<td>$1,000.00</td>
</tr>
<tr>
<td colspan='2' class='total'>Total</td>
<td class='total'>$1,000.00</td>
</tr>
</table>
</div>
</body>
</html>";
// Create Chrome renderer
var renderer = new ChromePdfRenderer();
// Configure rendering options
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.MarginLeft = 25;
renderer.RenderingOptions.MarginRight = 25;
// Convert HTML to PDF
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Return PDF as response
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "application/pdf");
response.Headers.Add("Content-Disposition", "attachment; filename=invoice.pdf");
await response.Body.WriteAsync(pdf.BinaryData);
_logger.LogInformation("PDF generated successfully");
return response;
}
catch (Exception ex)
{
_logger.LogError(ex, "Error generating PDF");
var errorResponse = req.CreateResponse(HttpStatusCode.InternalServerError);
await errorResponse.WriteStringAsync($"Error: {ex.Message}");
return errorResponse;
}
}
Imports System
Imports System.Net
Imports System.Threading.Tasks
Imports Microsoft.Azure.Functions.Worker
Imports Microsoft.Azure.Functions.Worker.Http
Imports IronPdf
<Function("ConvertHtmlToPdf")>
Public Class PdfConverter
Private ReadOnly _logger As ILogger
Public Sub New(logger As ILogger)
_logger = logger
End Sub
Public Async Function ConvertHtmlToPdf(
<HttpTrigger(AuthorizationLevel.Function, "post")> req As HttpRequestData,
executionContext As FunctionContext) As Task(Of HttpResponseData)
_logger.LogInformation("Starting HTML to PDF conversion")
Try
' Simple HTML invoice example
Dim htmlContent As String = "
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
.header { color: #333; border-bottom: 2px solid #0066cc; }
.invoice-details { margin: 20px 0; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }
.total { font-weight: bold; font-size: 1.2em; }
</style>
</head>
<body>
<div class='header'>
<h1>Invoice #12345</h1>
<p>Date: " & DateTime.Now.ToString("yyyy-MM-dd") & "</p>
</div>
<div class='invoice-details'>
<table>
<tr>
<th>Item</th>
<th>Quantity</th>
<th>Price</th>
</tr>
<tr>
<td>Professional Services</td>
<td>10 hours</td>
<td>$1,000.00</td>
</tr>
<tr>
<td colspan='2' class='total'>Total</td>
<td class='total'>$1,000.00</td>
</tr>
</table>
</div>
</body>
</html>"
' Create Chrome renderer
Dim renderer As New ChromePdfRenderer()
' Configure rendering options
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 25
renderer.RenderingOptions.MarginBottom = 25
renderer.RenderingOptions.MarginLeft = 25
renderer.RenderingOptions.MarginRight = 25
' Convert HTML to PDF
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
' Return PDF as response
Dim response = req.CreateResponse(HttpStatusCode.OK)
response.Headers.Add("Content-Type", "application/pdf")
response.Headers.Add("Content-Disposition", "attachment; filename=invoice.pdf")
Await response.Body.WriteAsync(pdf.BinaryData)
_logger.LogInformation("PDF generated successfully")
Return response
Catch ex As Exception
_logger.LogError(ex, "Error generating PDF")
Dim errorResponse = req.CreateResponse(HttpStatusCode.InternalServerError)
Await errorResponse.WriteStringAsync($"Error: {ex.Message}")
Return errorResponse
End Try
End Function
End Class
Bu, verilen HTML dizgisini alır ve yapılandırdığımız RenderingOptions sınıfı kullanarak PDF belgesi haline getirir ve özel render seçenekleri ile tamamlar.
PDF Çıkışı Nasıl Görünür?

URL'ler Nasıl PDF'ye Dönüştürülür?
Mevcut web sayfaları veya karmaşık uygulamalar için doğrudan URL'leri dönüştürebilirsiniz:
[Function("ConvertUrlToPdf")]
public async Task<HttpResponseData> ConvertUrlToPdf(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
FunctionContext executionContext)
{
var requestBody = await req.ReadAsStringAsync();
var urlRequest = JsonSerializer.Deserialize<UrlRequest>(requestBody);
try
{
var renderer = new ChromePdfRenderer();
// Configure for web page rendering
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
// Enable JavaScript execution (important for dynamic content)
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 1000; // Wait for JS to execute
// Convert URL to PDF
var pdf = renderer.RenderUrlAsPdf(urlRequest.Url);
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "application/pdf");
await response.Body.WriteAsync(pdf.BinaryData);
return response;
}
catch (Exception ex)
{
_logger.LogError(ex, "Error converting URL to PDF");
throw;
}
}
public class UrlRequest
{
public string Url { get; set; }
}
[Function("ConvertUrlToPdf")]
public async Task<HttpResponseData> ConvertUrlToPdf(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
FunctionContext executionContext)
{
var requestBody = await req.ReadAsStringAsync();
var urlRequest = JsonSerializer.Deserialize<UrlRequest>(requestBody);
try
{
var renderer = new ChromePdfRenderer();
// Configure for web page rendering
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
// Enable JavaScript execution (important for dynamic content)
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 1000; // Wait for JS to execute
// Convert URL to PDF
var pdf = renderer.RenderUrlAsPdf(urlRequest.Url);
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "application/pdf");
await response.Body.WriteAsync(pdf.BinaryData);
return response;
}
catch (Exception ex)
{
_logger.LogError(ex, "Error converting URL to PDF");
throw;
}
}
public class UrlRequest
{
public string Url { get; set; }
}
Imports System
Imports System.Net
Imports System.Text.Json
Imports System.Threading.Tasks
Imports IronPdf
Imports Microsoft.Azure.Functions.Worker
Imports Microsoft.Azure.Functions.Worker.Http
Imports Microsoft.Extensions.Logging
<Function("ConvertUrlToPdf")>
Public Class ConvertUrlToPdfFunction
Private ReadOnly _logger As ILogger
Public Sub New(loggerFactory As ILoggerFactory)
_logger = loggerFactory.CreateLogger(Of ConvertUrlToPdfFunction)()
End Sub
Public Async Function ConvertUrlToPdf(
<HttpTrigger(AuthorizationLevel.Function, "post")> req As HttpRequestData,
executionContext As FunctionContext) As Task(Of HttpResponseData)
Dim requestBody As String = Await req.ReadAsStringAsync()
Dim urlRequest As UrlRequest = JsonSerializer.Deserialize(Of UrlRequest)(requestBody)
Try
Dim renderer As New ChromePdfRenderer()
' Configure for web page rendering
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
renderer.RenderingOptions.PrintHtmlBackgrounds = True
renderer.RenderingOptions.CreatePdfFormsFromHtml = True
' Enable JavaScript execution (important for dynamic content)
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.RenderDelay = 1000 ' Wait for JS to execute
' Convert URL to PDF
Dim pdf = renderer.RenderUrlAsPdf(urlRequest.Url)
Dim response = req.CreateResponse(HttpStatusCode.OK)
response.Headers.Add("Content-Type", "application/pdf")
Await response.Body.WriteAsync(pdf.BinaryData)
Return response
Catch ex As Exception
_logger.LogError(ex, "Error converting URL to PDF")
Throw
End Try
End Function
End Class
Public Class UrlRequest
Public Property Url As String
End Class
URL Dönüşüm Çıktısı Nasıl Görünür?

Karmaşık HTML İçeriği JavaScript ile Nasıl Yönetilir?
Modern web uygulamaları, içeriği oluşturmak için JavaScript'e büyük ölçüde güvenir. İster grafikler, ister dinamik formlar veya tek sayfalık uygulamalar olsun, IronPDF'in işleme motoru hepsini işler.
JavaScript Ağırlıklı İçerikle Nasıl Çalışırım?
Bu örnek için, JavaScript içeriğine sahip bir HTML dosyasını alıp PDF'ye dönüştüreceğiz.

[Function("ConvertComplexHtmlToPdf")]
public async Task<HttpResponseData> ConvertComplexHtmlToPdf(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
FunctionContext executionContext)
{
try
{
// Load complex HTML from file
// [USER TO PROVIDE: complex-dashboard.html with charts and JavaScript]
string complexHtml = File.ReadAllText("Templates/complex-dashboard.html");
var renderer = new ChromePdfRenderer();
// JavaScript-specific configurations
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.JavaScript(3000); // Wait 3 seconds for JS
// Optional: Set the CSS media type for print or screen styles
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
// Set viewport for responsive designs
renderer.RenderingOptions.ViewPortWidth = 1920;
renderer.RenderingOptions.ViewPortHeight = 1080;
var pdf = renderer.RenderHtmlAsPdf(complexHtml);
// Add metadata
pdf.MetaData.Author = "Azure Function";
pdf.MetaData.CreationDate = DateTime.Now;
pdf.MetaData.Title = "Complex Dashboard Report";
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "application/pdf");
await response.Body.WriteAsync(pdf.BinaryData);
return response;
}
catch (Exception ex)
{
_logger.LogError(ex, "Error with complex HTML conversion");
throw;
}
}
[Function("ConvertComplexHtmlToPdf")]
public async Task<HttpResponseData> ConvertComplexHtmlToPdf(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
FunctionContext executionContext)
{
try
{
// Load complex HTML from file
// [USER TO PROVIDE: complex-dashboard.html with charts and JavaScript]
string complexHtml = File.ReadAllText("Templates/complex-dashboard.html");
var renderer = new ChromePdfRenderer();
// JavaScript-specific configurations
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.JavaScript(3000); // Wait 3 seconds for JS
// Optional: Set the CSS media type for print or screen styles
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
// Set viewport for responsive designs
renderer.RenderingOptions.ViewPortWidth = 1920;
renderer.RenderingOptions.ViewPortHeight = 1080;
var pdf = renderer.RenderHtmlAsPdf(complexHtml);
// Add metadata
pdf.MetaData.Author = "Azure Function";
pdf.MetaData.CreationDate = DateTime.Now;
pdf.MetaData.Title = "Complex Dashboard Report";
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "application/pdf");
await response.Body.WriteAsync(pdf.BinaryData);
return response;
}
catch (Exception ex)
{
_logger.LogError(ex, "Error with complex HTML conversion");
throw;
}
}
Imports System
Imports System.IO
Imports System.Net
Imports System.Threading.Tasks
Imports IronPdf
Imports Microsoft.Azure.Functions.Worker
Imports Microsoft.Azure.Functions.Worker.Http
<Function("ConvertComplexHtmlToPdf")>
Public Class ConvertComplexHtmlToPdfFunction
Private ReadOnly _logger As ILogger
Public Sub New(loggerFactory As ILoggerFactory)
_logger = loggerFactory.CreateLogger(Of ConvertComplexHtmlToPdfFunction)()
End Sub
Public Async Function ConvertComplexHtmlToPdf(
<HttpTrigger(AuthorizationLevel.Function, "post")> req As HttpRequestData,
executionContext As FunctionContext) As Task(Of HttpResponseData)
Try
' Load complex HTML from file
' [USER TO PROVIDE: complex-dashboard.html with charts and JavaScript]
Dim complexHtml As String = File.ReadAllText("Templates/complex-dashboard.html")
Dim renderer As New ChromePdfRenderer()
' JavaScript-specific configurations
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.WaitFor.JavaScript(3000) ' Wait 3 seconds for JS
' Optional: Set the CSS media type for print or screen styles
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
' Set viewport for responsive designs
renderer.RenderingOptions.ViewPortWidth = 1920
renderer.RenderingOptions.ViewPortHeight = 1080
Dim pdf = renderer.RenderHtmlAsPdf(complexHtml)
' Add metadata
pdf.MetaData.Author = "Azure Function"
pdf.MetaData.CreationDate = DateTime.Now
pdf.MetaData.Title = "Complex Dashboard Report"
Dim response = req.CreateResponse(HttpStatusCode.OK)
response.Headers.Add("Content-Type", "application/pdf")
Await response.Body.WriteAsync(pdf.BinaryData)
Return response
Catch ex As Exception
_logger.LogError(ex, "Error with complex HTML conversion")
Throw
End Try
End Function
End Class
PDF'de JavaScript İçeriği Nasıl Görünür?

Grafikler ve Veri Görselleştirmeleri Nasıl Yönetilir?
Şimdi grafikler içeren bir HTML dosyasını dönüştürelim:

[Function("ConvertChartToPdf")]
public async Task<HttpResponseData> ConvertChartToPdf(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
FunctionContext executionContext)
{
try
{
// Load chart template
string chartHtml = File.ReadAllText("Templates/chart-template.html");
// Replace placeholders with actual data
var chartData = await GetChartDataAsync();
chartHtml = chartHtml.Replace("{{CHART_DATA}}", JsonSerializer.Serialize(chartData));
var renderer = new ChromePdfRenderer();
// Ensure charts render completely
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(2000);
// Set paper orientation for charts
renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape;
var pdf = renderer.RenderHtmlAsPdf(chartHtml);
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "application/pdf");
await response.Body.WriteAsync(pdf.BinaryData);
return response;
}
catch (Exception ex)
{
_logger.LogError(ex, "Chart conversion error");
throw;
}
}
[Function("ConvertChartToPdf")]
public async Task<HttpResponseData> ConvertChartToPdf(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
FunctionContext executionContext)
{
try
{
// Load chart template
string chartHtml = File.ReadAllText("Templates/chart-template.html");
// Replace placeholders with actual data
var chartData = await GetChartDataAsync();
chartHtml = chartHtml.Replace("{{CHART_DATA}}", JsonSerializer.Serialize(chartData));
var renderer = new ChromePdfRenderer();
// Ensure charts render completely
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(2000);
// Set paper orientation for charts
renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape;
var pdf = renderer.RenderHtmlAsPdf(chartHtml);
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "application/pdf");
await response.Body.WriteAsync(pdf.BinaryData);
return response;
}
catch (Exception ex)
{
_logger.LogError(ex, "Chart conversion error");
throw;
}
}
Imports System
Imports System.IO
Imports System.Net
Imports System.Text.Json
Imports System.Threading.Tasks
Imports IronPdf
Imports Microsoft.Azure.Functions.Worker
Imports Microsoft.Azure.Functions.Worker.Http
<Function("ConvertChartToPdf")>
Public Class ChartConverter
Private ReadOnly _logger As ILogger
Public Sub New(logger As ILogger)
_logger = logger
End Sub
Public Async Function ConvertChartToPdf(
<HttpTrigger(AuthorizationLevel.Function, "post")> req As HttpRequestData,
executionContext As FunctionContext) As Task(Of HttpResponseData)
Try
' Load chart template
Dim chartHtml As String = File.ReadAllText("Templates/chart-template.html")
' Replace placeholders with actual data
Dim chartData = Await GetChartDataAsync()
chartHtml = chartHtml.Replace("{{CHART_DATA}}", JsonSerializer.Serialize(chartData))
Dim renderer As New ChromePdfRenderer()
' Ensure charts render completely
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.WaitFor.RenderDelay(2000)
' Set paper orientation for charts
renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape
Dim pdf = renderer.RenderHtmlAsPdf(chartHtml)
Dim response = req.CreateResponse(HttpStatusCode.OK)
response.Headers.Add("Content-Type", "application/pdf")
Await response.Body.WriteAsync(pdf.BinaryData)
Return response
Catch ex As Exception
_logger.LogError(ex, "Chart conversion error")
Throw
End Try
End Function
Private Async Function GetChartDataAsync() As Task(Of Object)
' Placeholder for actual implementation
Return Await Task.FromResult(New Object())
End Function
End Class
PDF'de Grafik Görselleştirme Nasıl Görünür?

IronPDF, orijinal JavaScript etkileşimini nihai PDF çıktısında korur.
HTML Başlık ve Altbilgileri Nasıl Eklenir?
Profesyonel PDF'ler genellikle tüm sayfalarda tutarlı üstbilgi ve altbilgi gerektirir. IronPDF, gelişmiş başlık ve altbilgi seçenekleri için HTML tabanlı şablonlar ile bunu kolay hale getirir.
Dinamik Üstbilgi ve Altbilgiyi Nasıl Oluşturabilirim?
[Function("ConvertWithHeaderFooter")]
public async Task<HttpResponseData> ConvertWithHeaderFooter(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
FunctionContext executionContext)
{
try
{
string mainContent = @"
<html>
<body>
<h1>Annual Report 2024</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>
</body>
</html>";
var renderer = new ChromePdfRenderer();
// Configure margins to accommodate headers/footers
renderer.RenderingOptions.MarginTop = 45;
renderer.RenderingOptions.MarginBottom = 45;
renderer.RenderingOptions.MarginLeft = 25;
renderer.RenderingOptions.MarginRight = 25;
// HTML Header with merge fields
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
Height = 35,
HtmlFragment = @"
<div style='text-align: center; font-size: 12px; padding: 10px;'>
<div style='float: left;'>Annual Report 2024</div>
<div style='float: right;'>Page {page} of {total-pages}</div>
<div style='clear: both;'></div>
</div>",
DrawDividerLine = true
};
// HTML Footer
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
Height = 30,
HtmlFragment = @"
<div style='text-align: center; font-size: 10px; padding: 5px;'>
<div>Generated on {date} at {time}</div>
<div>© 2024 Your Company. All rights reserved.</div>
</div>",
DrawDividerLine = true
};
var pdf = renderer.RenderHtmlAsPdf(mainContent);
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "application/pdf");
await response.Body.WriteAsync(pdf.BinaryData);
return response;
}
catch (Exception ex)
{
_logger.LogError(ex, "Header/Footer conversion error");
throw;
}
}
[Function("ConvertWithHeaderFooter")]
public async Task<HttpResponseData> ConvertWithHeaderFooter(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
FunctionContext executionContext)
{
try
{
string mainContent = @"
<html>
<body>
<h1>Annual Report 2024</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>
</body>
</html>";
var renderer = new ChromePdfRenderer();
// Configure margins to accommodate headers/footers
renderer.RenderingOptions.MarginTop = 45;
renderer.RenderingOptions.MarginBottom = 45;
renderer.RenderingOptions.MarginLeft = 25;
renderer.RenderingOptions.MarginRight = 25;
// HTML Header with merge fields
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
Height = 35,
HtmlFragment = @"
<div style='text-align: center; font-size: 12px; padding: 10px;'>
<div style='float: left;'>Annual Report 2024</div>
<div style='float: right;'>Page {page} of {total-pages}</div>
<div style='clear: both;'></div>
</div>",
DrawDividerLine = true
};
// HTML Footer
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
Height = 30,
HtmlFragment = @"
<div style='text-align: center; font-size: 10px; padding: 5px;'>
<div>Generated on {date} at {time}</div>
<div>© 2024 Your Company. All rights reserved.</div>
</div>",
DrawDividerLine = true
};
var pdf = renderer.RenderHtmlAsPdf(mainContent);
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "application/pdf");
await response.Body.WriteAsync(pdf.BinaryData);
return response;
}
catch (Exception ex)
{
_logger.LogError(ex, "Header/Footer conversion error");
throw;
}
}
Imports System
Imports System.Net
Imports System.Threading.Tasks
Imports Microsoft.Azure.Functions.Worker
Imports Microsoft.Azure.Functions.Worker.Http
<Function("ConvertWithHeaderFooter")>
Public Class ConvertWithHeaderFooterFunction
Private ReadOnly _logger As ILogger
Public Sub New(loggerFactory As ILoggerFactory)
_logger = loggerFactory.CreateLogger(Of ConvertWithHeaderFooterFunction)()
End Sub
Public Async Function ConvertWithHeaderFooter(
<HttpTrigger(AuthorizationLevel.Function, "post")> req As HttpRequestData,
executionContext As FunctionContext) As Task(Of HttpResponseData)
Try
Dim mainContent As String = "
<html>
<body>
<h1>Annual Report 2024</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>
</body>
</html>"
Dim renderer As New ChromePdfRenderer()
' Configure margins to accommodate headers/footers
renderer.RenderingOptions.MarginTop = 45
renderer.RenderingOptions.MarginBottom = 45
renderer.RenderingOptions.MarginLeft = 25
renderer.RenderingOptions.MarginRight = 25
' HTML Header with merge fields
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
.Height = 35,
.HtmlFragment = "
<div style='text-align: center; font-size: 12px; padding: 10px;'>
<div style='float: left;'>Annual Report 2024</div>
<div style='float: right;'>Page {page} of {total-pages}</div>
<div style='clear: both;'></div>
</div>",
.DrawDividerLine = True
}
' HTML Footer
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.Height = 30,
.HtmlFragment = "
<div style='text-align: center; font-size: 10px; padding: 5px;'>
<div>Generated on {date} at {time}</div>
<div>© 2024 Your Company. All rights reserved.</div>
</div>",
.DrawDividerLine = True
}
Dim pdf = renderer.RenderHtmlAsPdf(mainContent)
Dim response = req.CreateResponse(HttpStatusCode.OK)
response.Headers.Add("Content-Type", "application/pdf")
Await response.Body.WriteAsync(pdf.BinaryData)
Return response
Catch ex As Exception
_logger.LogError(ex, "Header/Footer conversion error")
Throw
End Try
End Function
End Class
Başlıklar PDF Çıktısını Nasıl İyileştirir?

Farklı Sayfa Aralıkları için Özel Üstbilgileri Nasıl Uygularım?
public async Task<PdfDocument> CreatePdfWithCustomHeaders(string htmlContent)
{
var renderer = new ChromePdfRenderer();
// First page header (cover page)
renderer.RenderingOptions.FirstPageNumber = 0; // Cover page is page 0
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
Height = 50,
HtmlFragment = "<div style='text-align: center; font-size: 24px;'>Company Logo</div>",
DrawDividerLine = false
};
// Different header for content pages
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Apply different headers to specific pages after rendering
for (int i = 1; i < pdf.PageCount; i++)
{
// Add page-specific content if needed
pdf.StampHtml(i, @"
<div style='position: absolute; top: 10px; right: 10px; font-size: 10px;'>
Section " + GetSectionName(i) + @"
</div>");
}
return pdf;
}
private string GetSectionName(int pageNumber)
{
// Logic to determine section based on page number
return pageNumber <= 5 ? "Introduction" : "Main Content";
}
public async Task<PdfDocument> CreatePdfWithCustomHeaders(string htmlContent)
{
var renderer = new ChromePdfRenderer();
// First page header (cover page)
renderer.RenderingOptions.FirstPageNumber = 0; // Cover page is page 0
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
Height = 50,
HtmlFragment = "<div style='text-align: center; font-size: 24px;'>Company Logo</div>",
DrawDividerLine = false
};
// Different header for content pages
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Apply different headers to specific pages after rendering
for (int i = 1; i < pdf.PageCount; i++)
{
// Add page-specific content if needed
pdf.StampHtml(i, @"
<div style='position: absolute; top: 10px; right: 10px; font-size: 10px;'>
Section " + GetSectionName(i) + @"
</div>");
}
return pdf;
}
private string GetSectionName(int pageNumber)
{
// Logic to determine section based on page number
return pageNumber <= 5 ? "Introduction" : "Main Content";
}
Imports System.Threading.Tasks
Public Class PdfCreator
Public Async Function CreatePdfWithCustomHeaders(htmlContent As String) As Task(Of PdfDocument)
Dim renderer As New ChromePdfRenderer()
' First page header (cover page)
renderer.RenderingOptions.FirstPageNumber = 0 ' Cover page is page 0
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
.Height = 50,
.HtmlFragment = "<div style='text-align: center; font-size: 24px;'>Company Logo</div>",
.DrawDividerLine = False
}
' Different header for content pages
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
' Apply different headers to specific pages after rendering
For i As Integer = 1 To pdf.PageCount - 1
' Add page-specific content if needed
pdf.StampHtml(i, "
<div style='position: absolute; top: 10px; right: 10px; font-size: 10px;'>
Section " & GetSectionName(i) & "
</div>")
Next
Return pdf
End Function
Private Function GetSectionName(pageNumber As Integer) As String
' Logic to determine section based on page number
Return If(pageNumber <= 5, "Introduction", "Main Content")
End Function
End Class
Bu, belirli PDF sayfa aralıklarına başlıklarınızı uygular.
Azure'da Yaygın HTML'yi PDF'ye Dönüştürme Kullanım Durumları Nelerdir?
IronPDF'nin çok yönlülüğü, onu birçok kullanım için uygun hale getirir:
Fatura Üretimi: Dinamik verilerle HTML şablonları dönüştürün.
- Rapor Oluşturma: Görselleştirmeleri paylaşılabilir PDF'lere dönüştürün. Sertifika Oluşturma: Kişiselleştirilmiş sertifikalar oluşturun.
- Dokümantasyon Dışa Aktarma: Çevrimiçi dokümanları çevrimdışı PDF'lere dönüştürün. E-posta Arşivleme: HTML e-postalarını biçimlendirme bozulmadan kaydedin.
- Sözleşme Oluşturma: HTML şablonlarından belgeler oluşturun.
- Pazarlama Materyalleri: Web tasarımlarını baskıya hazır PDF'lere dönüştürün.
Azure'a Özgü Yaygın Sorunlarla Nasıl Başa Çıkılır?
Doğru yapılandırma yapılmasına rağmen, Azure'a özgü zorluklarla karşılaşabilirsiniz. İşte yaygın sorunlar ve çözümleri:
Yazı Tiplerim Neden Doğru Görüntülenmiyor?
Problem: Özel yazı tipleri doğru şekilde görüntülenmiyor veya sistem yazı tiplerine geri dönüyor.
Çözümler: Azure'un paylaşımlı barındırma katmanları, özel yazı tipleri için gerekli GDI+ erişimini kısıtlar. En az B1 katmanını kullandığınızdan emin olun ve yazı tiplerini Base64 kodlama kullanarak gömün.
string htmlWithEmbeddedFont = @"
<style>
@font-face {
font-family: 'CustomFont';
src: url(data:font/woff2;base64,YOUR_BASE64_FONT_HERE) format('woff2');
}
body { font-family: 'CustomFont', Arial, sans-serif; }
</style>";
string htmlWithEmbeddedFont = @"
<style>
@font-face {
font-family: 'CustomFont';
src: url(data:font/woff2;base64,YOUR_BASE64_FONT_HERE) format('woff2');
}
body { font-family: 'CustomFont', Arial, sans-serif; }
</style>";
Dim htmlWithEmbeddedFont As String = "
<style>
@font-face {
font-family: 'CustomFont';
src: url(data:font/woff2;base64,YOUR_BASE64_FONT_HERE) format('woff2');
}
body { font-family: 'CustomFont', Arial, sans-serif; }
</style>"
Kalıcı yazı tipi sorunları için, IronPDF'nin yazı tipi sorun giderme kılavuzuna bakın.
"Paket dosyasından çalıştır" yapılandırma hatalarına ne sebep olur?
Problem: "Paket dosyasından çalıştır" etkinleştirildiğinde IronPDF bağımlılıkları yüklemiyor.
Çözüm: Bu seçenek, IronPDF'nin gerekli dosyaları çıkarmasını engelleyen salt okunur bir ortam oluşturur. Ya bu seçeneği yayımlama ayarlarınızda devre dışı bırakın ya da bu senaryoyu daha iyi yöneten IronPdf.Slim paketini kullanın.
Bellek ve Zaman Aşımı Sorunlarını Nasıl Yönetirim?
Sorun: Büyük HTML belgeleri zaman aşımı veya bellek istisnalarına neden oluyor.
Çözüm: Uygun zaman aşımı ve bellek ayarlarını yapılandırın:
// In your Function App configuration
renderer.RenderingOptions.Timeout = 120000; // 2 minutes
renderer.RenderingOptions.RequestContext = new RequestContext
{
MaxResponseContentBufferSize = 100 * 1024 * 1024 // 100MB
};
// In your Function App configuration
renderer.RenderingOptions.Timeout = 120000; // 2 minutes
renderer.RenderingOptions.RequestContext = new RequestContext
{
MaxResponseContentBufferSize = 100 * 1024 * 1024 // 100MB
};
' In your Function App configuration
renderer.RenderingOptions.Timeout = 120000 ' 2 minutes
renderer.RenderingOptions.RequestContext = New RequestContext With {
.MaxResponseContentBufferSize = 100 * 1024 * 1024 ' 100MB
}
Azure Fonksiyonları zaman aşımı yapılandırmaları için Microsoft'un zaman aşımı belgelerine bakın. Geliştiriciler, büyük belge işlemleriyle başa çıkmak için Stack Overflow'un Azure Functions etiketi üzerinde de çözümler paylaşıyorlar.
Daha fazla Azure'a özgü HTML'den PDF'e dönüştürme sorun giderme senaryosu için IronPDF'ın Azure sorun giderme dokümantasyonunu ziyaret edin.
HTML'den PDF'e Performansı Nasıl Optimize Ederim?
HTML'den PDF'ye dönüştürme, içerik karmaşıklığına bağlı olarak kaynak yoğun olabilir. İşte Azure Functions için önemli optimizasyon stratejileri:
Dinamik İçerik İçin Oluşturma Gecikmelerini Ne Zaman Kullanmalıyım?
JavaScript ağırlıklı sayfalarla çalışırken, uygun render gecikmelerini yapılandırın:
renderer.RenderingOptions.WaitFor.RenderDelay = 500; // Simple pages
renderer.RenderingOptions.WaitFor.RenderDelay = 2000; // Complex JavaScript
renderer.RenderingOptions.WaitFor.RenderDelay = 500; // Simple pages
renderer.RenderingOptions.WaitFor.RenderDelay = 2000; // Complex JavaScript
renderer.RenderingOptions.WaitFor.RenderDelay = 500 ' Simple pages
renderer.RenderingOptions.WaitFor.RenderDelay = 2000 ' Complex JavaScript
Belleği Verimli Bir Şekilde Nasıl Yönetirim?
Yüksek hacimli senaryolar için, kaynakları düzgün bir şekilde ortadan kaldırın:
using (var renderer = new ChromePdfRenderer())
{
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
// Process PDF
return pdf.BinaryData;
}
}
using (var renderer = new ChromePdfRenderer())
{
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
// Process PDF
return pdf.BinaryData;
}
}
Imports System
Using renderer As New ChromePdfRenderer()
Using pdf = renderer.RenderHtmlAsPdf(html)
' Process PDF
Return pdf.BinaryData
End Using
End Using
Hangi Önbellekleme Stratejilerini Kullanmalıyım?
İçerik sık sık değişmediğinde oluşturulan PDF'leri önbelleğe alın:
private static readonly MemoryCache _pdfCache = new MemoryCache(new MemoryCacheOptions
{
SizeLimit = 100 // Limit cache size
});
public async Task<byte[]> GetCachedPdf(string cacheKey, string html)
{
if (!_pdfCache.TryGetValue(cacheKey, out byte[] cachedPdf))
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
cachedPdf = pdf.BinaryData;
_pdfCache.Set(cacheKey, cachedPdf, new MemoryCacheEntryOptions
{
Size = 1,
SlidingExpiration = TimeSpan.FromMinutes(10)
});
}
return cachedPdf;
}
private static readonly MemoryCache _pdfCache = new MemoryCache(new MemoryCacheOptions
{
SizeLimit = 100 // Limit cache size
});
public async Task<byte[]> GetCachedPdf(string cacheKey, string html)
{
if (!_pdfCache.TryGetValue(cacheKey, out byte[] cachedPdf))
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
cachedPdf = pdf.BinaryData;
_pdfCache.Set(cacheKey, cachedPdf, new MemoryCacheEntryOptions
{
Size = 1,
SlidingExpiration = TimeSpan.FromMinutes(10)
});
}
return cachedPdf;
}
Imports System
Imports System.Threading.Tasks
Imports Microsoft.Extensions.Caching.Memory
Private Shared ReadOnly _pdfCache As New MemoryCache(New MemoryCacheOptions With {
.SizeLimit = 100 ' Limit cache size
})
Public Async Function GetCachedPdf(cacheKey As String, html As String) As Task(Of Byte())
Dim cachedPdf As Byte() = Nothing
If Not _pdfCache.TryGetValue(cacheKey, cachedPdf) Then
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
cachedPdf = pdf.BinaryData
_pdfCache.Set(cacheKey, cachedPdf, New MemoryCacheEntryOptions With {
.Size = 1,
.SlidingExpiration = TimeSpan.FromMinutes(10)
})
End If
Return cachedPdf
End Function
HTML'den PDF'ye Azure Ücreti Ne Kadar?
Azure'da HTML'den PDF'e dönüştürme çalıştırmak iki maliyet bileşeni içerir:
Azure Barındırma Maliyetleri Nelerdir?
Temel (B1) Seviyesi: Hafif yükler için uygun, PDF dönüştürme işlemleri için başlangıç seviyesi Standart (S1) Katmanı: Düzenli PDF oluşturma için daha iyi performans Premium (P1V2) Seviyesi: Yüksek hacimli veya karmaşık PDF işlemleri için önerilir
Fiyatlar bölgeye göre değişir ve zamanla değişir. İhtiyaçlarınıza uygun en iyi katmanı seçme konusunda bu IronPDF kılavuzuna bakın.
IronPDF Lisanslama Seçenekleri Nelerdir?

IronPDF Lisanslaması
IronPDF çeşitli lisanslama seçenekleri sunar:
- Deneme Lisansı: Test için ücretsiz 30 günlük deneme Lite License: Tek geliştirici, tek proje Plus License: Birden fazla projeye sahip küçük ekipler Professional License: Yeniden dağıtım haklarına sahip daha büyük ekipler Unlimited License: Kurumsal düzeyde dağıtım
IronPDF'nin lisanslama sayfasını ziyaret ederek ayrıntılı fiyatlandırma ve özellik karşılaştırmalarını inceleyin.
Maliyetleri Nasıl Optimizasyon Yapabilirim?
- Önbellekleme uygulayın: Gereksiz PDF oluşturmayı azaltın
- Toplu işleme: Bir işlev yürütmesinde birden fazla PDF işleyin
- Kuyruk tabanlı işlem kullanın: Yükü zaman içinde dağıtarak ölçekleme ihtiyaçlarını önleyin
Hangi Güvenlik Hususlarını Akılda Tutmalıyım?
HTML'den PDF'ye dönüştürme üzerinde yoğunlaşırken, hassas PDF dosyalarını işlerken güvenlik çok önemlidir. İstenmeyen müdahalelerden PDF içeriklerini güvenli tutmak için Azure Functions güvenliğini sağlama hakkında daha fazla bilgi edinin:
Başarılı HTML'den PDF'e Dönüştürme İçin Temel Notlar Nelerdir?
Azure'da HTML'yi PDF'ye dönüştürmek karmaşık olmak zorunda değil. IronPDF'in Chrome görüntüleme motoru ve uygun Azure yapılandırması ile herhangi bir HTML içeriğini profesyonel PDF'lere dönüştürebilirsiniz.
Azure'da başarılı HTML'den PDF'ye dönüşüm için önemli çıkarımlar:
- Güvenilir PDF renderlama için Azure B1 seviyesini veya daha yükseğini kullanın.
- Optimum uyumluluk için bir Konteyner olarak dağıtın.
- Azure'ın ortamı için IronPDF ayarlarını özel olarak yapılandırın.
- Profesyonel belgeler için HTML başlıkları ve altbilgilerini kullanın. JavaScript içeriği için uygun render gecikmeleri ile ele alın.
- Üretim iş yükleri için önbellek uygulayın ve optimizasyon yapın.
IronPDF, basit HTML'den PDF'ye dönüştürmenin ötesinde imkanlar sunar. Bu makale, gelişmiş PDF manipülasyonu ve PDF görüntüleri desteği için yeteneklerini göstermiştir. IronPDF, geliştirmekte olduğunuz herhangi bir uygulamaya, Konsol Uygulamaları ve .NET Core uygulamaları dahil, kolaylıkla entegre olur.
Azure Uygulamalarınızda HTML'yi PDF'ye Dönüştürmeye Başlamaya Hazır mısınız?
Bugün IronPDF ile projenizde ücretsiz bir deneme ile başlayın.
IronPDF ücretsiz denemesini deneyin. Güçlü özelliklerine erişin ve Azure uygulamalarınızda HTML'yi PDF'ye dönüştürmeye hemen başlayın!
Üretim dağıtımları için, ihtiyaçlarınıza uygun planı bulmak üzere IronPDF'nin lisanslama seçeneklerini keşfedin. IronPDF, kapsamlı dokümantasyon, hızlı destek ve sürekli güncellemeler ile Azure Functions ve ötesinde güvenilir HTML'den PDF'ye dönüşüm için ihtiyacınız olan her şeyi sağlar.
Sıkça Sorulan Sorular
Azure kullanarak HTML'nin PDF'ye dönüştürülmesinin amacı nedir?
Azure kullanarak HTML'yi PDF'ye dönüştürmek, geliştiricilerin bulut tabanlı belgeleri güvenilir bir şekilde oluşturmalarına olanak tanır, bu da belge oluşturma ve yönetimi gerektiren uygulamalar için önemlidir.
IronPDF, Azure üzerindeki HTML'den PDF'e dönüşüm sürecini nasıl geliştirir?
IronPDF, profesyonel belge oluşturma için hayati öneme sahip olan karmaşık düzenleri ve stilleri destekleyerek yüksek kaliteli PDF oluşturmayı sağlamak için sağlam özellikler sunarak dönüşüm sürecini geliştirir.
Azure üzerinde IronPDF kullanarak PDF oluşturmayı otomatikleştirmek mümkün mü?
Evet, IronPDF, Azure ile entegre edilerek PDF oluşturmayı otomatikleştirir, böylece bulut ortamlarında belge iş akışlarını sorunsuz hale getirir ve manuel müdahaleyi azaltır.
Geliştiriciler için Azure üzerinde IronPDF kullanmanın temel avantajları nelerdir?
Ana avantajlar arasında ölçeklenebilirlik, yüksek performans ve dinamik HTML içeriklerini işleme yeteneği bulunur, bu da geliştiricilerin büyük belge işleme görevlerini yönetmelerini kolaylaştırır.
IronPDF, dönüşüm sürecinde karmaşık HTML düzenlerini işleyebilir mi?
IronPDF, karmaşık HTML düzenlerini işlemek için tasarlanmıştır ve PDF çıktısında tüm öğelerin doğru bir şekilde temsil edilmesini sağlar, bu da belge bütünlüğünü korumak için hayati önem taşır.
IronPDF'yi Azure üzerinde dağıtmak için ön koşullar nelerdir?
IronPDF'yi Azure üzerinde dağıtmak için aktif bir Azure hesabına, Azure hizmetlerini anlama bilgisine ve uygulamanızla entegre olacak IronPDF kütüphanelerine erişime ihtiyacınız vardır.
IronPDF, bulut tabanlı PDF oluşturma sırasında güvenliği nasıl sağlar?
IronPDF, PDF oluşturma sırasında hassas bilgileri korumak için şifreli bağlantılar ve güvenli veri işleme uygulamaları sağlayarak güvenliği sağlar.
IronPDF'yi Azure üzerinde kullanırken PDF çıktısını özelleştirmek mümkün mü?
Evet, IronPDF, PDF çıktısı için kapsamlı özelleştirme seçenekleri sunar ve geliştiricilerin belgelerin görünüm ve işlevselliğini özel gereksinimlere uygun hale getirmesine olanak tanır.
IronPDF, Azure üzerinde dinamik web sayfalarının PDF'e dönüştürülmesini destekliyor mu?
IronPDF, dinamik web sayfalarını destekler ve gerçek zamanlı veri ve içerik değişikliklerini yakalar, bu da güncel belgeler oluşturmaları gereken uygulamalar için özellikle kullanışlıdır.
IronPDF, Azure'da HTML'yi PDF'e dönüştürmek için .NET 10 ile uyumlu mu?
Evet — IronPDF .NET 10 ile tamamen uyumludur ve tüm HTML'den PDF'e özelliklerinin Azure üzerinde sorunsuz çalışmasını sağlar, ayrıca .NET 9, 8, 7, 6, Core, Standard ve Framework platformlarını da destekler.

