Migrieren von Easy PDF SDK zu IronPDF in C#
Easy PDF SDK basiert auf mehreren Legacy-Technologien, die in modernen Entwicklungsumgebungen erhebliche Probleme bei der Bereitstellung und Wartung verursachen.
Gängige Probleme bei der Bereitstellung von Easy PDF SDK
Entwickler stoßen bei der Arbeit mit Easy PDF SDK häufig auf diese Probleme:
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(interaktive Sitzung erforderlich)Cannot find printer: BCL easyPDF Printer
Diese Fehler rühren von der grundlegenden Architektur von Easy PDF SDK her - sie erfordert virtuelle Druckertreiber, COM-Interop und interaktive Windows-Sitzungen, die in modernen Serverumgebungen einfach nicht vorhanden sind.
Easy PDF SDK vs. IronPDF: Hauptunterschiede
| Feature | Easy PDF SDK | IronPDF |
|---|---|---|
| Plattform | Nur für Windows | Windows, Linux, macOS, Docker |
| Büro-Abhängigkeit | Erforderlich | Keine |
| Installation | Komplexe MSI + Druckertreiber + COM | Einfaches NuGet-Paket |
| Server-Unterstützung | Erfordert eine interaktive Sitzung | Läuft kopflos |
| HTML-Rendering | Basic (bürobasiert) | Vollständiges Chromium (CSS3, JS) |
| .NET-Unterstützung | Eingeschränktes .NET Core | Vollständig .NET 5/6/7/8/9 |
| Async-Muster | Rückrufbasiert | Natives async/await |
| Container-Unterstützung | Kann nicht ausgeführt werden | Vollständig Docker/Kubernetes |
Plattform-Einschränkungen
Die ausschließliche Abhängigkeit von Windows-Systemen, die eine Microsoft Office-Installation für die Konvertierung erfordern, schließt die Unterstützung von Linux, macOS oder containerisierten Umgebungen wie Docker aus. Diese Abhängigkeit macht die Einrichtung von Servern umständlich und beschränkt die Annahme von Diensten auf Windows-Umgebungen - eine erhebliche Einschränkung für Teams, die plattformübergreifende DevOps praktizieren oder Container für die Bereitstellung verwenden.
Vorbereitung auf die Migration
Voraussetzungen
Stellen Sie sicher, dass Ihre Umgebung diese Anforderungen erfüllt:
- .NET Framework 4.6.2+ oder .NET Core 3.1 / .NET 5-9
- Visual Studio 2019+ oder VS Code mit C#-Erweiterung
- NuGet Package Manager Zugang
- IronPDF-Lizenzschlüssel (kostenlose Testversion erhältlich unter ironpdf.com)
Audit Easy PDF SDKVerwendung
Führen Sie diese Befehle in Ihrem Lösungsverzeichnis aus, um alle Easy PDF SDK-Referenzen zu identifizieren:
# 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" .
Bahnbrechende Änderungen, die zu erwarten sind
| Easy PDF SDK-Muster | Änderung erforderlich |
|---|---|
new Printer() |
Verwenden Sie ChromePdfRenderer |
PrintOfficeDocToPDF() |
Office-Konvertierung anders gehandhabt |
RenderHTMLToPDF() |
RenderHtmlAsPdf() |
| COM-Interop-Referenzen | Vollständig entfernen |
| Druckertreiber-Konfiguration | Nicht erforderlich |
BeginPrintToFile() Rückruffunktionen |
Natives async/await |
| Anforderungen für interaktive Sitzungen | Läuft kopflos |
| 1-basierte Seitenindizierung | 0-basierte Indizierung |
| Zeitüberschreitung in Sekunden | Zeitüberschreitung in Millisekunden |
Schritt-für-Schritt-Migrationsprozess
Schritt 1: Easy PDF SDK entfernen
Easy PDF SDK wird in der Regel über ein MSI-Installationsprogramm, manuelle DLL-Referenzen oder eine GAC-Registrierung installiert. Entfernen Sie alle Verweise:
- BCL EasyPDF SDK aus Programme und Funktionen deinstallieren
- Entfernen Sie DLL-Referenzen aus Ihrem Projekt
- COM-Interop-Referenzen entfernen
- GAC-Einträge bereinigen, falls vorhanden
Schritt 2:IronPDF installieren
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
Oder über die Paketmanager-Konsole:
Install-Package IronPdf
Schritt 3: Aktualisieren der Namensraum-Referenzen
Ersetzen Sie die Namensräume von Easy PDF SDK durch IronPDF:
// 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
Komplette API-Migrationsreferenz
Kernklassen-Zuordnung
| Easy PDF SDK-Klasse | IronPDF-Äquivalent |
|---|---|
Printer |
ChromePdfRenderer |
PDFDocument |
PdfDocument |
HTMLConverter |
ChromePdfRenderer |
PrinterConfiguration |
ChromePdfRenderOptions |
PageOrientation |
PdfPaperOrientation |
PageSize |
PdfPaperSize |
SecurityHandler |
PdfDocument.SecuritySettings |
PDF-Erstellungsmethoden
| Easy PDF SDK-Methode | IronPDF-Methode |
|---|---|
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-Bearbeitungsmethoden
| Easy PDF SDK-Methode | IronPDF-Methode |
|---|---|
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() oder using |
doc.ExtractText() |
pdf.ExtractAllText() |
Konfigurationsoptionen
| Easy PDF SDK-Option | IronPDF-Option |
|---|---|
config.TimeOut |
RenderingOptions.Timeout |
config.PageOrientation = Landscape |
RenderingOptions.PaperOrientation = Landscape |
config.PageSize = A4 |
RenderingOptions.PaperSize = PdfPaperSize.A4 |
config.MarginTop/Bottom/Left/Right |
RenderingOptions.MarginTop, etc. |
Beispiele für die Code-Migration
HTML-String in PDF konvertieren
Easy PDF SDK-Implementierung:
// 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-Implementierung:
// 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 eliminiert die separate Klasse HTMLConverter und die manuellen Aufrufe Close() – was zu einem saubereren und besser wartbaren Code führt.
URL zu PDF-Konvertierung
Easy PDF SDK-Implementierung:
// 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-Implementierung:
// 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
Mehrere PDFs zusammenführen
Easy PDF SDK-Implementierung:
// 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-Implementierung:
// 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
Die statische Methode Merge von IronPDF akzeptiert mehrere Dokumente direkt und eliminiert so das manuelle Schleifenmuster Append.
Passwortschutz
IronPDF-Implementierung:
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")
Kopf- und Fußzeilen
Easy PDF SDK bietet keine native Unterstützung für Kopf- und Fußzeilen - Kopf- und Fußzeilen müssen in den HTML-Quelltext eingefügt werden.IronPDF bietet spezielle Funktionen:
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")
Weitere Optionen finden Sie in der Kopf- und Fußzeilen-Dokumentation.
Asynchrone PDF-Erzeugung
Easy PDF SDK verwendet Callback-basierte asynchrone Muster.IronPDF unterstützt natives async/await:
Easy PDF SDK-Implementierung:
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-Implementierung:
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
Kritische Hinweise zur Migration
Seitenindex ändern
Easy PDF SDK verwendet eine 1-basierte Indizierung.IronPDF verwendet eine 0-basierte Indizierung:
// 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)
Timeout in Millisekunden
Easy PDF SDK verwendet Sekunden für Timeout-Werte.IronPDF verwendet Millisekunden:
// 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 hat im Webkontext aufgrund der Anforderungen an interaktive Sitzungen Schwierigkeiten.
IronPDF-Muster:
[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-Bereitstellung
Easy PDF SDK kann nicht in Docker-Containern ausgeführt werden - es benötigt Windows-Container, Microsoft Office, virtuelle Druckertreiber und interaktive Desktop-Sitzungen. Dies ist grundsätzlich unvereinbar mit der Containerisierung.
IronPDF Docker-Konfiguration:
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"]
Fehlerbehebung bei allgemeinen Migrationsproblemen
Ausgabe: Drucker nicht gefunden
Symptom: Cannot find printer: BCL easyPDF Printer
Lösung:IronPDF benötigt keine Druckertreiber:
// 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)
Thema: COM-Interop-Fehler
Symptom: DLL error loading oder RCW Fehler
Lösung: Entfernen Sie alle COM-Referenzen und verwenden Sie die verwaltete API von IronPDF.
Problem: Zeitüberschreitung auf dem Server
Symptom: PDF-Erzeugung bleibt auf dem Webserver hängen
Lösung:IronPDF läuft ohne interaktive Sitzungen:
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)
Problem: Hintergrund wird nicht gedruckt
Symptom: Fehlende CSS-Hintergründe
Lösung: Aktivieren Sie den Hintergrunddruck:
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.PrintHtmlBackgrounds = True
Post-Migrations-Checkliste
Überprüfen Sie nach Abschluss der Codemigration Folgendes:
- Überprüfen Sie die PDF-Ausgabequalität mit der Chromium-Engine von IronPDF.
- Testen Sie alle Grenzfälle mit komplexem HTML/CSS
- Überprüfen, ob die Serverbereitstellung auch ohne interaktive Sitzungen funktioniert
- Test der Docker-/Containerbereitstellung
- Entfernen Sie den BCL EasyPDF-Installer aus der Bereitstellung.
- Office-Installation von den Servern entfernen (wird nicht mehr benötigt)
- CI/CD-Pipelines mit neuem NuGet Paket aktualisieren
Zukunftssicherheit für Ihre PDF-Infrastruktur
Mit .NET 10 am Horizont und C# 14, das neue Sprachfunktionen einführt, gewährleistet die Wahl einer plattformübergreifenden PDF-Bibliothek die Kompatibilität mit sich entwickelnden Bereitstellungsmodellen. Die Unterstützung von IronPDF für Linux, Docker und Cloud-native Architekturen bedeutet, dass sich Ihre Investition in die Migration auszahlt, wenn Sie Ihre Projekte bis ins Jahr 2025 und 2026 ausdehnen - ohne die Beschränkungen des Easy PDF SDK, das nur für Windows verfügbar ist.
Zusätzliche Ressourcen
Durch die Migration von Easy PDF SDK zu IronPDF werden Abhängigkeiten von virtuellen Druckern, COM-Interop-Probleme und Beschränkungen, die nur für Windows gelten, beseitigt. Die Umstellung auf Chromium-basiertes Rendering bietet hervorragende CSS3- und JavaScript-Unterstützung und ermöglicht die Bereitstellung in Docker-, Kubernetes- und Cloud-Umgebungen, was mit der bisherigen Architektur von Easy PDF SDK nicht möglich war.

