Zum Fußzeileninhalt springen
VIDEOS

Wie man UTF-8-Zeichen in PDF-Dateien mit C# einbettet

Der Umstieg von PDF Duo .NET zu IronPDF verlagert Ihren .NET PDF-Workflow von einer Nischenbibliothek mit spärlicher Dokumentation und keinen aktuellen Releases zu einer stabilen, gut dokumentierten und aktiv gewarteten Lösung. Dieser Leitfaden bietet einen schrittweisen Migrationspfad, der die Risiken aufzeigt, auf einem inaktiven Komponenten zu basieren, während der Zugriff auf Funktionen erweitert wird, die von PDF Duo's dokumentierter API nicht abgedeckt werden.

Warum von PDF Duo zu IronPDF migrieren

Das PDF-Duo-Risiko-Problem

PDF Duo .NET (DuoDimension Software) ist eine Nischenkomponente für HTML zu PDF für .NET. Auch wenn es an Teams appelliert haben mag, die nach einer selbst enthaltenen DLL gesucht haben, machen mehrere Merkmale es für aktuelle Produktionsanwendungen ungeeignet:

  1. Verkäufer und Herkunft: Veröffentlicht von DuoDimension Software (duodimension.com), einem kleinen ISV ohne öffentliche Roadmap und ohne GitHub-Repository.

  2. Spärliche Dokumentation: Eine Anbieterproduktseite, ein Dutzend Beispielausschnitte und eine Pressemitteilung von 2010. Keine API-Referenzseite und keine bedeutende Stack Overflow Präsenz.

  3. Praktisch aufgegeben: Letztes öffentliches Release ist v2.4, datiert auf den 10. Dezember 2010 — etwa 15 Jahre ohne neue Version.

  4. Schmal dokumentierte Oberfläche: Die öffentliche API ist im Wesentlichen DuoDimension.HtmlToPdf mit OpenHTML(...) und SavePDF(...). Es gibt keine dokumentierte native API für Wasserzeichen, Verschlüsselung, Signierung, Formularfüllung, Textextraktion oder PDF-Zusammenführung.

  5. Rendering-Engine nicht offenbart: Anbieterinformationen beschreiben eine selbstenthaltene Komponente ohne Office- oder Acrobat-Abhängigkeit, veröffentlichen jedoch nicht, welcher HTML/CSS-Engine verwendet wird. CSS3, modernes JavaScript, Web-Schriftarten und flex/grid-Layout werden nicht beansprucht.

  6. Vor-moderne .NET-Zielsetzung: Dokumentierte Unterstützung ist .NET Framework 1.1 bis 3.5 auf Windows XP / Vista / 7 / 2000 / 2003. Keine dokumentierte Unterstützung für .NET Framework 4.x, .NET Core, .NET 5+, Linux oder Docker.

Vergleich zwischen PDF Duo und IronPDF

Aspekt PDF Duo .NET IronPDF
Letzte Veröffentlichung v2.4 (Dezember 2010) Aktive, regelmäßige Releases
Verteilung DLL-Download von duodimension.com (kein NuGet) NuGet IronPdf
Laufzeitunterstützung .NET Framework 1.1 – 3.5, Windows only .NET FX 4.6.2+, .NET 6/7/8/9/10, Linux, macOS, Docker
Dokumentation Eine Anbieterproduktseite Umfassende Dokumente + API-Referenz
Unterstützung Keine sichtbar Professionelles Support-Team
Gemeinschaft Vernachlässigbar 41M+ NuGet downloads (Iron Software stack)
Rendering Engine nicht offenbart Modernes Chromium
Merkmale Nur HTML-zu-PDF HTML-zu-PDF, zusammenführen, Sicherheit, Signaturen, OCR, Formulare, Wasserzeichen
Lizenzierung Pro Anbieterpreis-Seite Kommerziell, unbefristet oder abonnieren

Für Teams auf modernem .NET bietet IronPDF eine stabile Grundlage mit aktiver Entwicklung und umfassender Dokumentation anstelle einer Komponente, deren letzte veröffentlichte Version v2.4 im Dezember 2010 war.


Bevor Sie beginnen

Voraussetzungen

  1. .NET -Umgebung: .NET Framework 4.6.2+ oder .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet -Zugriff: Möglichkeit zur Installation von NuGet -Paketen
  3. IronPDF -Lizenz: Ihren Lizenzschlüssel erhalten Sie unter IronPDF.

Paket-/Referenzänderungen

PDF Duo .NET wird nicht über NuGet vertrieben. Das Entfernen ist ein manueller Schritt:

# In Visual Studio: References -> remove PDFDuo.dll (and any associated
# PDF Duo files) and delete the vendored binary from your /lib folder.

# Install IronPDF
dotnet add package IronPdf
# In Visual Studio: References -> remove PDFDuo.dll (and any associated
# PDF Duo files) and delete the vendored binary from your /lib folder.

# Install IronPDF
dotnet add package IronPdf
SHELL

Lizenz-Konfiguration

// 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"
$vbLabelText   $csharpLabel

Identifizieren Sie die Verwendung von PDF Duo

# Find all PDF Duo references
grep -r "DuoDimension\|HtmlToPdf\b\|OpenHTML\|SavePDF" --include="*.cs" .
# Find all PDF Duo references
grep -r "DuoDimension\|HtmlToPdf\b\|OpenHTML\|SavePDF" --include="*.cs" .
SHELL

API-Referenz

Das dokumentierte Root-Namespace des Anbieters ist DuoDimension. Die öffentliche Oberfläche ist im Wesentlichen die HtmlToPdf-Klasse mit OpenHTML(...) und SavePDF(...). Die unten gezeigten Sub-Namespaces für IronPDF spiegeln die Struktur von IronPDF wider; PDF Duo .NET dokumentiert keine Sub-Namespaces.

Namensraumänderungen

PDF Duo .NET IronPDF
using DuoDimension; using IronPdf;
(keine dokumentierten Sub-Namespaces) using IronPdf.Rendering;

HTML zu PDF Konvertierung Zuordnungen

PDF Duo .NET IronPDF
new DuoDimension.HtmlToPdf() new ChromePdfRenderer()
conv.OpenHTML(htmlFile); conv.SavePDF(path); renderer.RenderHtmlFileAsPdf(htmlFile).SaveAs(path)
conv.OpenHTML(url); conv.SavePDF(path); renderer.RenderUrlAsPdf(url).SaveAs(path)
(Schreiben Sie den String in eine temporäre .html, dann OpenHTML) renderer.RenderHtmlAsPdf(html).SaveAs(path)

Zuordnungen der Seitenkonfiguration

DuoDimension.HtmlToPdf dokumentiert kein Einstellungsobjekt für Papiergröße, Ausrichtung oder Ränder. Die IronPDF-Spalte unten zeigt die expliziten RenderingOptions-Äquivalente.

PDF Duo .NET IronPDF
(keine dokumentierte Seitengrößenoption) RenderingOptions.PaperSize = PdfPaperSize.A4
(keine dokumentierte Seitengrößenoption) RenderingOptions.PaperSize = PdfPaperSize.Letter
(keine dokumentierte Ausrichtungsoption) RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
(kein dokumentiertes Randobjekt) Einzelne Randeigenschaften

Margins-Zuordnungen

PDF Duo .NET IronPDF
(kein dokumentiertes Randobjekt) Einzelne Eigenschaften
(keine Entsprechung) RenderingOptions.MarginTop
(keine Entsprechung) RenderingOptions.MarginRight
(keine Entsprechung) RenderingOptions.MarginBottom
(keine Entsprechung) RenderingOptions.MarginLeft

Zuordnungen von Dokumentenoperationen

PDF Duo .NET ist nur ein HTML-zu-PDF-Konverter. Die Produktseite des Anbieters dokumentiert keine Lade-, Byte- oder Zusammenführungs-APIs auf DuoDimension.HtmlToPdf. Die unten gezeigten Zeilen zeigen, wofür Teams typischerweise auf benachbarte Bibliotheken zurückgriffen, als sie PDF Duo verwendeten, und den IronPDF-Aufruf, der diese Arbeit konsolidiert.

Bedarf PDF Duo .NET IronPDF
Vorhandene PDF-Datei laden nicht nativ — kombinieren Sie es mit iTextSharp 4.x oder ähnlich PdfDocument.FromFile(path)
PDF speichern conv.SavePDF(path) pdf.SaveAs(path)
Erhalten Sie PDF-Bytes not native pdf.BinaryData
PDFs zusammenführen nicht nativ — kombinieren Sie es mit iTextSharp 4.x oder ähnlich PdfDocument.Merge(pdf1, pdf2)

Neue Funktionen, die in der dokumentierten API von PDF Duo nicht verfügbar sind

Feature IronPDF
Kopf-/Fußzeilen RenderingOptions.HtmlHeader, HtmlFooter
Seitenzahlen {page}, {total-pages} Platzhalter
Wasserzeichen pdf.ApplyWatermark(html)
Passwortschutz pdf.SecuritySettings
Ausfüllen von Formularen pdf.Form.Fields
Digitale Signaturen pdf.SignWithFile()
Textextraktion pdf.ExtractAllText()
PDF zu Bild pdf.RasterizeToImageFiles()

Beispiele für die Code-Migration

Beispiel 1: Konvertierung von HTML in PDF

Vor (PDF Duo):

// PDF Duo .NET is not on NuGet — reference PDFDuo.dll from the vendor download.
using DuoDimension;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        // OpenHTML accepts a file path, URL, or stream; there is no documented
        // "convert HTML string" call, so write the markup to a temp file first.
        var tempHtml = Path.GetTempFileName() + ".html";
        File.WriteAllText(tempHtml, "<h1>Hello World</h1><p>This is a PDF document.</p>");

        var conv = new HtmlToPdf();
        conv.OpenHTML(tempHtml);
        conv.SavePDF("output.pdf");
        Console.WriteLine("PDF created successfully!");
    }
}
// PDF Duo .NET is not on NuGet — reference PDFDuo.dll from the vendor download.
using DuoDimension;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        // OpenHTML accepts a file path, URL, or stream; there is no documented
        // "convert HTML string" call, so write the markup to a temp file first.
        var tempHtml = Path.GetTempFileName() + ".html";
        File.WriteAllText(tempHtml, "<h1>Hello World</h1><p>This is a PDF document.</p>");

        var conv = new HtmlToPdf();
        conv.OpenHTML(tempHtml);
        conv.SavePDF("output.pdf");
        Console.WriteLine("PDF created successfully!");
    }
}
Imports DuoDimension
Imports System
Imports System.IO

Module Program
    Sub Main()
        ' OpenHTML accepts a file path, URL, or stream; there is no documented
        ' "convert HTML string" call, so write the markup to a temp file first.
        Dim tempHtml As String = Path.GetTempFileName() & ".html"
        File.WriteAllText(tempHtml, "<h1>Hello World</h1><p>This is a PDF document.</p>")

        Dim conv As New HtmlToPdf()
        conv.OpenHTML(tempHtml)
        conv.SavePDF("output.pdf")
        Console.WriteLine("PDF created successfully!")
    End Sub
End Module
$vbLabelText   $csharpLabel

Nach (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully!");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>"
        Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
        pdf.SaveAs("output.pdf")
        Console.WriteLine("PDF created successfully!")
    End Sub
End Class
$vbLabelText   $csharpLabel

Der grundlegende Unterschied ist hier das API-Muster. PDF Duo's HtmlToPdf.OpenHTML(...) akzeptiert einen Dateipfad, eine URL oder einen Stream – es dokumentiert keinen "rendere diesen HTML-String"-Aufruf, daher schreiben Teams das Markup zuerst in eine temporäre Datei und rufen dann SavePDF(path) auf, um auf die Festplatte zu schreiben. IronPDF's ChromePdfRenderer.RenderHtmlAsPdf() rendert den String direkt und gibt ein PdfDocument-Objekt zurück, das Sie dann mit SaveAs() speichern.

Dieser objektorientierte Ansatz bietet zusätzliche Flexibilität: Sie können das PDF manipulieren (Wasserzeichen hinzufügen, Dokumente zusammenführen, Sicherheit hinzufügen, Text extrahieren), bevor Sie speichern — nichts davon ist Teil der dokumentierten API von PDF Duo .NET. Weitere Rendering-Optionen finden Sie in der HTML to PDF Dokumentation.

Beispiel 2: Konvertierung von URL in PDF

Vor (PDF Duo):

// PDF Duo .NET is not on NuGet — reference PDFDuo.dll from the vendor download.
using DuoDimension;
using System;

class Program
{
    static void Main()
    {
        var conv = new HtmlToPdf();
        conv.OpenHTML("https://www.example.com");
        conv.SavePDF("webpage.pdf");
        Console.WriteLine("Webpage converted to PDF!");
    }
}
// PDF Duo .NET is not on NuGet — reference PDFDuo.dll from the vendor download.
using DuoDimension;
using System;

class Program
{
    static void Main()
    {
        var conv = new HtmlToPdf();
        conv.OpenHTML("https://www.example.com");
        conv.SavePDF("webpage.pdf");
        Console.WriteLine("Webpage converted to PDF!");
    }
}
Imports DuoDimension
Imports System

Class Program
    Shared Sub Main()
        Dim conv As New HtmlToPdf()
        conv.OpenHTML("https://www.example.com")
        conv.SavePDF("webpage.pdf")
        Console.WriteLine("Webpage converted to PDF!")
    End Sub
End Class
$vbLabelText   $csharpLabel

Nach (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("Webpage converted to PDF!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("Webpage converted to PDF!");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
        pdf.SaveAs("webpage.pdf")
        Console.WriteLine("Webpage converted to PDF!")
    End Sub
End Class
$vbLabelText   $csharpLabel

PDF Duo verwendet die gleiche DuoDimension.HtmlToPdf-Klasse für die URL-Konvertierung, indem die URL an OpenHTML(...) übergeben wird, gefolgt von SavePDF(path). IronPDF verwendet ChromePdfRenderer mit der dedizierten RenderUrlAsPdf(url)-Methode, die ein PdfDocument-Objekt zurückgibt.

Ein wesentlicher Vorteil ist, dass der Chromium-basierte Rendermotor von IronPDF Unterstützung für modernes CSS3 und JavaScript bietet, wohingegen das Verkäufermaterial von PDF Duo nicht offenbart, welcher HTML/CSS-Engine verwendet wird. Erfahren Sie mehr über die URL in PDF Konvertierung.

Beispiel 3: PDF-Zusammenführung

Vor (PDF Duo):

PDF Duo .NET bietet keine native PDF-Zusammenführungs-API an. Die dokumentierte Oberfläche ist nur HTML-zu-PDF, daher haben Teams, die zusammenführen mussten, typischerweise jedes PDF mit PDF Duo gerendert und sie dann mit einer separaten Bibliothek (häufig iTextSharp 4.x in Projekten um 2010) zusammengefügt:

// PDF Duo .NET is not on NuGet — reference PDFDuo.dll from the vendor download.
using DuoDimension;
using System;

class Program
{
    static void Main()
    {
        // Render each source HTML to its own PDF
        var conv = new HtmlToPdf();
        conv.OpenHTML("page1.html");
        conv.SavePDF("document1.pdf");

        conv = new HtmlToPdf();
        conv.OpenHTML("page2.html");
        conv.SavePDF("document2.pdf");

        // Merging into a single PDF requires another library (e.g., iTextSharp).
        Console.WriteLine("PDF Duo has no native merge — combine output with another library.");
    }
}
// PDF Duo .NET is not on NuGet — reference PDFDuo.dll from the vendor download.
using DuoDimension;
using System;

class Program
{
    static void Main()
    {
        // Render each source HTML to its own PDF
        var conv = new HtmlToPdf();
        conv.OpenHTML("page1.html");
        conv.SavePDF("document1.pdf");

        conv = new HtmlToPdf();
        conv.OpenHTML("page2.html");
        conv.SavePDF("document2.pdf");

        // Merging into a single PDF requires another library (e.g., iTextSharp).
        Console.WriteLine("PDF Duo has no native merge — combine output with another library.");
    }
}
Imports DuoDimension
Imports System

Module Program
    Sub Main()
        ' Render each source HTML to its own PDF
        Dim conv As New HtmlToPdf()
        conv.OpenHTML("page1.html")
        conv.SavePDF("document1.pdf")

        conv = New HtmlToPdf()
        conv.OpenHTML("page2.html")
        conv.SavePDF("document2.pdf")

        ' Merging into a single PDF requires another library (e.g., iTextSharp).
        Console.WriteLine("PDF Duo has no native merge — combine output with another library.")
    End Sub
End Module
$vbLabelText   $csharpLabel

Nach (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

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");
        Console.WriteLine("PDFs merged successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

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");
        Console.WriteLine("PDFs merged successfully!");
    }
}
Imports IronPdf
Imports System

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")
        Console.WriteLine("PDFs merged successfully!")
    End Sub
End Class
$vbLabelText   $csharpLabel

Dieses Beispiel zeigt einen grundlegenden architektonischen Unterschied. PDF Duo .NET hat keine Zusammenführungs-API — das Zusammenführen in PDF-Duo-Workflows bedeutete historisch, es mit einer zweiten Bibliothek wie iTextSharp 4.x zu kombinieren.

IronPDF konsolidiert dies in einer einzigen Abhängigkeit: Laden Sie jedes PDF als PdfDocument mit PdfDocument.FromFile(), dann verwenden Sie die statische PdfDocument.Merge()-Methode, um sie zu kombinieren. Dies gibt ein neues PdfDocument-Objekt zurück, das Sie separat mit SaveAs() speichern.

Der IronPDF-Ansatz erlaubt es auch, eines der PDFs vor dem Zusammenführen zu manipulieren, Wasserzeichen zum kombinierten Ergebnis hinzuzufügen, Sicherheitseinstellungen anzuwenden und mehr. Um viele Dateien zusammenzuführen, können Sie LINQ verwenden:

var paths = new[] { "document1.pdf", "document2.pdf", "document3.pdf" };
var pdfs = paths.Select(PdfDocument.FromFile).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
var paths = new[] { "document1.pdf", "document2.pdf", "document3.pdf" };
var pdfs = paths.Select(PdfDocument.FromFile).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
Dim paths = {"document1.pdf", "document2.pdf", "document3.pdf"}
Dim pdfs = paths.Select(AddressOf PdfDocument.FromFile).ToList()
Dim merged = PdfDocument.Merge(pdfs)
merged.SaveAs("merged.pdf")
$vbLabelText   $csharpLabel

Erfahren Sie mehr über das Zusammenführen und Aufteilen von PDFs.


Neue Funktionen nach der Migration

Nach der Migration zu IronPDF erhalten Sie Funktionen, die PDF Duo einfach nicht bieten kann:

Kopf- und Fußzeilen mit Seitenzahlen

using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center; font-size:10px;'>Company Report</div>",
    MaxHeight = 25
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>",
    MaxHeight = 25
};

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center; font-size:10px;'>Company Report</div>",
    MaxHeight = 25
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>",
    MaxHeight = 25
};

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align:center; font-size:10px;'>Company Report</div>",
    .MaxHeight = 25
}

renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>",
    .MaxHeight = 25
}

Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("report.pdf")
$vbLabelText   $csharpLabel

PDF Duo unterstützt keine Kopf- oder Fußzeilen - es gibt keine entsprechende Funktionalität. IronPDF bietet vollständige HTML/CSS-Unterstützung mit integrierten Platzhaltern für dynamische Inhalte wie Seitenzahlen. Siehe den Headers and Footers Guide.

Wasserzeichen

using IronPdf;
using IronPdf.Editing;

var pdf = PdfDocument.FromFile("document.pdf");

pdf.ApplyWatermark(
    "<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>",
    45,
    VerticalAlignment.Middle,
    HorizontalAlignment.Center);

pdf.SaveAs("watermarked.pdf");
using IronPdf;
using IronPdf.Editing;

var pdf = PdfDocument.FromFile("document.pdf");

pdf.ApplyWatermark(
    "<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>",
    45,
    VerticalAlignment.Middle,
    HorizontalAlignment.Center);

pdf.SaveAs("watermarked.pdf");
Imports IronPdf
Imports IronPdf.Editing

Dim pdf = PdfDocument.FromFile("document.pdf")

pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>", 45, VerticalAlignment.Middle, HorizontalAlignment.Center)

pdf.SaveAs("watermarked.pdf")
$vbLabelText   $csharpLabel

PDF Duo unterstützt keine Wasserzeichen. IronPDF bietet HTML-basierte Wasserzeichen mit vollständiger CSS-Styling-Unterstützung.

Passwortschutz

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("secured.pdf");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("secured.pdf");
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SecuritySettings.UserPassword = "userpassword"
pdf.SecuritySettings.OwnerPassword = "ownerpassword"
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights
pdf.SaveAs("secured.pdf")
$vbLabelText   $csharpLabel

PDF Duo unterstützt keinen Passwortschutz und keine Sicherheitseinstellungen.

Textextraktion

var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();
var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();
Dim pdf = PdfDocument.FromFile("document.pdf")
Dim text As String = pdf.ExtractAllText()
$vbLabelText   $csharpLabel

PDF Duo unterstützt keine Textextraktion.


Kritische Hinweise zur Migration

Keine Seitenlayout-Optionen auf PDF Duo's HtmlToPdf

DuoDimension.HtmlToPdf dokumentiert kein Einstellungsobjekt für Papiergröße, Ausrichtung oder Ränder.IronPDF stellt diese explizit auf RenderingOptions bereit:

// PDF Duo: no documented per-instance settings — OpenHTML / SavePDF only.

// IronPDF:
renderer.RenderingOptions.PaperSize    = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop    = 20;
renderer.RenderingOptions.MarginRight  = 15;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft   = 15;
// PDF Duo: no documented per-instance settings — OpenHTML / SavePDF only.

// IronPDF:
renderer.RenderingOptions.PaperSize    = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop    = 20;
renderer.RenderingOptions.MarginRight  = 15;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft   = 15;
' PDF Duo: no documented per-instance settings — OpenHTML / SavePDF only.

' IronPDF:
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginRight = 15
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 15
$vbLabelText   $csharpLabel

Benennung von Methoden speichern

Verschiedene Methodennamen zum Schreiben der Datei:

// PDF Duo:
conv.SavePDF("output.pdf");

// IronPDF:
pdf.SaveAs("output.pdf");
// PDF Duo:
conv.SavePDF("output.pdf");

// IronPDF:
pdf.SaveAs("output.pdf");
' PDF Duo:
conv.SavePDF("output.pdf")

' IronPDF:
pdf.SaveAs("output.pdf")
$vbLabelText   $csharpLabel

Vorhandene PDFs laden

PDF Duo .NET schreibt nur PDFs - es gibt keinen dokumentierten "vorhandenes PDF laden"-Aufruf. Um auf ein bestehendes PDF zuzugreifen, müssen Sie auf IronPDF (oder eine andere Bibliothek) umsteigen:

// PDF Duo: no equivalent.

// IronPDF:
var pdf = PdfDocument.FromFile("document.pdf");
// PDF Duo: no equivalent.

// IronPDF:
var pdf = PdfDocument.FromFile("document.pdf");
Imports IronPdf

Dim pdf = PdfDocument.FromFile("document.pdf")
$vbLabelText   $csharpLabel

HTML-String-Eingabe

PDF Duo's OpenHTML dokumentiert keinen "rendere diesen HTML-String"-Aufruf; Teams schreiben die Markup zuerst in eine temporäre Datei. IronPDF rendert Strings direkt:

// PDF Duo:
File.WriteAllText("temp.html", html);
var conv = new DuoDimension.HtmlToPdf();
conv.OpenHTML("temp.html");
conv.SavePDF("output.pdf");

// IronPDF:
var renderer = new ChromePdfRenderer();
renderer.RenderHtmlAsPdf(html).SaveAs("output.pdf");
// PDF Duo:
File.WriteAllText("temp.html", html);
var conv = new DuoDimension.HtmlToPdf();
conv.OpenHTML("temp.html");
conv.SavePDF("output.pdf");

// IronPDF:
var renderer = new ChromePdfRenderer();
renderer.RenderHtmlAsPdf(html).SaveAs("output.pdf");
' PDF Duo:
File.WriteAllText("temp.html", html)
Dim conv = New DuoDimension.HtmlToPdf()
conv.OpenHTML("temp.html")
conv.SavePDF("output.pdf")

' IronPDF:
Dim renderer = New ChromePdfRenderer()
renderer.RenderHtmlAsPdf(html).SaveAs("output.pdf")
$vbLabelText   $csharpLabel

Funktionsvergleich

Feature PDF Duo .NET IronPDF
HTML zu PDF Ja (Engine nicht bekanntgegeben) Vollständig CSS3, JavaScript
URL zu PDF Ja Vollständig mit Autorisierungsunterstützung
PDF-Zusammenführung Nicht in dokumentierter API Ja
Kopf-/Fußzeilen Nicht in dokumentierter API Volle HTML-Unterstützung
Seitenzahlen Nicht in dokumentierter API Eingebaute Platzhalter
Wasserzeichen Nicht in dokumentierter API HTML-basiert
Passwortschutz Nicht in dokumentierter API Vollständige Sicherheitsoptionen
Formular ausfüllen Nicht in dokumentierter API Ja
Digitale Signaturen Nicht in dokumentierter API Ja
Textextraktion Nicht in dokumentierter API Ja
PDF in Bilder Nicht in dokumentierter API Ja
Async-Unterstützung Nicht in dokumentierter API Vollständig async/await
.NET Core/5+ Nicht in dokumentierter Ausführungsliste Unterstützt

Migrations-Checkliste

Vor der Migration

  • Finde alle PDF Duo-Referenzen im Quellcode
  • Dokumentieren Sie die aktuellen Einstellungen (Seitengröße, Ränder usw.).
  • Liste aller verwendeten PDF-Operationen
  • Möglichkeiten für neue Funktionen identifizieren (Header, Wasserzeichen, Sicherheit) -IronPDF-Lizenzschlüssel erhalten

Paketänderungen

  • Entfernen Sie den Projektverweis auf PDFDuo.dll (PDF Duo .NET ist nicht auf NuGet) und löschen Sie die mitgelieferte Binärdatei
  • Installieren Sie das IronPdf NuGet-Paket: dotnet add package IronPdf
  • Aktualisieren Sie die Namespace-Importe von using DuoDimension; zu using IronPdf;

Code-Änderungen

  • Lizenzschlüsselkonfiguration beim Start hinzufügen
  • Ersetzen Sie DuoDimension.HtmlToPdf durch ChromePdfRenderer
  • Ersetzen Sie OpenHTML(path) + SavePDF(path) durch RenderHtmlFileAsPdf(path).SaveAs(path)
  • Ersetzen Sie den Umweg über die temporäre Datei für HTML-Strings durch RenderHtmlAsPdf(html).SaveAs(path)
  • Ersetzen Sie OpenHTML(url) + SavePDF(path) durch RenderUrlAsPdf(url).SaveAs(path)
  • Ersetzen Sie jeden externen Zusammenführungsschritt durch PdfDocument.Merge()
  • Setzen Sie die Seitengröße und Ränder explizit über RenderingOptions (kein PDF Duo-Äquivalent)
  • Ersetzen Sie SavePDF() durch SaveAs()
  • Für jeden "lade bestehendes PDF"-Workflow verwenden Sie PdfDocument.FromFile() (kein PDF Duo-Äquivalent)

Nach der Migration

  • Führen Sie Regressionstests durch, um die PDF-Ausgabe zu vergleichen.
  • Überprüfen Sie, ob Seitengrößen und Ränder übereinstimmen.
  • Test mit komplexem HTML/CSS (die moderne Engine von IronPDF sollte damit besser zurechtkommen)
  • Neue Funktionen hinzufügen (Kopf- und Fußzeilen, Wasserzeichen, Sicherheit)
  • Dokumentation aktualisieren

Hinweis:PDF Duo .NET ist ein eingetragenes Warenzeichen seines jeweiligen Eigentümers. Diese Seite ist nicht verbunden mit, unterstützt von oder gesponsert von DuoDimension. Alle Produktnamen, Logos und Marken sind Eigentum ihrer jeweiligen Eigentümer. Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich zugängliche Informationen zum Zeitpunkt des Schreibens wider.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen

Iron-Support-Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an