Easy PDF SDK'dan IronPDF'e C# ile Nasıl Geçilir
Kolay PDF SDK'nın orijinal yayıncısı olan BCL Technologies, 2020 Mart ayında Apryse (eski adıyla PDFTron) tarafından satın alındı ve ürün, Apryse PDF SDK'nın yanında bir miras SDK olarak konumlandırıldı. SDK, modern geliştirme ortamlarında dağıtım ve bakım zorlukları yaratan birkaç eski teknolojiye dayanır.
YaygınEasy PDF SDKDağıtım Sorunları
GeliştiricilerEasy PDF SDKile çalışırken bu sorunlarla sık sık 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 genellikle Easy PDF SDK'nın, sanal yazıcı sürücülerine, COM interop ve modern sunucu ortamlarında tekrarlanması zor olan etkileşimli Windows oturumlarına dayanan mimarisinden kaynaklanır.
Easy PDF SDKile IronPDF: Temel Farklar
| Özellik | Easy PDF SDK | IronPDF |
|---|---|---|
| Platform | Sadece Windows | Windows, Linux, macOS, Docker |
| Office Bağımlılığı | Gereklidir | None |
| Dağıtım | MSI yükleyici + manuel DLL başvuruları (NuGet paketi yok) | NuGet paketi (IronPdf) |
| Kurulum | MSI + sanal yazıcı sürücüsü + COM kaydı | NuGet paketi |
| Sunucu Desteği | Genellikle etkileşimli bir Windows oturumu gerektirir | Başsız çalışır |
| HTML İşleme | Temel (Office tabanlı) | Tam Chromium (CSS3, JS) |
| .NET Desteği | Sınırlı .NET Core | .NET Framework 4.6.2+ ve .NET 5/6/7/8/9 |
| Async Pattern | Geri çağrı tabanlı | Yerel async/await |
| Kapsayıcı Desteği | Satıcı tarafından desteklenmiyor | Tam Docker/Kubernetes |
Platform Sınırlamaları
Easy PDF SDK Windows'u hedefliyor ve Office belge dönüştürmeleri için Microsoft Office yüklemelerine dayanıyor, bu da kullanımını Linux, macOS ve Docker gibi konteyner tabanlı ortamlarda sınırlıyor. Bu bağımlılık, sunucu kurulumlarını daha karmaşık hale getirme eğilimindedir ve dağıtımı Windows'a bağlar — çok platformlu DevOps uygulayan veya Linux konteynerlerine dayanan ekipler için bir kısıtlamadır.
Migration'a Ön Hazırlık
Ön Koşullar
Ortamınızın bu gereksinimleri karşıladığından emin olun:
- .NET Framework 4.6.2+ or .NET Core 3.1 / .NET 5-9
- Visual Studio 2019+ veya C# eklentisi ile VS Code
- NuGet Package Manager erişimi -IronPDF lisans anahtarı (ücretsiz deneme sürümü ironpdf.com adresinde mevcut)
Easy PDF SDKKullanımını Denetleme
Çözüm dizininde bu komutları çalıştırarak tümEasy PDF SDKreferanslarını belirleyin:
# 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" .
Beklenebilecek Kırıcı Değişiklikler
| Easy PDF SDK Deseni | Değişiklik Gerekli |
|---|---|
new Printer() |
ChromePdfRenderer kullan |
PrintOfficeDocToPDF() |
Ofis dönüşümü farklı şekilde ele alınır |
RenderHTMLToPDF() |
RenderHtmlAsPdf() |
| COM etkileşim referansları | Tamamen kaldır |
| Yazıcı sürücü yapılandırması | Gerekli değil |
BeginPrintToFile() geri aramaları |
Yerel async/await |
| Etkileşimli oturum gereksinimleri | Başsız çalışır |
| 1-tabanlı sayfa dizinleme | 0 tabanlı indeksleme |
| Zaman aşımı saniye cinsindendir | Zaman aşımı milisaniye cinsindendir |
Adım Adım Geçiş Süreci
Adım 1:Easy PDF SDKKaldırma
Easy PDF SDK, bir NuGet paketi yerine bir MSI yükleyicisi olarak dağıtılır ve projeler genellikle doğrudan derlemelerine (örneğin, .NET Framework için BCL.easyPDF.PDFConverter.dll veya .NET Core için BCL.easyPDF.PDFConverter.NetCore.dll) referans verir. Tüm referansları kaldırın:
- Programlar ve Özellikler'den BCL EasyPDF SDK'yı kaldırın
- DLL
<Reference>girişlerini.csprojadresinden kaldırın - COM etkileşim referanslarını kaldırın
- Bulunuyorsa GAC girişlerini temizleyin
Adım 2:IronPDF Yükleme
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
Veya Paket Yöneticisi Konsolu aracılığıyla:
Install-Package IronPdf
3. Adım: Ad Alanı Referanslarını Güncelle
Easy PDF SDK ad alanlarınıIronPDF ile değiştirin:
// Remove these
using BCL.easyPDF;
using BCL.easyPDF.PDFConverter;
using BCL.easyPDF.PDFProcessor;
using BCL.easyPDF.Printer;
// Add these
using IronPdf;
using IronPdf.Rendering;
// Remove these
using BCL.easyPDF;
using BCL.easyPDF.PDFConverter;
using BCL.easyPDF.PDFProcessor;
using BCL.easyPDF.Printer;
// Add these
using IronPdf;
using IronPdf.Rendering;
Imports IronPdf
Imports IronPdf.Rendering
Tam API Geçiş Referansı
Temel Sınıf Eşlemeleri
| Easy 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
| Easy 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
| Easy 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.RemovePages(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
| Easy 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 Göç Örnekleri
HTML Dizgisini PDF'e Dönüştürme
Easy PDF SDK Uygulaması:
// Reference BCL.easyPDF.PDFConverter.dll (or the .NetCore variant)
// installed by the easyPDF SDK MSI — there is no NuGet package.
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();
}
}
// Reference BCL.easyPDF.PDFConverter.dll (or the .NetCore variant)
// installed by the easyPDF SDK MSI — there is no NuGet package.
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()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
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()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
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()
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
pdf.SaveAs("output.pdf")
End Sub
End Class
IronPDF, HTML renderlemesini tek bir renderleyici çağrısına katlar ve Dispose ile temizlemeyi sağlar, ayrı HTMLConverter adımını ve manuel Close() desenini kaldırır.
URL'den PDF'ye Dönüşüm
Easy PDF SDK Uygulaması:
// Reference BCL.easyPDF.PDFConverter.dll (or the .NetCore variant)
// installed by the easyPDF SDK MSI — there is no NuGet package.
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();
}
}
// Reference BCL.easyPDF.PDFConverter.dll (or the .NetCore variant)
// installed by the easyPDF SDK MSI — there is no NuGet package.
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
Class Program
Shared 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 Class
IronPDF Uygulaması:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
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()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("webpage.pdf");
}
}
Imports IronPdf
Imports System
Module Program
Sub Main()
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Module
Birden Fazla PDF'yi Birleştirme
Easy PDF SDK Uygulaması:
// Reference BCL.easyPDF.PDFConverter.dll (or the .NetCore variant)
// installed by the easyPDF SDK MSI — there is no NuGet package.
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();
}
}
// Reference BCL.easyPDF.PDFConverter.dll (or the .NetCore variant)
// installed by the easyPDF SDK MSI — there is no NuGet package.
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()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
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()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
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
Module Program
Sub Main()
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim pdfs As 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 Module
IronPDF'nin statik Merge metodu, çiftli Append desenini değiştirerek doğrudan bir belge koleksiyonu kabul eder.
Şifre Koruma
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")
Başlıklar ve Altbilgiler
Easy PDF SDK, HTML dönüşüm yolunda ayrılmış başlık/altbilgi API'leri sunmaz; başlıklar ve altbilgiler genellikle doğrudan kaynak HTML'e gömülür.IronPDF ayrılmış başlık/altbilgi nesneleri 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 başlıklar ve altbilgiler belgelerine bakın.
Asenkron PDF Oluşturma
Easy PDF SDK geri çağrı tabanlı asenkron desenler kullanır.IronPDF yerel async/await'i destekler:
Easy 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 Taşıma Notları
Sayfa İndeksi Değişikliği
Easy PDF SDK 1 tabanlı indekslemeyi kullanır.IronPDF 0-tabanlı dizinleme 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)
Milisaniyelerde Zaman Aşımı
Easy PDF SDK, zaman aşımı değerleri için saniyeleri kullanır.IronPDF milisaniyeleri 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 Integration
Easy PDF SDK, etkileşimli oturum gereksinimleri nedeniyle web bağlamında zorluk yaşar.
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.BinaryData, "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.BinaryData, "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.BinaryData, "application/pdf", "report.pdf")
End Function
End Class
Docker Dağıtımı
Easy PDF SDK, Linux konteynerleri için tasarlanmamıştır — desteklenen yapılandırması Windows, Microsoft Office, bir sanal yazıcı sürücüsü ve (çoğu kurulumda) bir etkileşimli masaüstü oturumuyla sınırlıdır, bu da tipik Linux tabanlı Docker iş akışlarını uygulamayı zorlaştırır.
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"]
Yaygın Göç Sorunlarını Giderme
Sorun: Yazıcı Bulunamadı
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 Etkileşim 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ı
Belirti: PDF oluşturma web sunucusunda takılıp kalır
Çözüm:IronPDF etkileşimli oturumlar olmadan başsız çalışır:
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ırılmıyor
Belirti: CSS arka planları eksik
Çözüm: Arka plan yazdırmayı etkinleştirin:
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.PrintHtmlBackgrounds = True
Taşınma Sonrası Kontrollistesi
Kod taşımasını tamamladıktan sonra, aşağıdakileri doğrulayın:
- IronPDF'nin Krom motoruyla PDF çıktısının kalitesini doğrulayın
- Karmaşık HTML/CSS ile tüm uç vakaları test edin
- Etkileşimli oturumlar olmadan sunucu dağıtımının çalıştığını doğrulayın
- Docker/kapsayıcı dağıtımını test edin
- Dağıtımdan BCL EasyPDF yükleyicisini kaldırın
- Sunuculardan Ofis kurulumunu kaldırın (artık gerekli değil)
- Yeni NuGet paketi ile CI/CD hatlarını güncelleyin
Ek Kaynaklar
Easy PDF SDK'dan IronPDF'ye geçiş, sanal yazıcı sürücüsünü, COM interop ve PDF üretim yolundaki sadece Windows'a sınırlamaları ortadan kaldırır. Chromium tabanlı render, modern CSS3 ve JavaScript desteği sunar ve aynı kod tabanı, easyPDF SDK'nın desteklediği dağıtım modelini hedeflemenin zor olduğu Docker, Kubernetes ve Linux tabanlı bulut ortamlarında çalışır.

