Easy PDF SDK'dan IronPDF'e C# ile Nasıl Geçilir
Easy PDF SDK, modern geliştirme ortamlarında önemli dağıtım ve bakım zorlukları yaratan birkaç köklü teknolojiye dayanır.
YaygınKolay PDF SDKDağıtım Sorunları
Geliştiriciler,Kolay PDF SDKile çalışırken sık sık bu sorunlarla karşılaşır:
bcl.easypdf.interop.easypdfprinter.dll error loadingCOM object that has been separated from its underlying RCW cannot be usedTimeout expired waiting for print job to completeThe printer operation failed because the service is not runningError: Access denied(etkileşimli oturum gerekli)Cannot find printer: BCL easyPDF Printer
Bu hatalar, modern sunucu ortamlarında mevcut olmayan sanal yazıcı sürücüleri, COM interop ve etkileşimli Windows oturumları gerektiren Easy PDF SDK'nın temel mimarisinden kaynaklanır.
Kolay PDF SDKvs. IronPDF: Temel Farklılıklar
| Özellik | Kolay PDF SDK | IronPDF |
|---|---|---|
| Platform | Yalnızca Windows | Windows, Linux, macOS, Docker |
| Office Bağımlılığı | Gerekli | None |
| Kurulum | Karmaşık MSI + yazıcı sürücüsü + COM | Basit NuGet paketi |
| Sunucu Desteği | Etkileşimli oturum gerektirir | Başsız çalıştırılır |
| HTML İşleme | Temel (Office tabanlı) | Tam Chromium (CSS3, JS) |
| .NET Desteği | Sınırlı .NET Core | Tam .NET 5/6/7/8/9 |
| Asenkron Desen | Geri arama tabanlı | Yerel async/await |
| Kapsayıcı Desteği | Çalıştıramaz | Tam Docker/Kubernetes |
Platform Sınırlamaları
Kolay PDF SDK'nın yalnızca Windows sistemlerine bağımlılığı, Microsoft Office kurulumlarını gerektirerek Linux, macOS veya Docker gibi konteyner ortamları desteğini engeller. Bu bağımlılık, sunucu kurulumlarını zahmetli hale getirir ve hizmet benimsemeyi Windows ortamlarıyla sınırlar—çoklu platform DevOps uygulayan veya konteynerleri dağıtım için kullanan ekipler için önemli bir kısıtlamadır.
Önceden Taşıma Hazırlığı
Önkoşullar
Ortamınızın bu gereksinimlere uygun olduğunu doğrulayın:
- .NET Framework 4.6.2+ veya .NET Core 3.1 / .NET 5-9
- Visual Studio 2019+ veya C# uzantılı VS Code
- NuGet Paket Yöneticisi erişimi -IronPDFlisans anahtarı (ücretsiz deneme ironpdf.com adresinde mevcuttur)
Kolay PDF SDK Kullanımını Denetle
Kolay PDF SDK referanslarının tamamını belirlemek için bu komutları çözüm dizininde çalıştırın:
# Find all BCL using statements
grep -r "using BCL" --include="*.cs" .
# Find Printer/PDFDocument usage
grep -r "Printer\|PDFDocument\|PDFConverter\|HTMLConverter" --include="*.cs" .
# Find COM interop references
grep -r "easyPDF\|BCL.easyPDF" --include="*.csproj" .
# Find configuration settings
grep -r "PageOrientation\|TimeOut\|PrintOffice" --include="*.cs" .
# Find all BCL using statements
grep -r "using BCL" --include="*.cs" .
# Find Printer/PDFDocument usage
grep -r "Printer\|PDFDocument\|PDFConverter\|HTMLConverter" --include="*.cs" .
# Find COM interop references
grep -r "easyPDF\|BCL.easyPDF" --include="*.csproj" .
# Find configuration settings
grep -r "PageOrientation\|TimeOut\|PrintOffice" --include="*.cs" .
Beklenen Büyük Değişiklikler
| Kolay PDF SDK Deseni | Gereken Değişiklik |
|---|---|
new Printer() |
ChromePdfRenderer kullanın |
PrintOfficeDocToPDF() |
Office dönüştürme farklı şekilde ele alınmaktadır |
RenderHTMLToPDF() |
RenderHtmlAsPdf() |
| COM birlikte çalışma referansları | Tamamen kaldırın |
| Yazıcı sürücüsü yapılandırması | Gerekli değil |
BeginPrintToFile() geri aramaları |
Yerel async/await |
| Etkileşimli oturum gereksinimleri | Başsız çalıştırılır |
| 1 tabanlı sayfa indeksleme | 0 tabanlı indeksleme |
| Saniye cinsinden zaman aşımı | Milisaniye cinsinden zaman aşımı |
Adım Adım Geçiş Süreci
Adım 1: Kolay PDF SDK'yı Kaldırın
Kolay PDF SDK genellikle MSI yükleyici, manuel DLL referansları veya GAC kaydı aracılığıyla yüklenir. Tüm referansları kaldırın:
- BCL EasyPDF SDK'yı Programlar ve Özellikler'den kaldırın
- Projeden DLL referanslarını kaldırın
- COM birlikte çalışma referanslarını kaldırın
- Mevcutsa GAC girişlerini temizleyin
Adım 2: IronPDF'i Kurun
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
Ya da Paket Yöneticisi Konsolu aracılığıyla:
Install-Package IronPdf
Adım 3: Ad Alanı Referanslarını Güncelleyin
Kolay PDF SDK ad alanlarınıIronPDFile değiştirin:
// Remove these
using BCL.easyPDF;
using BCL.easyPDF.Interop;
using BCL.easyPDF.PDFConverter;
using BCL.easyPDF.Printer;
// Add these
using IronPdf;
using IronPdf.Rendering;
// Remove these
using BCL.easyPDF;
using BCL.easyPDF.Interop;
using BCL.easyPDF.PDFConverter;
using BCL.easyPDF.Printer;
// Add these
using IronPdf;
using IronPdf.Rendering;
Imports IronPdf
Imports IronPdf.Rendering
Tam API Geçiş Referansı
Çekirdek Sınıf Eşleştirmesi
| Kolay PDF SDK Sınıfı | IronPDF Eşdeğeri |
|---|---|
Printer |
ChromePdfRenderer |
PDFDocument |
PdfDocument |
HTMLConverter |
ChromePdfRenderer |
PrinterConfiguration |
ChromePdfRenderOptions |
PageOrientation |
PdfPaperOrientation |
PageSize |
PdfPaperSize |
SecurityHandler |
PdfDocument.SecuritySettings |
PDF Oluşturma Yöntemleri
| Kolay PDF SDK Yöntemi | IronPDF Yöntemi |
|---|---|
printer.RenderHTMLToPDF(html, path) |
renderer.RenderHtmlAsPdf(html).SaveAs(path) |
printer.RenderUrlToPDF(url, path) |
renderer.RenderUrlAsPdf(url).SaveAs(path) |
htmlConverter.ConvertHTML(html, doc) |
renderer.RenderHtmlAsPdf(html) |
htmlConverter.ConvertURL(url, doc) |
renderer.RenderUrlAsPdf(url) |
PDF Manipülasyon Yöntemleri
| Kolay PDF SDK Yöntemi | IronPDF Yöntemi |
|---|---|
doc.Append(doc2) |
PdfDocument.Merge(pdf1, pdf2) |
doc.ExtractPages(start, end) |
pdf.CopyPages(start, end) |
doc.DeletePage(index) |
pdf.RemovePage(index) |
doc.GetPageCount() |
pdf.PageCount |
doc.Save(path) |
pdf.SaveAs(path) |
doc.Close() |
pdf.Dispose() veya using |
doc.ExtractText() |
pdf.ExtractAllText() |
Yapılandırma Seçenekleri
| Kolay PDF SDK Seçeneği | IronPDF Seçeneği |
|---|---|
config.TimeOut |
RenderingOptions.Timeout |
config.PageOrientation = Landscape |
RenderingOptions.PaperOrientation = Landscape |
config.PageSize = A4 |
RenderingOptions.PaperSize = PdfPaperSize.A4 |
config.MarginTop/Bottom/Left/Right |
RenderingOptions.MarginTop, vb. |
Kod Geçiş Örnekleri
HTML Dizesinden PDF'e
Kolay PDF SDK Uygulaması:
// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;
class Program
{
static void Main()
{
var pdf = new PDFDocument();
var htmlConverter = new HTMLConverter();
htmlConverter.ConvertHTML("<h1>Hello World</h1>", pdf);
pdf.Save("output.pdf");
pdf.Close();
}
}
// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;
class Program
{
static void Main()
{
var pdf = new PDFDocument();
var htmlConverter = new HTMLConverter();
htmlConverter.ConvertHTML("<h1>Hello World</h1>", pdf);
pdf.Save("output.pdf");
pdf.Close();
}
}
Imports BCL.EasyPDF
Imports System
Class Program
Shared Sub Main()
Dim pdf As New PDFDocument()
Dim htmlConverter As New HTMLConverter()
htmlConverter.ConvertHTML("<h1>Hello World</h1>", pdf)
pdf.Save("output.pdf")
pdf.Close()
End Sub
End Class
IronPDF Uygulaması:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
pdf.SaveAs("output.pdf")
End Sub
End Class
IronPDF, ayrı HTMLConverter sınıfını ve manuel Close() çağrılarını ortadan kaldırır—bu da daha temiz, daha bakımı kolay bir kod ile sonuçlanır.
URL'den PDF'ye Dönüşüm
Kolay PDF SDK Uygulaması:
// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;
class Program
{
static void Main()
{
var pdf = new PDFDocument();
var htmlConverter = new HTMLConverter();
htmlConverter.ConvertURL("https://example.com", pdf);
pdf.Save("webpage.pdf");
pdf.Close();
}
}
// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;
class Program
{
static void Main()
{
var pdf = new PDFDocument();
var htmlConverter = new HTMLConverter();
htmlConverter.ConvertURL("https://example.com", pdf);
pdf.Save("webpage.pdf");
pdf.Close();
}
}
Imports BCL.EasyPDF
Imports System
Module Program
Sub Main()
Dim pdf As New PDFDocument()
Dim htmlConverter As New HTMLConverter()
htmlConverter.ConvertURL("https://example.com", pdf)
pdf.Save("webpage.pdf")
pdf.Close()
End Sub
End Module
IronPDF Uygulaması:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("webpage.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("webpage.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Class
Birden Fazla PDF'yi Birleştirme
Kolay PDF SDK Uygulaması:
// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;
class Program
{
static void Main()
{
var pdf1 = new PDFDocument("document1.pdf");
var pdf2 = new PDFDocument("document2.pdf");
pdf1.Append(pdf2);
pdf1.Save("merged.pdf");
pdf1.Close();
pdf2.Close();
}
}
// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;
class Program
{
static void Main()
{
var pdf1 = new PDFDocument("document1.pdf");
var pdf2 = new PDFDocument("document2.pdf");
pdf1.Append(pdf2);
pdf1.Save("merged.pdf");
pdf1.Close();
pdf2.Close();
}
}
Imports BCL.EasyPDF
Imports System
Module Program
Sub Main()
Dim pdf1 As New PDFDocument("document1.pdf")
Dim pdf2 As New PDFDocument("document2.pdf")
pdf1.Append(pdf2)
pdf1.Save("merged.pdf")
pdf1.Close()
pdf2.Close()
End Sub
End Module
IronPDF Uygulaması:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdfs = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf")
};
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdfs = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf")
};
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
}
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Class Program
Shared Sub Main()
Dim pdfs = New List(Of PdfDocument) From {
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf")
}
Dim merged = PdfDocument.Merge(pdfs)
merged.SaveAs("merged.pdf")
End Sub
End Class
IronPDF'nin statik Merge yöntemi, birden fazla belgeyi doğrudan kabul eder ve manuel Append döngü desenini ortadan kaldırır.
Şifre Koruması
IronPDF Uygulaması:
using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");
// Set security
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
pdf.SaveAs("protected.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");
// Set security
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
pdf.SaveAs("protected.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>")
' Set security
pdf.SecuritySettings.UserPassword = "user123"
pdf.SecuritySettings.OwnerPassword = "owner456"
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit
pdf.SaveAs("protected.pdf")
Üstbilgiler ve Altbilgiler
Kolay PDF SDK, yerel üstbilgi/altbilgi desteğine sahip değil—üstbilgi ve altbilgiler kaynak HTML'e dahil edilmelidir.IronPDFözel işlevsellik sağlar:
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:12px; font-family:Arial;'>
Company Name - Confidential
</div>",
DrawDividerLine = true,
MaxHeight = 30
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:10px;'>
Page {page} of {total-pages}
</div>",
DrawDividerLine = true,
MaxHeight = 25
};
var pdf = renderer.RenderHtmlAsPdf("<h1>Content</h1>");
pdf.SaveAs("with_headers.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:12px; font-family:Arial;'>
Company Name - Confidential
</div>",
DrawDividerLine = true,
MaxHeight = 30
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:10px;'>
Page {page} of {total-pages}
</div>",
DrawDividerLine = true,
MaxHeight = 25
};
var pdf = renderer.RenderHtmlAsPdf("<h1>Content</h1>");
pdf.SaveAs("with_headers.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
.HtmlFragment = "
<div style='text-align:center; font-size:12px; font-family:Arial;'>
Company Name - Confidential
</div>",
.DrawDividerLine = True,
.MaxHeight = 30
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.HtmlFragment = "
<div style='text-align:center; font-size:10px;'>
Page {page} of {total-pages}
</div>",
.DrawDividerLine = True,
.MaxHeight = 25
}
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Content</h1>")
pdf.SaveAs("with_headers.pdf")
Daha fazla seçenek için bkz. başlıklar ve altbilgiler belgeleri.
Asenkron PDF Oluşturma
Kolay PDF SDK geri arama tabanlı async desenlerini kullanır. IronPDF, yerel async/await'i destekler:
Kolay PDF SDK Uygulaması:
using BCL.easyPDF;
Printer printer = new Printer();
// BCL uses callback-based async
printer.BeginPrintToFile(
"https://example.com",
"output.pdf",
OnPrintComplete,
OnPrintError
);
Console.ReadLine();
printer.Dispose();
using BCL.easyPDF;
Printer printer = new Printer();
// BCL uses callback-based async
printer.BeginPrintToFile(
"https://example.com",
"output.pdf",
OnPrintComplete,
OnPrintError
);
Console.ReadLine();
printer.Dispose();
Imports BCL.easyPDF
Dim printer As New Printer()
' BCL uses callback-based async
printer.BeginPrintToFile( _
"https://example.com", _
"output.pdf", _
AddressOf OnPrintComplete, _
AddressOf OnPrintError _
)
Console.ReadLine()
printer.Dispose()
IronPDF Uygulaması:
using IronPdf;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var renderer = new ChromePdfRenderer();
// Native async/await
var pdf = await renderer.RenderUrlAsPdfAsync("https://example.com");
await pdf.SaveAsAsync("output.pdf");
Console.WriteLine("PDF created: output.pdf");
}
}
using IronPdf;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var renderer = new ChromePdfRenderer();
// Native async/await
var pdf = await renderer.RenderUrlAsPdfAsync("https://example.com");
await pdf.SaveAsAsync("output.pdf");
Console.WriteLine("PDF created: output.pdf");
}
}
Imports IronPdf
Imports System.Threading.Tasks
Class Program
Shared Async Function Main() As Task
Dim renderer = New ChromePdfRenderer()
' Native async/await
Dim pdf = Await renderer.RenderUrlAsPdfAsync("https://example.com")
Await pdf.SaveAsAsync("output.pdf")
Console.WriteLine("PDF created: output.pdf")
End Function
End Class
Kritik Geçiş Notları
Sayfa İndeks Değişikliği
Kolay PDF SDK 1 tabanlı indekslemeyi kullanır.IronPDF0 tabanlı indeksleme kullanır:
// Easy PDF SDK: 1-based
doc.ExtractPages(1, 5);
// IronPDF: 0-based
pdf.CopyPages(0, 4);
// Easy PDF SDK: 1-based
doc.ExtractPages(1, 5);
// IronPDF: 0-based
pdf.CopyPages(0, 4);
' Easy PDF SDK: 1-based
doc.ExtractPages(1, 5)
' IronPDF: 0-based
pdf.CopyPages(0, 4)
Milisaniye Cinsinden Zaman Aşımı
Kolay PDF SDK zaman aşımı değerleri için saniyeleri kullanır.IronPDFmilisaniyeleri kullanır:
// Easy PDF SDK: seconds
config.TimeOut = 120;
// IronPDF: milliseconds
renderer.RenderingOptions.Timeout = 120000;
// Easy PDF SDK: seconds
config.TimeOut = 120;
// IronPDF: milliseconds
renderer.RenderingOptions.Timeout = 120000;
' Easy PDF SDK: seconds
config.TimeOut = 120
' IronPDF: milliseconds
renderer.RenderingOptions.Timeout = 120000
ASP.NET Core Entegrasyonu
Kolay PDF SDK, etkileşimli oturum gereksinimleri nedeniyle web bağlamlarında zorlanır.
IronPDF Deseni:
[ApiController]
[Route("[controller]")]
public class PdfController : ControllerBase
{
[HttpGet("generate")]
public IActionResult GeneratePdf()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>");
return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
[HttpGet("generate-async")]
public async Task<IActionResult> GeneratePdfAsync()
{
var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>");
return File(pdf.Stream, "application/pdf", "report.pdf");
}
}
[ApiController]
[Route("[controller]")]
public class PdfController : ControllerBase
{
[HttpGet("generate")]
public IActionResult GeneratePdf()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>");
return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
[HttpGet("generate-async")]
public async Task<IActionResult> GeneratePdfAsync()
{
var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>");
return File(pdf.Stream, "application/pdf", "report.pdf");
}
}
Imports Microsoft.AspNetCore.Mvc
<ApiController>
<Route("[controller]")>
Public Class PdfController
Inherits ControllerBase
<HttpGet("generate")>
Public Function GeneratePdf() As IActionResult
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>")
Return File(pdf.BinaryData, "application/pdf", "report.pdf")
End Function
<HttpGet("generate-async")>
Public Async Function GeneratePdfAsync() As Task(Of IActionResult)
Dim renderer = New ChromePdfRenderer()
Dim pdf = Await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>")
Return File(pdf.Stream, "application/pdf", "report.pdf")
End Function
End Class
Docker Dağıtımı
Kolay PDF SDK Docker konteynerlerinde çalışamaz—Windows konteynerleri, Microsoft Office, sanal yazıcı sürücüleri ve etkileşimli masaüstü oturumları gerektirir. Bu, konteynerleşme ile temel olarak uyumsuzdur.
IronPDF Docker Yapılandırması:
FROM mcr.microsoft.com/dotnet/aspnet:8.0
# Install Chromium dependencies
RUN apt-get update && apt-get install -y \
libc6 libgdiplus libx11-6 libxcomposite1 \
libxdamage1 libxrandr2 libxss1 libxtst6 \
libnss3 libatk-bridge2.0-0 libgtk-3-0 \
libgbm1 libasound2 fonts-liberation \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "MyApp.dll"]
Genel Göç Sorunlarını Giderme
Sorun: Yazıcı Bulunmuyor
Belirti: Cannot find printer: BCL easyPDF Printer
Çözüm: IronPDF, yazıcı sürücülerine ihtiyaç duymaz:
// Just use the renderer directly
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
// Just use the renderer directly
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
Sorun: COM Interop Hataları
Belirti: DLL error loading veya RCW hataları
Çözüm: Tüm COM referanslarını kaldırın ve IronPDF'nin yönetilen API'sini kullanın.
Sorun: Sunucuda Zaman Aşımı
Sebep: PDF oluşturma web sunucusunda takılıyor
Çözüm: IronPDF'yi başsız modda çalıştırın, etkileşimli oturumlar olmadan:
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.Timeout = 60000; // Reliable timeout
var pdf = renderer.RenderHtmlAsPdf(html);
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.Timeout = 60000; // Reliable timeout
var pdf = renderer.RenderHtmlAsPdf(html);
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.Timeout = 60000 ' Reliable timeout
Dim pdf = renderer.RenderHtmlAsPdf(html)
Sorun: Arka Plan Yazdırmıyor
Sebep: CSS arka planları eksik
Çözüm: Arka plan yazdırmayı etkinleştirin:
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.PrintHtmlBackgrounds = True
Göç Sonrası Kontrol Listesi
Kod göçünü tamamladıktan sonra, aşağıdakileri doğrulayın:
- IronPDF'nin Chromium motoru ile PDF çıktı kalitesini doğrulayın
- Karmaşık HTML/CSS ile tüm kenar durumları test edin
- Sunucu dağıtımının etkileşimli oturumlar olmadan çalıştığını doğrulayın
- Docker/konteyner dağıtımını test edin
- Dağıtım paketinden BCL EasyPDF yükleyicisini kaldırın
- Artık gerekli olmayan Office kurulumunu sunuculardan kaldırın
- Yeni NuGet paketiyle CI/CD hatlarını güncelleyin
PDF Altyapınızı Geleceğe Hazırlama
.NET 10 ufukta ve C# 14 yeni dil özellikleriyle tanıştırılırken, platformlar arası bir PDF kütüphanesi seçmek, evrim geçiren dağıtım modelleriyle uyumluluğu sağlar. IronPDF'nin Linux, Docker ve bulut tabanlı mimariler için desteği, projeler 2025 ve 2026'ya kadar uzandıkça yatırımınızın karşılığını almanızı sağlar—Easy PDF SDK'nın yalnızca Windows ile sınırlı kısıtlamaları olmadan.
Ek Kaynaklar
Kolay PDF SDK'dan IronPDF'ye geçmek, sanal yazıcı bağımlılıklarını, COM birlikte çalışma sorunlarını ve yalnızca Windows ile sınırlı kısıtlamaları ortadan kaldırır. Chromium tabanlı renderinge geçiş, CSS3 ve JavaScript desteğini geliştirirken Docker, Kubernetes ve bulut ortamlarına dağıtımı mümkün kılar ki bunlar daha önce Easy PDF SDK'nın eski mimarisiyle imkansızdı.

