Migrieren von DynamicPDF zu IronPDF in C#
Warum von DynamicPDF zu IronPDF migrieren?
Die Produktfragmentierung von DynamicPDF ist der Hauptgrund für die Migration. Das Verständnis des Lizenzierungsmodells ist wichtig, um die tatsächlichen Kosten Ihrer aktuellen Implementierung zu ermitteln.
Das Problem der Produktfragmentierung
DynamicPDF wird als separate Produkte mit separaten Lizenzen verkauft:
- DynamicPDF Generator: PDFs von Grund auf neu erstellen
- DynamicPDF Merger: Vorhandene PDFs zusammenführen, aufteilen und bearbeiten (separater Kauf)
- DynamicPDF Core Suite: Kombinierter Generator und Zusammenführer
- DynamicPDF ReportWriter: Berichtserstellung
- DynamicPDF HTML Converter: HTML-zu-PDF-Konvertierung (separates Add-on)
- DynamicPDF Print Manager: PDFs programmgesteuert drucken
Eine vollständige PDF-Lösung erfordert 3-5 separate Lizenzen mit DynamicPDF.IronPDF enthält alles in einem Paket.
Architektur-Vergleich
| Aspekt | DynamicPDF | IronPDF |
|---|---|---|
| Produktmodell | Fragmentiert (5+ Produkte) | All-in-One-Bibliothek |
| Lizenzierung | Mehrere Lizenzen erforderlich | Einzellizenz |
| HTML zu PDF | Separater Kauf eines Add-ons | Eingebaut, Chromium-basiert |
| CSS-Unterstützung | Eingeschränkt (erfordert Add-on) | Vollständiges CSS3 mit Flexbox/Grid |
| API-Stil | Koordinatenbasierte Positionierung | HTML/CSS + Manipulation API |
| Lernkurve | Steep (mehrere APIs) | Sanft (Webtechnologien) |
| Modernes .NET | .NET Standard 2.0 | .NET 6/7/8/9+ nativ |
Wichtige Vorteile der Migration
- Einzelpaket: Ein NuGet Paket ersetzt 3-5 DynamicPDF-Pakete
- Modernes Rendering: Chromium-Engine versus älteres Rendering
- Webtechnologien: Verwenden Sie HTML/CSS anstelle von koordinatenbasierter Positionierung.
- Einfachere API: Weniger Code, bessere Lesbarkeit, leichtere Wartung
- Keine Zusatzkäufe: HTML, Zusammenführung, Sicherheit – alles inklusive
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)
Nutzung von DynamicPDF prüfen
Führen Sie diese Befehle in Ihrem Lösungsverzeichnis aus, um alle DynamicPDF-Referenzen zu identifizieren:
# Find all DynamicPDF references
grep -r "ceTe.DynamicPDF\|DynamicPDF" --include="*.cs" --include="*.csproj" .
# Check NuGet packages
dotnet list package | grep -i dynamic
# Find all DynamicPDF references
grep -r "ceTe.DynamicPDF\|DynamicPDF" --include="*.cs" --include="*.csproj" .
# Check NuGet packages
dotnet list package | grep -i dynamic
Übliche Pakete, nach denen Sie suchen sollten:
ceTe.DynamicPDF.CoreSuite.NETceTe.DynamicPDF.Generator.NETceTe.DynamicPDF.Merger.NETceTe.DynamicPDF.HtmlConverter.NET
Verständnis des Paradigmenwechsels
Die wichtigste Änderung bei der Migration von DynamicPDF zu IronPDF ist der grundlegende Ansatz zur Dokumentenerstellung. DynamicPDF verwendet eine koordinatenbasierte Positionierung, bei der Sie Elemente an bestimmten X,Y-Koordinaten auf einer Seite platzieren.IronPDF verwendet HTML/CSS-Rendering, bei dem Sie mit Webtechnologien entwerfen.
Dieser Shift bedeutet, dass die Elemente Label, TextArea und Table2 in ihre HTML-Äquivalente umgewandelt werden – eine Änderung, die in der Regel zu besser lesbarem und wartbarem Code führt.
Schritt-für-Schritt-Migrationsprozess
Schritt 1: NuGet-Pakete aktualisieren
Entfernen Sie alle DynamicPDF-Pakete und installieren Sie IronPDF:
# Remove DynamicPDF packages
dotnet remove package ceTe.DynamicPDF.CoreSuite.NET
dotnet remove package ceTe.DynamicPDF.Generator.NET
dotnet remove package ceTe.DynamicPDF.Merger.NET
dotnet remove package ceTe.DynamicPDF.HtmlConverter.NET
# Install IronPDF
dotnet add package IronPdf
# Remove DynamicPDF packages
dotnet remove package ceTe.DynamicPDF.CoreSuite.NET
dotnet remove package ceTe.DynamicPDF.Generator.NET
dotnet remove package ceTe.DynamicPDF.Merger.NET
dotnet remove package ceTe.DynamicPDF.HtmlConverter.NET
# Install IronPDF
dotnet add package IronPdf
Schritt 2: Namensraumreferenzen aktualisieren
Ersetzen Sie die DynamicPDF-Namensräume durch IronPDF:
// Remove these
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;
using ceTe.DynamicPDF.Conversion;
// Add this
using IronPdf;
// Remove these
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;
using ceTe.DynamicPDF.Conversion;
// Add this
using IronPdf;
Imports IronPdf
Schritt 3: Lizenz konfigurieren
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Komplette API-Migrationsreferenz
Kernklassen-Zuordnung
| DynamicPDF-Klasse | IronPDF-Äquivalent |
|---|---|
Document |
ChromePdfRenderer |
Document |
PdfDocument |
Page |
HTML <div> mit Seitenumbruch |
MergeDocument |
PdfDocument.Merge() |
HtmlConverter |
ChromePdfRenderer |
Seitenelemente zu HTML-Zuordnung
| DynamicPDFPageElement | IronPDF/HTML-Äquivalent |
|---|---|
Label |
<p>, <span>, <div> |
TextArea |
<div>, <p> mit CSS |
Image |
<img> Tag |
Table2 |
HTML <table> |
PageNumberingLabel |
{page} / {total-pages} Platzhalter |
Schlüssel-API-Zuordnungen
| DynamicPDF | IronPDF |
|---|---|
Document + Page |
ChromePdfRenderer |
Label, TextArea |
HTML <p>, <div> |
Table2 |
HTML <table> |
MergeDocument |
PdfDocument.Merge() |
HtmlConverter |
ChromePdfRenderer |
document.Draw() |
pdf.SaveAs() / pdf.BinaryData |
PageNumberingLabel %%CP%% |
{page} Platzhalter |
Beispiele für die Code-Migration
HTML-zu-PDF-Konvertierung
Die HTML-zu-PDF-Konvertierung verdeutlicht, dass DynamicPDF ein separates HtmlConverter-Add-on benötigt, im Gegensatz zum integrierten Chromium-Rendering von IronPDF.
DynamicPDF-Einführung:
// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Conversion;
class Program
{
static void Main()
{
string html = "<html><body><h1>Hello World</h1></body></html>";
HtmlConverter converter = new HtmlConverter(html);
converter.Convert("output.pdf");
}
}
// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Conversion;
class Program
{
static void Main()
{
string html = "<html><body><h1>Hello World</h1></body></html>";
HtmlConverter converter = new HtmlConverter(html);
converter.Convert("output.pdf");
}
}
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.Conversion
Class Program
Shared Sub Main()
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim converter As New HtmlConverter(html)
converter.Convert("output.pdf")
End Sub
End Class
IronPDF-Implementierung:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
string html = "<html><body><h1>Hello World</h1></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
string html = "<html><body><h1>Hello World</h1></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
IronPDF s ChromePdfRenderer bietet Chromium-basiertes Rendering mit voller CSS3-Unterstützung – kein separater Add-on-Kauf erforderlich. Weitere Optionen finden Sie in der HTML zu PDF Dokumentation.
Mehrere PDFs zusammenführen
Das Zusammenführen von PDFs verdeutlicht den Unterschied zwischen der Klasse MergeDocument von DynamicPDF(die die Merger-Produktlizenz erfordert) und der in IronPDF integrierten statischen Methode Merge.
DynamicPDF-Einführung:
// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Merger;
class Program
{
static void Main()
{
MergeDocument document = new MergeDocument("document1.pdf");
document.Append("document2.pdf");
document.Draw("merged.pdf");
}
}
// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Merger;
class Program
{
static void Main()
{
MergeDocument document = new MergeDocument("document1.pdf");
document.Append("document2.pdf");
document.Draw("merged.pdf");
}
}
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.Merger
Class Program
Shared Sub Main()
Dim document As New MergeDocument("document1.pdf")
document.Append("document2.pdf")
document.Draw("merged.pdf")
End Sub
End Class
IronPDF-Implementierung:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
End Sub
End Class
Die statische Methode Merge von IronPDF akzeptiert mehrere PdfDocument Objekte direkt. Weitere Optionen finden Sie in der Dokumentation zum Zusammenführen von PDFs .
Text in PDFs einfügen
Die Textplatzierung verdeutlicht den Shift von den koordinatenbasierten Label-Elementen von DynamicPDF zu den HTML-basierten TextStamper-Elementen von IronPDF.
DynamicPDF-Einführung:
// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
class Program
{
static void Main()
{
Document document = new Document();
Page page = new Page(PageSize.Letter);
Label label = new Label("Hello from DynamicPDF!", 0, 0, 504, 100);
page.Elements.Add(label);
document.Pages.Add(page);
document.Draw("output.pdf");
}
}
// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
class Program
{
static void Main()
{
Document document = new Document();
Page page = new Page(PageSize.Letter);
Label label = new Label("Hello from DynamicPDF!", 0, 0, 504, 100);
page.Elements.Add(label);
document.Pages.Add(page);
document.Draw("output.pdf");
}
}
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.PageElements
Class Program
Shared Sub Main()
Dim document As New Document()
Dim page As New Page(PageSize.Letter)
Dim label As New Label("Hello from DynamicPDF!", 0, 0, 504, 100)
page.Elements.Add(label)
document.Pages.Add(page)
document.Draw("output.pdf")
End Sub
End Class
IronPDF-Implementierung:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>");
var textStamper = new TextStamper()
{
Text = "Hello from IronPDF!",
FontSize = 20,
VerticalAlignment = VerticalAlignment.Top
};
pdf.ApplyStamp(textStamper);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>");
var textStamper = new TextStamper()
{
Text = "Hello from IronPDF!",
FontSize = 20,
VerticalAlignment = VerticalAlignment.Top
};
pdf.ApplyStamp(textStamper);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports IronPdf.Editing
Class Program
Shared Sub Main()
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>")
Dim textStamper As New TextStamper() With {
.Text = "Hello from IronPDF!",
.FontSize = 20,
.VerticalAlignment = VerticalAlignment.Top
}
pdf.ApplyStamp(textStamper)
pdf.SaveAs("output.pdf")
End Sub
End Class
IronPDF s TextStamper bietet eine ausrichtungsbasierte Positionierung anstelle einer koordinatenbasierten Platzierung, wodurch Layouts besser an unterschiedliche Seitengrößen angepasst werden können. Weitere Optionen finden Sie in der Dokumentation zu Wasserzeichen und Stempelungen.
Beispiel für eine vollständige Dokumentenerstellung
Dieses umfassende Beispiel zeigt die Konvertierung eines DynamicPDF-Dokuments mit mehreren Elementen in den HTML-Ansatz von IronPDF.
DynamicPDF-Einführung:
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;
// Generation (requires Generator license)
Document document = new Document();
Page page = new Page(PageSize.A4);
Label title = new Label("Invoice Report", 0, 0, 595, 30, Font.HelveticaBold, 18);
title.Align = TextAlign.Center;
page.Elements.Add(title);
Table2 table = new Table2(40, 60, 515, 500);
// ... complex table setup with columns, rows, cells...
page.Elements.Add(table);
document.Pages.Add(page);
document.Draw("invoice.pdf");
// Merging (requires Merger license)
MergeDocument mergeDoc = new MergeDocument("cover.pdf");
mergeDoc.Append("invoice.pdf");
mergeDoc.Draw("final.pdf");
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;
// Generation (requires Generator license)
Document document = new Document();
Page page = new Page(PageSize.A4);
Label title = new Label("Invoice Report", 0, 0, 595, 30, Font.HelveticaBold, 18);
title.Align = TextAlign.Center;
page.Elements.Add(title);
Table2 table = new Table2(40, 60, 515, 500);
// ... complex table setup with columns, rows, cells...
page.Elements.Add(table);
document.Pages.Add(page);
document.Draw("invoice.pdf");
// Merging (requires Merger license)
MergeDocument mergeDoc = new MergeDocument("cover.pdf");
mergeDoc.Append("invoice.pdf");
mergeDoc.Draw("final.pdf");
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.PageElements
Imports ceTe.DynamicPDF.Merger
' Generation (requires Generator license)
Dim document As New Document()
Dim page As New Page(PageSize.A4)
Dim title As New Label("Invoice Report", 0, 0, 595, 30, Font.HelveticaBold, 18)
title.Align = TextAlign.Center
page.Elements.Add(title)
Dim table As New Table2(40, 60, 515, 500)
' ... complex table setup with columns, rows, cells...
page.Elements.Add(table)
document.Pages.Add(page)
document.Draw("invoice.pdf")
' Merging (requires Merger license)
Dim mergeDoc As New MergeDocument("cover.pdf")
mergeDoc.Append("invoice.pdf")
mergeDoc.Draw("final.pdf")
IronPDF-Implementierung:
using IronPdf;
var renderer = new ChromePdfRenderer();
// All features in one library
var html = @"
<html>
<head>
<style>
body { font-family: Helvetica, sans-serif; padding: 40px; }
h1 { text-align: center; font-size: 18pt; }
table { width: 100%; border-collapse: collapse; margin-top: 20px; }
th, td { border: 1px solid #ccc; padding: 8px; }
</style>
</head>
<body>
<h1>Invoice Report</h1>
<table>
<tr><th>Product</th><th>Qty</th><th>Price</th></tr>
<tr><td>Widget</td><td>10</td><td>$99.99</td></tr>
</table>
</body>
</html>";
var invoice = renderer.RenderHtmlAsPdf(html);
// Merging included - no separate license
var cover = PdfDocument.FromFile("cover.pdf");
var final = PdfDocument.Merge(cover, invoice);
final.SaveAs("final.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// All features in one library
var html = @"
<html>
<head>
<style>
body { font-family: Helvetica, sans-serif; padding: 40px; }
h1 { text-align: center; font-size: 18pt; }
table { width: 100%; border-collapse: collapse; margin-top: 20px; }
th, td { border: 1px solid #ccc; padding: 8px; }
</style>
</head>
<body>
<h1>Invoice Report</h1>
<table>
<tr><th>Product</th><th>Qty</th><th>Price</th></tr>
<tr><td>Widget</td><td>10</td><td>$99.99</td></tr>
</table>
</body>
</html>";
var invoice = renderer.RenderHtmlAsPdf(html);
// Merging included - no separate license
var cover = PdfDocument.FromFile("cover.pdf");
var final = PdfDocument.Merge(cover, invoice);
final.SaveAs("final.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' All features in one library
Dim html As String = "
<html>
<head>
<style>
body { font-family: Helvetica, sans-serif; padding: 40px; }
h1 { text-align: center; font-size: 18pt; }
table { width: 100%; border-collapse: collapse; margin-top: 20px; }
th, td { border: 1px solid #ccc; padding: 8px; }
</style>
</head>
<body>
<h1>Invoice Report</h1>
<table>
<tr><th>Product</th><th>Qty</th><th>Price</th></tr>
<tr><td>Widget</td><td>10</td><td>$99.99</td></tr>
</table>
</body>
</html>"
Dim invoice As PdfDocument = renderer.RenderHtmlAsPdf(html)
' Merging included - no separate license
Dim cover As PdfDocument = PdfDocument.FromFile("cover.pdf")
Dim final As PdfDocument = PdfDocument.Merge(cover, invoice)
final.SaveAs("final.pdf")
Kritische Hinweise zur Migration
Koordinatenbasiert zu HTML/CSS-Positionierung
Der grundlegende Paradigmenwechsel erfordert die Konvertierung der X,Y-Koordinatenpositionierung in CSS-basierte Layouts:
// DynamicPDF- coordinate-based
var label = new Label("Hello World", 100, 200, 300, 50);
//IronPDF- CSS positioning (if absolute positioning needed)
var html = "<div style='position:absolute; left:100px; top:200px; width:300px;'>Hello World</div>";
//IronPDF- preferred approach (flow-based)
var html = "<div style='margin-left:100px; margin-top:200px;'>Hello World</div>";
// DynamicPDF- coordinate-based
var label = new Label("Hello World", 100, 200, 300, 50);
//IronPDF- CSS positioning (if absolute positioning needed)
var html = "<div style='position:absolute; left:100px; top:200px; width:300px;'>Hello World</div>";
//IronPDF- preferred approach (flow-based)
var html = "<div style='margin-left:100px; margin-top:200px;'>Hello World</div>";
' DynamicPDF- coordinate-based
Dim label = New Label("Hello World", 100, 200, 300, 50)
' IronPDF- CSS positioning (if absolute positioning needed)
Dim html As String = "<div style='position:absolute; left:100px; top:200px; width:300px;'>Hello World</div>"
' IronPDF- preferred approach (flow-based)
html = "<div style='margin-left:100px; margin-top:200px;'>Hello World</div>"
Syntax der Seitennummerierung
DynamicPDF und IronPDF verwenden eine andere Platzhalter-Syntax für Seitenzahlen:
// DynamicPDF placeholders
"Page %%CP%% of %%TP%%"
//IronPDF placeholders
"Page {page} of {total-pages}"
// DynamicPDF placeholders
"Page %%CP%% of %%TP%%"
//IronPDF placeholders
"Page {page} of {total-pages}"
' DynamicPDF placeholders
"Page %%CP%% of %%TP%%"
' IronPDF placeholders
"Page {page} of {total-pages}"
Kopf- und Fußzeilen
DynamicPDF Template-Elemente in IronPDFHtmlHeaderFooter konvertieren:
//IronPDF header/footer
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>",
MaxHeight = 25
};
//IronPDF header/footer
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>",
MaxHeight = 25
};
'IronPDF header/footer
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
.HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>",
.MaxHeight = 25
}
Weitere Optionen für Kopf- und Fußzeilen finden Sie in der Kopf- und Fußzeilen-Dokumentation.
Sicherheitseinstellungen
//IronPDF security
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.UserPassword = "userPassword";
//IronPDF security
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.UserPassword = "userPassword";
'IronPDF security
pdf.SecuritySettings.OwnerPassword = "ownerPassword"
pdf.SecuritySettings.UserPassword = "userPassword"
Ausführliche Informationen zu den Sicherheitsoptionen finden Sie in der Dokumentation zur Verschlüsselung .
Post-Migrations-Checkliste
Überprüfen Sie nach Abschluss der Codemigration Folgendes:
- Visueller Vergleich der generierten PDFs
- Überprüfen Sie die Textpositionierung und das Layout.
- Testen der Tabellendarstellung und des Überlaufs
- Überprüfen Sie die Kopf- und Fußzeilen auf allen Seiten
- Test der Formularausfüllfunktion
- Sicherheit/Verschlüsselung überprüfen
- Leistungsvergleich
- Nicht verwendete DynamicPDF-Lizenzdateien entfernen
- Dokumentation 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 PDF-Bibliothek, die moderne .NET-Muster berücksichtigt, langfristige Kompatibilität. Die native Unterstützung von IronPDF for .NET 6/7/8/9+ bietet einen klaren Weg nach vorne, wenn Projekte bis ins Jahr 2025 und 2026 reichen - ohne die Komplexität der Verwaltung mehrerer Produktlizenzen oder der Navigation durch fragmentierte APIs.
Zusätzliche Ressourcen
Durch die Migration von DynamicPDF zu IronPDF entfällt die Komplexität der Verwaltung mehrerer Produktlizenzen, während gleichzeitig ein modernes Chromium-basiertes Rendering und volle CSS3-Unterstützung geboten werden. Der Übergang von koordinatenbasierter Positionierung zu HTML/CSS-Design führt in der Regel zu besser wartbarem Code, der vertraute Webtechnologien nutzt.

