IronPDF ile iTextSharp "Document Has No Pages" Hatasını HTML'den PDF'e Dönüştürmede Düzeltin
Full Comparison
Looking for a detailed feature-by-feature breakdown? See how IronPDF stacks up against Itext on pricing, HTML support, and licensing.
iTextSharp 'dökümanın sayfası yok' hatası, XMLWorker HTML içeriğini çözümleyemediğinde ortaya çıkar, ancak IronPDF'nin Chrome tabanlı render motoru, HTML içeriğini tarayıcılar gibi işlemesiyle bu sorunu ortadan kaldırır ve çözümleme istisnaları olmadan güvenilir PDF oluşturma sağlar.
HTML'nin PDF'ye dönüştürülmesi, .NET uygulamalarında yaygın bir gerekliliktir, ancak iTextSharp kullanan geliştiriciler sık sık 'dökümanın sayfası yok' hata mesajıyla karşılaşırlar. Bu hata, PDF belgesi oluşturma işleminde bir başarısızlık meydana geldiğinde ortaya çıkar ve geliştiricileri çözümler aramaya yönlendirir. Bu analiz, neden bu durumun yaşandığını ve IronPDF'nin HTML'den PDF'ye dönüşüm yetenekleri ile nasıl etkili bir şekilde çözülebileceğini inceler.
'Dokümanın Sayfası Yok' Hatasına Ne Sebep Olur?
'Dokümanın sayfası yok' istisnası, iTextSharp'ın çözümleyicisinin HTML içeriğini geçerli bir PDF belgesine işleyemediğinde ortaya çıkar. Bu hata genellikle belge kapatma işlemi sırasında ortaya çıkar, bu konuyla ilgili birçok Stack Overflow konusu buna değinmektedir. Bu hatanın kök nedenini anlamak, geliştiricilerin ihtiyaçları için doğru PDF kütüphanesini seçmelerine yardımcı olur.
Hata, iTextSharp'ın HTML çözümleme bileşeni olan XMLWorker'ın işleyemediği HTML yapılarıyla karşılaştığında sessizce başarısız olması nedeniyle ortaya çıkar. Çözümleme sırasında bir istisna oluşturmamak yerine, boş bir belge üretir. Belge kapandığında, iTextSharp içeriğin yazılmadığını tespit eder ve 'dökümanın sayfası yok' istisnasını fırlatır. Bu sessiz başarısızlık modu, hata ayıklamayı özellikle zorlaştırır, çünkü yığın izi, çözümleme hatası yerine kapatma işlemine işaret eder.
static void Main(string[] args)
{
Document pdfDoc = new Document(PageSize.A4);
FileStream stream = new FileStream("output.pdf", FileMode.Create);
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, stream);
pdfDoc.Open();
// HTML parsing fails silently -- no exception here
var sr = new StringReader("<div>Complex HTML</div>");
XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
pdfDoc.Close(); // Exception: The document has no pages
Console.WriteLine("Error: Document has no pages");
}
static void Main(string[] args)
{
Document pdfDoc = new Document(PageSize.A4);
FileStream stream = new FileStream("output.pdf", FileMode.Create);
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, stream);
pdfDoc.Open();
// HTML parsing fails silently -- no exception here
var sr = new StringReader("<div>Complex HTML</div>");
XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
pdfDoc.Close(); // Exception: The document has no pages
Console.WriteLine("Error: Document has no pages");
}
Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports iTextSharp.tool.xml
Module Program
Sub Main(args As String())
Dim pdfDoc As New Document(PageSize.A4)
Dim stream As New FileStream("output.pdf", FileMode.Create)
Dim writer As PdfWriter = PdfWriter.GetInstance(pdfDoc, stream)
pdfDoc.Open()
' HTML parsing fails silently -- no exception here
Dim sr As New StringReader("<div>Complex HTML</div>")
XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr)
pdfDoc.Close() ' Exception: The document has no pages
Console.WriteLine("Error: Document has no pages")
End Sub
End Module
Bu Hata Meydana Geldiğinde Konsol Çıkışı Ne Gösterir?

Bu kod, HTML'den bir PDF dosyası oluşturmayı hedefliyor, ancak XMLWorker HTML içeriğini başarıyla çözümleyemediği için istisna ile karşılaşıyor. Yazma işlemi tamamlanıyor, ancak belgeye hiçbir içerik eklenmediği için sonuç boş bir dosya oluyor. Bu çözümleme hatası, ASP.NET uygulamalarında HTML to PDF dönüşümünde geliştiricilerin karşılaştığı en yaygın sorunlardan biridir. Özelleştirilmiş CSS stilleri veya JavaScript ile işlenmiş içerikle başa çıkıldığında sorun daha karmaşık hale gelir.
Yedek Kütüphane Neden Aynı Sorunu Yaşıyor?
XMLWorker, devre dışı bırakılan HTMLWorker'ın yerini alırken, yine de belirli HTML yapılarıyla aynı sorunla karşılaşır. Sorun devam eder çünkü XMLWorker'ın iText'in resmi forumlarında belgelenmiş katı ayrıştırma gereksinimleri vardır. Bu sınırlama, piksel mükemmeliyetinde HTML'den PDF'e dönüşümü uygulamaya çalışan veya modern web uygulamalarında duyarlı CSS düzenleriyle çalışan geliştiricileri etkiler.
Yaygın bir geçici çözüm, HTML'yi ayrıştırmadan önce belgeyi boş bir paragrafla önceden doldurmaktır. Bu, belgenin kapandığında en az bir içerik unsurunun var olmasını sağlayarak "sayfa yok" istisnasını önler.
public static void CreatePDF(string html, string path)
{
using (var fs = new FileStream(path, FileMode.Create))
{
var document = new Document();
var writer = PdfWriter.GetInstance(document, fs);
document.Open();
document.Add(new Paragraph("")); // Workaround to avoid error
var phrase = new Phrase("Draft version", FontFactory.GetFont("Arial", 8));
document.Add(phrase);
using (var sr = new StringReader(html))
{
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, sr);
}
document.Close();
}
}
public static void CreatePDF(string html, string path)
{
using (var fs = new FileStream(path, FileMode.Create))
{
var document = new Document();
var writer = PdfWriter.GetInstance(document, fs);
document.Open();
document.Add(new Paragraph("")); // Workaround to avoid error
var phrase = new Phrase("Draft version", FontFactory.GetFont("Arial", 8));
document.Add(phrase);
using (var sr = new StringReader(html))
{
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, sr);
}
document.Close();
}
}
Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports iTextSharp.tool.xml
Public Shared Sub CreatePDF(html As String, path As String)
Using fs As New FileStream(path, FileMode.Create)
Dim document As New Document()
Dim writer As PdfWriter = PdfWriter.GetInstance(document, fs)
document.Open()
document.Add(New Paragraph("")) ' Workaround to avoid error
Dim phrase As New Phrase("Draft version", FontFactory.GetFont("Arial", 8))
document.Add(phrase)
Using sr As New StringReader(html)
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, sr)
End Using
document.Close()
End Using
End Sub
Bu Geçici Çözüm İle PDF Çıktısı Nasıl Görünür?

Karmaşık HTML Öğeleri Neden Hâlâ İşlenemiyor?
Boş bir paragraf eklemek anında hatayı önler ancak tablolar, resimler veya özel yazı tipleri içeren karmaşık HTML genellikle doğru şekilde işlenmez. İçerik, oluşan PDF belgesinde eksik veya hatalı olabilir. Geliştiriciler, yerleşik stiller, bağlantı öğeleri veya belirli genişlik özellikleri içeren HTML işliyorlarken aynı sorunla karşılaşır. Boş referanslar ve eksik öğe işleme, daha fazla çözüm gerektiren ek sorunlar oluşturur.
XMLWorker, HTML 4 ve temel CSS 2'nin bir alt kümesini işlemek üzere tasarlanmıştır. Modern web sayfaları, rutin olarak bu kapsamın çok ötesinde özellikler kullanır: CSS Grid, Flexbox, CSS değişkenleri, calc() ifadeleri, SVG grafikleri ve JavaScript destekli işleme. Bunlardan herhangi biri "sayfa yok" hatasını tetikleyebilir veya bozuk bir çıktı üretebilir - ve düzeltmeye yönlendiren açıklayıcı bir hata mesajı olmadan.
// Common XMLWorker limitations that require manual handling
public void ProcessComplexHTML(string htmlContent)
{
// CSS flexbox -- not supported by XMLWorker
if (htmlContent.Contains("display: flex"))
throw new HayırtSupportedException("Flexbox layout not supported");
// JavaScript content -- silently ignored
if (htmlContent.Contains("<script>"))
Console.WriteLine("Warning: JavaScript will be ignored");
// Özel yazı tipleri -- require manual embedding
if (htmlContent.Contains("@font-face"))
Console.WriteLine("Warning: Web fonts need manual setup");
}
// Common XMLWorker limitations that require manual handling
public void ProcessComplexHTML(string htmlContent)
{
// CSS flexbox -- not supported by XMLWorker
if (htmlContent.Contains("display: flex"))
throw new HayırtSupportedException("Flexbox layout not supported");
// JavaScript content -- silently ignored
if (htmlContent.Contains("<script>"))
Console.WriteLine("Warning: JavaScript will be ignored");
// Özel yazı tipleri -- require manual embedding
if (htmlContent.Contains("@font-face"))
Console.WriteLine("Warning: Web fonts need manual setup");
}
' Common XMLWorker limitations that require manual handling
Public Sub ProcessComplexHTML(ByVal htmlContent As String)
' CSS flexbox -- not supported by XMLWorker
If htmlContent.Contains("display: flex") Then
Throw New NotSupportedException("Flexbox layout not supported")
End If
' JavaScript content -- silently ignored
If htmlContent.Contains("<script>") Then
Console.WriteLine("Warning: JavaScript will be ignored")
End If
' Özel yazı tipleri -- require manual embedding
If htmlContent.Contains("@font-face") Then
Console.WriteLine("Warning: Web fonts need manual setup")
End If
End Sub
Modern HTML Nasıl Aynı Hata Olmadan Dönüştürülür?
Bu gerçek dünya senaryosu, HTML'den PDF'e şekillendirilmiş bir faturayı dönüştürmeyi gösterir. Örnek, genellikle sorunlara neden olan yaygın öğeleri içerir: yerleşik CSS, medya sorguları, tablo düzenleri ve bağlantılar. Bunlar, XMLWorker'da "sayfa yok" hatasını tetikleyen türden yapılar:
<!DOCTYPE html>
<html>
<head>
<title>Invoice Sample</title>
<style>
.invoice-header {
background-color: #f0f0f0;
padding: 20px;
}
.invoice-table {
margin-top: 20px;
}
@media print {
.no-print { display: none; }
}
</style>
</head>
<body>
<div style="font-family: Arial; width: 100%;">
<div class="invoice-header">
<h1 style="color: #2e6c80;">Invoice #12345</h1>
<p>Date: <span id="date">2025-01-15</span></p>
</div>
<table class="invoice-table" style="width: 100%; border-collapse: collapse;">
<thead>
<tr>
<th style="border: 1px solid #ddd; padding: 8px;">Item</th>
<th style="border: 1px solid #ddd; padding: 8px;">Price</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border: 1px solid #ddd; padding: 8px;">Service</td>
<td style="border: 1px solid #ddd; padding: 8px;">$100.00</td>
</tr>
</tbody>
</table>
<a href="https://example.com/terms" class="no-print">View Terms</a>
</div>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>Invoice Sample</title>
<style>
.invoice-header {
background-color: #f0f0f0;
padding: 20px;
}
.invoice-table {
margin-top: 20px;
}
@media print {
.no-print { display: none; }
}
</style>
</head>
<body>
<div style="font-family: Arial; width: 100%;">
<div class="invoice-header">
<h1 style="color: #2e6c80;">Invoice #12345</h1>
<p>Date: <span id="date">2025-01-15</span></p>
</div>
<table class="invoice-table" style="width: 100%; border-collapse: collapse;">
<thead>
<tr>
<th style="border: 1px solid #ddd; padding: 8px;">Item</th>
<th style="border: 1px solid #ddd; padding: 8px;">Price</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border: 1px solid #ddd; padding: 8px;">Service</td>
<td style="border: 1px solid #ddd; padding: 8px;">$100.00</td>
</tr>
</tbody>
</table>
<a href="https://example.com/terms" class="no-print">View Terms</a>
</div>
</body>
</html>
iTextSharp Bu Faturayı İşlerken Ne Olur?

iTextSharp bu fatura şablonunu işlerken, çıktı genellikle CSS stilinden yoksun, arka plan renklerinden yoksun ve tablo kenarlıklarını kaybetmiş olur. @media print sorgusu yok sayılır ve herhangi bir web fontu referansı sessiz ayrıştırma hatalarına neden olur. HTML, XMLWorker'ın tanımadığı bir CSS özelliği içeriyorsa, tüm blok işlenemeyebilir - ayrıştırma sırasında hata atmadan eksik içeriğe yol açar.
Aynı Fatura IronPDF ile Nasıl İşlenir?

Bu HTML Öğeleri iTextSharp'da Neden Sorunlara Neden Olur?
iTextSharp'ın XMLWorker'ı ile bu fatura, tablo stili, genişlik özellikleri veya font belirtileri nedeniyle başarısız olabilir. Bu öğeler desteklenmediğinde "belgenin sayfası yok" hatası sık sık ortaya çıkar. Bağlantılar ve medya sorguları referansları da doğru şekilde işlenemeyebilir. Bu sınırlamalar, dijital imzalar veya sayfa numaraları gibi gelişmiş PDF özelliklerini uygularken iş kritik hale gelir.
Mozilla Developer Network'in CSS ile ilgili belgeleri'ne göre modern CSS, tarayıcıların doğal olarak desteklediği yüzlerce özellik ve değer içerir. XMLWorker, bunların sadece küçük bir kısmını kapsar ve bu nedenle gerçek dünya web içeriği sürekli olarak ayrıştırma hatalarını tetikler.
HTML'den PDF'e Dönüştürme İşlemi Ayrıştırma Hataları Olmadan Nasıl Yönetilir?
IronPDF, HTML'yi bir web tarayıcısında göründüğü şekilde işleyen Chrome tabanlı bir işleme motoru kullanır. Bu yaklaşım, ayrıştırma hatalarını ortadan kaldırır ve tüm modern HTML ve CSS özelliklerini destekler. Tam yapılandırma seçenekleri listesi için ChromePdfRenderer API referansını inceleyebilirsiniz. Chrome motoru, XMLWorker'ın yapamayacağı JavaScript yürütmesi, web fontları ve duyarlı düzenler için destek sağlar.
IronPDF NuGet Üzerinden Nasıl Yüklenir?
Herhangi bir kod yazmadan önce IronPDF NuGet paketini yükleyin. .NET CLI'den bunu yapabilirsiniz:
dotnet add package IronPdf
dotnet add package IronPdf
Veya Visual Studio'daki NuGet Paket Yöneticisi Konsolundan:
Install-Package IronPdf
Install-Package IronPdf
Yüklendikten sonra, tek ve güvenilir bir çağrı ile tüm iTextSharp + XMLWorker hattının yerini alan ChromePdfRenderer'e erişiminiz olur.
IronPDF İle HTML'den PDF'e Nasıl İşlenir?
Aşağıdaki örnek, iTextSharp'ta başarısızlıklara neden olan aynı fatura HTML'sini işler. Dikkat edin, workaroundlar yok, eklenmesi gereken boş paragraflar yok ve yönetilecek sessiz hatalar yok:
using IronPdf;
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Configure rendering options for production use
renderer.RenderingOptions.MarginTop = 40;
renderer.RenderingOptions.MarginBottom = 40;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
string html = @"<div style='font-family: Arial; width: 100%;'>
<h1 style='color: #2e6c80;'>Invoice #12345</h1>
<table style='width: 100%; border-collapse: collapse;'>
<tr>
<th style='border: 1px solid #ddd; padding: 8px;'>Item</th>
<th style='border: 1px solid #ddd; padding: 8px;'>Price</th>
</tr>
<tr>
<td style='border: 1px solid #ddd; padding: 8px;'>Service</td>
<td style='border: 1px solid #ddd; padding: 8px;'>$100.00</td>
</tr>
</table>
</div>";
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");
using IronPdf;
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Configure rendering options for production use
renderer.RenderingOptions.MarginTop = 40;
renderer.RenderingOptions.MarginBottom = 40;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
string html = @"<div style='font-family: Arial; width: 100%;'>
<h1 style='color: #2e6c80;'>Invoice #12345</h1>
<table style='width: 100%; border-collapse: collapse;'>
<tr>
<th style='border: 1px solid #ddd; padding: 8px;'>Item</th>
<th style='border: 1px solid #ddd; padding: 8px;'>Price</th>
</tr>
<tr>
<td style='border: 1px solid #ddd; padding: 8px;'>Service</td>
<td style='border: 1px solid #ddd; padding: 8px;'>$100.00</td>
</tr>
</table>
</div>";
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Configure rendering options for production use
renderer.RenderingOptions.MarginTop = 40
renderer.RenderingOptions.MarginBottom = 40
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
renderer.RenderingOptions.PrintHtmlBackgrounds = True
Dim html As String = "<div style='font-family: Arial; width: 100%;'>" & _
"<h1 style='color: #2e6c80;'>Invoice #12345</h1>" & _
"<table style='width: 100%; border-collapse: collapse;'>" & _
"<tr>" & _
"<th style='border: 1px solid #ddd; padding: 8px;'>Item</th>" & _
"<th style='border: 1px solid #ddd; padding: 8px;'>Price</th>" & _
"</tr>" & _
"<tr>" & _
"<td style='border: 1px solid #ddd; padding: 8px;'>Service</td>" & _
"<td style='border: 1px solid #ddd; padding: 8px;'>$100.00</td>" & _
"</tr>" & _
"</table>" & _
"</div>"
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("invoice.pdf")
IronPDF Çıkışı Nasıl Görünür?

Bu Yaklaşım Ayrıştırma Hatalarını Nasıl Ortadan Kaldırır?
Bu kod, herhangi bir istisna olmadan başarıyla bir PDF dosyası oluşturur. Yöntem, workaround ihtiyaçlarını ortadan kaldırarak karmaşık HTML ve CSS'yi otomatik olarak işler. İçerik, tarayıcı ön izlemesine uyan piksel mükemmel durumda işlenir. IronPDF ayrıca asenkron işleme, özel kenar boşlukları ve optimize edilmiş dosya boyutları için PDF sıkıştırmayı destekler.
JavaScript ağırlıklı içerik veya tek sayfa uygulamalar içeren senaryolar için, IronPDF'in RenderDelay seçeneği, PDF yakalanmadan önce JavaScript'in çalışmasına izin verir -- bu XMLWorker'ın asla yapamayacağı bir şey. Aşağıdaki örnec, üretime hazır bir asenkron desende başlıklar, alt bilgiler ve güvenlik ayarları eklemektedir:
using IronPdf;
using Microsoft.Extensions.Logging;
// Production-ready PDF generation with IronPDF
public class PdfGenerator
{
private readonly ChromePdfRenderer _renderer;
private readonly ILogger<PdfGenerator> _logger;
public PdfGenerator(ILogger<PdfGenerator> logger)
{
_logger = logger;
_renderer = new ChromePdfRenderer();
_renderer.RenderingOptions.Timeout = 60;
_renderer.RenderingOptions.EnableJavaScript = true;
_renderer.RenderingOptions.RenderDelay = 2000;
_renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
Height = 25,
HtmlFragment = "<div style='text-align: center;'>{page} of {total-pages}</div>"
};
}
public async Task<PdfDocument> GenerateWithRetry(string html, int maxRetries = 3)
{
for (int i = 0; i < maxRetries; i++)
{
try
{
_logger.LogInformation("Generating PDF, attempt {Attempt}", i + 1);
return await _renderer.RenderHtmlAsPdfAsync(html);
}
catch (Exception ex)
{
_logger.LogWarning("PDF generation failed: {Message}", ex.Message);
if (i == maxRetries - 1) throw;
await Task.Delay(1000 * (i + 1));
}
}
throw new InvalidOperationException("PDF generation failed after retries");
}
}
using IronPdf;
using Microsoft.Extensions.Logging;
// Production-ready PDF generation with IronPDF
public class PdfGenerator
{
private readonly ChromePdfRenderer _renderer;
private readonly ILogger<PdfGenerator> _logger;
public PdfGenerator(ILogger<PdfGenerator> logger)
{
_logger = logger;
_renderer = new ChromePdfRenderer();
_renderer.RenderingOptions.Timeout = 60;
_renderer.RenderingOptions.EnableJavaScript = true;
_renderer.RenderingOptions.RenderDelay = 2000;
_renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
Height = 25,
HtmlFragment = "<div style='text-align: center;'>{page} of {total-pages}</div>"
};
}
public async Task<PdfDocument> GenerateWithRetry(string html, int maxRetries = 3)
{
for (int i = 0; i < maxRetries; i++)
{
try
{
_logger.LogInformation("Generating PDF, attempt {Attempt}", i + 1);
return await _renderer.RenderHtmlAsPdfAsync(html);
}
catch (Exception ex)
{
_logger.LogWarning("PDF generation failed: {Message}", ex.Message);
if (i == maxRetries - 1) throw;
await Task.Delay(1000 * (i + 1));
}
}
throw new InvalidOperationException("PDF generation failed after retries");
}
}
Imports IronPdf
Imports Microsoft.Extensions.Logging
' Production-ready PDF generation with IronPDF
Public Class PdfGenerator
Private ReadOnly _renderer As ChromePdfRenderer
Private ReadOnly _logger As ILogger(Of PdfGenerator)
Public Sub New(logger As ILogger(Of PdfGenerator))
_logger = logger
_renderer = New ChromePdfRenderer()
_renderer.RenderingOptions.Timeout = 60
_renderer.RenderingOptions.EnableJavaScript = True
_renderer.RenderingOptions.RenderDelay = 2000
_renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
.Height = 25,
.HtmlFragment = "<div style='text-align: center;'>{page} of {total-pages}</div>"
}
End Sub
Public Async Function GenerateWithRetry(html As String, Optional maxRetries As Integer = 3) As Task(Of PdfDocument)
For i As Integer = 0 To maxRetries - 1
Try
_logger.LogInformation("Generating PDF, attempt {Attempt}", i + 1)
Return Await _renderer.RenderHtmlAsPdfAsync(html)
Catch ex As Exception
_logger.LogWarning("PDF generation failed: {Message}", ex.Message)
If i = maxRetries - 1 Then Throw
Await Task.Delay(1000 * (i + 1))
End Try
Next
Throw New InvalidOperationException("PDF generation failed after retries")
End Function
End Class
Güvenilir PDF Oluşturma İçin En İyi Çözüm Nedir?
HTML'den PDF'e dönüşüm için iki kütüphaneyi karşılaştırırken, yetenek farklılıkları doğrudan PDF kalitesini ve dağıtım güvenilirliğini etkiler:
| Özellik | iTextSharp + XMLWorker | IronPDF |
|---|---|---|
| Modern HTML/CSS desteği | Sınırlı (HTML 4, CSS 2) | Tam (Chrome işleme motoru) |
| JavaScript yürütme | Hayır | Evet |
| Hata yönetimi | Ayrıştırma istisnaları yaygın | Güvenilir işleme |
| Karmaşık tablolar | Sık sık başarısız | Tam destek |
| Özel yazı tipleri | Manuel yerleştirme gereklidir | Otomatik işleme |
| SVG desteği | Hayır | Evet |
| Asenkron işleme | Hayır | Evet |
| Docker/Linux desteği | Sınırlı | Tam yerel destek |
| CSS medya türleri | Temel | Ekran ve Baskı |
| Hata ayıklama araçları | Sınırlı | Chrome DevTools entegrasyonu |
iTextSharp'tan IronPDF'e Nasıl Geçiş Yapılır?
"Belgenin sayfası yok" hatası yaşayan geliştiriciler için IronPDF'e geçiş, anında bir çözüm sunar. Dönüşüm süreci basittir ve IronPDF kapsamlı belgelendirme ve kod örnekleri sunar. Aşağıdaki öncesi ve sonrası karşılaştırması, karmaşıklıkta bir azalma göstermektedir:
// Before (iTextSharp) -- error-prone approach requiring workarounds
public byte[] CreatePdfWithIText(string htmlContent)
{
using var ms = new MemoryStream();
var document = new Document();
var writer = PdfWriter.GetInstance(document, ms);
document.Open();
// Must add empty paragraph to avoid "no pages" error
document.Add(new Paragraph(""));
try
{
using var sr = new StringReader(htmlContent);
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, sr);
}
catch (Exception ex)
{
document.Add(new Paragraph("Error: " + ex.Message));
}
document.Close();
return ms.ToArray();
}
// After (IronPDF) -- reliable, no workarounds needed
public byte[] CreatePdfWithIron(string htmlContent)
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 500;
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
return pdf.BinaryData;
}
// Before (iTextSharp) -- error-prone approach requiring workarounds
public byte[] CreatePdfWithIText(string htmlContent)
{
using var ms = new MemoryStream();
var document = new Document();
var writer = PdfWriter.GetInstance(document, ms);
document.Open();
// Must add empty paragraph to avoid "no pages" error
document.Add(new Paragraph(""));
try
{
using var sr = new StringReader(htmlContent);
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, sr);
}
catch (Exception ex)
{
document.Add(new Paragraph("Error: " + ex.Message));
}
document.Close();
return ms.ToArray();
}
// After (IronPDF) -- reliable, no workarounds needed
public byte[] CreatePdfWithIron(string htmlContent)
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 500;
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
return pdf.BinaryData;
}
Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports iTextSharp.tool.xml
Public Class PdfCreator
' Before (iTextSharp) -- error-prone approach requiring workarounds
Public Function CreatePdfWithIText(htmlContent As String) As Byte()
Using ms As New MemoryStream()
Dim document As New Document()
Dim writer As PdfWriter = PdfWriter.GetInstance(document, ms)
document.Open()
' Must add empty paragraph to avoid "no pages" error
document.Add(New Paragraph(""))
Try
Using sr As New StringReader(htmlContent)
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, sr)
End Using
Catch ex As Exception
document.Add(New Paragraph("Error: " & ex.Message))
End Try
document.Close()
Return ms.ToArray()
End Using
End Function
' After (IronPDF) -- reliable, no workarounds needed
Public Function CreatePdfWithIron(htmlContent As String) As Byte()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.RenderDelay = 500
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
Return pdf.BinaryData
End Function
End Class
IronPDF'in API'sını Daha Geliştirici Dostu Yapan Nedir?
Basitleştirilmiş API, daha az kod bakımını ve hata ayıklama gerektiren ayrıştırma hatalarının yokluğunu sağlar. IronPDF ayrıca başlıklar ve alt bilgiler ekleme, PDF'leri birleştirme ve dijital imzalar uygulama için karmaşık workaroundlar olmadan özellikler sunar. Docker ortamlarında çalışan veya Linux sunucularına dağıtım yapan ekipler için IronPDF, platformlar arası tutarlı davranış sunar.
Ücretsiz denemenizi başlatın ve hatasız HTML'den PDF'e dönüşüm deneyimini yaşayın.
Sıradaki Adımlarınız Neler?
"Belgenin sayfası yok" hatası, iTextSharp'ın XMLWorker'ına yerleştirilmiş asli ayrıştırma sınırlamalarından kaynaklanır. Boş bir paragrafla belgeyi önceden doldurmak gibi geçici çözümler mevcut olsa da, karmaşık HTML işlemede temel sorunu çözmezler. IronPDF'in Chrome tabanlı işleme motoru, modern web içeriğini ayrıştırma istisnaları olmadan ele alan güvenilir bir çözüm sunar.
HTML'den tutarlı PDF üretimi gerektiren üretim uygulamaları için IronPDF, ayrıştırıcı hatalarının hata ayıklama sıkıntısını ortadan kaldırır ve profesyonel sonuçlar sunar. Motor, tüm HTML öğelerini, CSS stillerini ve JavaScript'i ele alır ve belgelerin her seferinde doğru şekilde işlenmesini sağlar. İster faturalar, ister raporlar veya metin, tablolar ve resim içeren herhangi bir belge oluşturuyor olun, IronPDF ihtiyaçınız olan çözümü sunar.
İlerlemenizi sağlamak için önerilen bir sonraki adımlar şunlardır:
- IronPDF'i NuGet (
dotnet add package IronPdf) üzerinden yükleyin ve hızlı başlangıç kılavuzunu çalıştırın - Tam işleme seçenekleri geçişi için HTML'den PDF rehberi'ni gözden geçirin
- Kenar boşluklarını, başlıkları, JavaScript bekleme sürelerini ve güvenlik ayarlarını yapılandırmak için ChromePdfRenderer API referansını keşfedin
- Kitaplık farklılıklarının ayrıntılı bir dökümü için iTextSharp vs. IronPDF karşılaştırması'na göz atın
- Yüksek hacimli iş yükleri için çıktıyı optimize etmek amacıyla hata ayıklama kılavuzlarını gözden geçirin
- Bulut dağıtımları için Azure ve Docker kurulum kılavuzlarına bakın
Sıkça Sorulan Sorular
iTextSharp HTML'den PDF'e 'belge geen sayfalara sahip değil' hatasına ne sebep olur?
iTextSharp'ta 'belge geen sayfalara sahip değil' hatası genellikle HTML içeriği veya desteklenmeyen özelliklerle ilgili sorunlar nedeniyle HTML'den PDF'e dönüştürme sırasında işleme süreci başarısız olduğunda oluşur.
HTML'den PDF'e dönüştürme için iTextSharp'a alternatif var mı?
Evet, IronPDF .NET uygulamalarında HTML'den PDF'e dönüştürme için güvenilir bir çözüm sunar ve iTextSharp'ta bulunan birçok sınırlamayı aşar.
IronPDF HTML'den PDF'e dönüştürme işlemini iTextSharp'tan farklı nasıl ele alır?
IronPDF, daha kapsamlı bir ayrıştırma yeteneği sağlar ve daha geniş bir yelpazede HTML ve CSS özelliklerini destekler, bu da 'sayfasız' hatası gibi dönüştürme hatalarının olasılığını azaltır.
IronPDF karmaşık HTML belgelerini PDF'e dönüştürebilir mi?
IronPDF, gelişmiş CSS, JavaScript ve multimedya öğeleri içeren karmaşık HTML belgelerini ele almak için tasarlanmıştır ve kesin PDF çıktısı sağlar.
Geliştiricilerin, iTextSharp yerine IronPDF kullanmayı düşünmeleri gereken nedenler nelerdir?
Geliştiriciler, kullanımı kolaylığı, HTML ve CSS için tam destek, ve yaygın olarak karşılaşılan hatalar olmadan yüksek kaliteli PDF'ler üretebilme yeteneği nedeniyle IronPDF'i iTextSharp'a tercih edebilir.
IronPDF, PDF dönüştürme işlemi sırasında JavaScript ve CSS'yi destekliyor mu?
Evet, IronPDF JavaScript, CSS ve modern HTML5'i tamamen destekler ve orijinal HTML görsel bütünlüğünü PDF çıkışında korur.
HTML'den PDF'e dönüştürme için IronPDF ile nasıl başlanır?
IronPDF ile başlamak için, uygulama için adım adım kılavuzlar sunan detaylı dokümantasyon ve öğrenim materyallerine kendi web sitelerinden ulaşabilirsiniz.
.NET geliştiricileri için IronPDF kullanmanin faydalari nelerdir?
IronPDF, karmaşık HTML içeriği desteği, kolay entegrasyon ve güvenilir performans gibi avantajlar sunarak .NET geliştiricileri için esnek bir araç sunar.
IronPDF PDF dönüştürme hatalarının giderilmesi için herhangi bir destek sunuyor mu?
Evet, IronPDF, karşılaşılan sorunları çözmek ve PDF dönüştürme sırasında karşılaşılan sorunları gidermek için dökümantasyon ve bir destek ekibi de içeren geniş kapsamlı destek kaynakları sunar.
Satın almadan önce IronPDF'in yeteneklerini test etmek mümkün mudur?
IronPDF, geliştiricilerin özelliklerini test etmesine ve satın alma kararı vermeden önce performansını değerlendirmesine olanak tanıyan ücretsiz bir deneme sürümü sunar.



