Passer au contenu du pied de page
VIDéOS

Comment intégrer des caractères UTF-8 dans des fichiers PDF à l'aide de C#

Migrer de PDF Duo .NETà IronPDF transfère votre flux de travail PDF .NET d'une bibliothèque de niche, peu documentée et sans nouvelles versions récentes vers une solution stable, bien documentée et activement maintenue. Ce guide fournit un chemin de migration étape par étape qui aborde les risques de dépendance à un composant inactif tout en accédant à des fonctionnalités non couvertes par l'API documentée de PDF Duo.

Pourquoi migrer de PDF Duo vers IronPDF

Le problème du risque de double PDF

PDF Duo .NET (DuoDimension Software) est un composant de niche HTML vers PDF for .NET. Bien qu'il ait pu séduire les équipes recherchant une DLL autonome, plusieurs traits en font un mauvais choix pour les applications de production actuelles :

  1. Vendeur et provenance : Publié par DuoDimension Software (duodimension.com), un petit éditeur de logiciels avec aucune feuille de route publique et aucun dépôt GitHub.

  2. Documentation rare : Une page produit du fournisseur, quelques extraits d'exemple, et un communiqué de presse de 2010. Aucune référence d'API et aucune présence significative sur Stack Overflow.

  3. Abandon effectif : La dernière version publique est v2.4, datée du 10 décembre 2010 — environ 15 ans sans une nouvelle version.

  4. Surface documentée étroite : L'API publique est essentiellement DuoDimension.HtmlToPdf avec OpenHTML(...) et SavePDF(...). Il n'existe aucune API native documentée pour le marquage, le cryptage, la signature, le remplissage de formulaires, l'extraction de texte ou la fusion de PDF.

  5. Moteur de rendu non divulgué : Les matériaux du vendeur décrivent un composant autonome sans dépendance à Office ou Acrobat, mais ne publient pas quel moteur HTML/CSS est utilisé. CSS3, JavaScript moderne, polices web, et mise en page flex/grid ne sont pas revendiqués.

  6. Ciblage .NET prémoderne : Le support documenté concerne le .NET Framework 1.1 à 3.5 sur Windows XP / Vista / 7 / 2000 / 2003. Aucun support documenté pour .NET Framework 4.x, .NET Core, .NET 5+, Linux, ou Docker.

Comparaison PDF Duo vs IronPDF

Aspect PDF Duo .NET IronPDF
Dernière version publiée v2.4 (décembre 2010) Publications régulières et actives
Distribution Téléchargement DLL depuis duodimension.com (pas de NuGet) NuGet IronPdf
Support d'exécution .NET Framework 1.1 – 3.5, uniquement pour Windows .NET FX 4.6.2+, .NET 6/7/8/9/10, Linux, macOS, Docker
Documentation Une page produit du fournisseur Documents complets + Référence API
Support Aucune visible Équipe d'assistance professionnelle
Communauté Négligeable Plus de 41 millions de téléchargements NuGet (pile Iron Software)
Rendu Moteur non divulgué Chrome moderne
Caractéristiques Uniquement HTML vers PDF HTML-to-PDF, fusion, sécurité, signatures, OCR, formulaires, filigranes
Licence d'utilisation Selon la page de tarification du fournisseur Commercial, perpétuel ou par abonnement

Pour les équipes sur .NET moderne,IronPDF offre une base stable avec développement actif et une documentation complète à la place d'un composant dont la dernière version publiée était v2.4 en décembre 2010.


Avant de commencer

Prérequis

  1. Environnement .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Accès à NuGet : possibilité d'installer des packages NuGet
  3. Licence IronPDF : Obtenez votre clé de licence sur IronPDF

Modifications du package/références

PDF Duo .NET is not distributed via NuGet. Le supprimer est une étape manuelle :

# 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

Configuration de la licence

// 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

Identifier l'utilisation de 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

Référence API

Le namespace racine documenté du fournisseur est DuoDimension. La surface publique est essentiellement la classe HtmlToPdf avec OpenHTML(...) et SavePDF(...). Les sous-namespaces présentés ci-dessous pour IronPDF reflètent la structure de IronPDF; PDF Duo .NETne documente pas les sous-namespaces.

Modifications de l'espace de nommage

PDF Duo .NET IronPDF
using DuoDimension; using IronPdf;
(aucun sous-namespace documenté) using IronPdf.Rendering;

Mappages de conversion HTML vers PDF

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)
(écrire une chaîne dans un fichier temporaire .html, puis OpenHTML) renderer.RenderHtmlAsPdf(html).SaveAs(path)

Mappages de configuration de page

DuoDimension.HtmlToPdf ne documente pas d'objet de paramètres pour le format de papier, l'orientation ou les marges. La colonne IronPDF ci-dessous montre les équivalents explicites RenderingOptions.

PDF Duo .NET IronPDF
(aucune option de taille de page documentée) RenderingOptions.PaperSize = PdfPaperSize.A4
(aucune option de taille de page documentée) RenderingOptions.PaperSize = PdfPaperSize.Letter
(aucune option d'orientation documentée) RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
(aucun objet marges documenté) Propriétés des marges individuelles

Margines Mappings

PDF Duo .NET IronPDF
(aucun objet marges documenté) Propriétés individuelles
(pas d'équivalent)(pas d'équivalent)(pas d'équivalent)_(pas d'équivalent) RenderingOptions.MarginTop
(pas d'équivalent)(pas d'équivalent)(pas d'équivalent)_(pas d'équivalent) RenderingOptions.MarginRight
(pas d'équivalent)(pas d'équivalent)(pas d'équivalent)_(pas d'équivalent) RenderingOptions.MarginBottom
(pas d'équivalent)(pas d'équivalent)(pas d'équivalent)_(pas d'équivalent) RenderingOptions.MarginLeft

Mise en correspondance des opérations sur les documents

PDF Duo .NET est uniquement un convertisseur HTML vers PDF. La page produit du fournisseur ne documente pas les APIs de chargement, d'octet ou de fusion sur DuoDimension.HtmlToPdf. Les lignes ci-dessous montrent ce que les équipes recherchaient typiquement dans les bibliothèques adjacentes lors de l'utilisation de PDF Duo, et l'appel IronPDF qui consolide ce travail.

Besoin PDF Duo .NET IronPDF
Charger le PDF existant pas natif — jumelé avec iTextSharp 4.x ou équivalent PdfDocument.FromFile(path)
Sauvegarder le PDF conv.SavePDF(path) pdf.SaveAs(path)
Obtenez des octets PDF not native pdf.BinaryData
Fusionner des PDF pas natif — jumelé avec iTextSharp 4.x ou équivalent PdfDocument.Merge(pdf1, pdf2)

Nouvelles fonctionnalités non disponibles dans l'API documentée de PDF Duo

Fonction IronPDF
En-têtes/Pieds de page RenderingOptions.HtmlHeader, HtmlFooter
Nombre de pages {page}, placeholders {total-pages}
Filigranes pdf.ApplyWatermark(html)
Protection par mot de passe pdf.SecuritySettings
Remplissage de formulaires pdf.Form.Fields
Signatures numériques pdf.SignWithFile()
Extraction de texte pdf.ExtractAllText()
PDF vers image pdf.RasterizeToImageFiles()

Exemples de migration de code

Exemple 1 : Conversion HTML vers PDF

Avant (PDF Duo):

// PDF Duo .NETis 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 .NETis 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

Après (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

La différence fondamentale ici est le modèle d'API. L'HtmlToPdf.OpenHTML(...) de PDF Duo accepte un chemin de fichier, une URL ou un flux — il ne documente pas un appel "rendre cette chaîne HTML", donc les équipes écrivent d'abord le balisage dans un fichier temporaire, puis appellent SavePDF(path) pour écrire sur le disque. L'ChromePdfRenderer.RenderHtmlAsPdf() de IronPDF rend directement la chaîne et renvoie un objet PdfDocument, que vous enregistrez ensuite avec SaveAs().

Cet approche orientée objet fournit une flexibilité supplémentaire : vous pouvez manipuler le PDF (ajouter des filigranes, fusionner des documents, ajouter la sécurité, extraire du texte) avant de l'enregistrer — aucun de ces éléments ne fait partie de l'API documentée de PDF Duo .NET. Voir la documentation HTML vers PDF pour des options de rendu supplémentaires.

Exemple 2 : Conversion d'une URL en PDF

Avant (PDF Duo):

// PDF Duo .NETis 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 .NETis 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

Après (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 utilise la même classe DuoDimension.HtmlToPdf pour la conversion d'URL en passant l'URL à OpenHTML(...) suivi par SavePDF(path).IronPDF utilise ChromePdfRenderer avec la méthode dédiée RenderUrlAsPdf(url), renvoyant un objet PdfDocument.

Un avantage clé est que le moteur de rendu basé sur Chromium d'IronPDF offre un support CSS3 et JavaScript moderne, alors que les matériaux du fournisseur PDF Duo ne divulguent pas quel moteur HTML/CSS est utilisé. En savoir plus sur la conversion d'URL en PDF.

Exemple 3 : fusion de fichiers PDF

Avant (PDF Duo):

PDF Duo .NET ne fournit pas d'API de fusion de PDF native. La surface documentée est uniquement HTML vers PDF, donc les équipes qui devaient fusionner rendaient typiquement chaque PDF avec PDF Duo puis les concaténer avec une bibliothèque séparée (communément iTextSharp 4.x dans les projets de l'ère 2010) :

// PDF Duo .NETis 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 .NETis 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

Après (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

Cet exemple montre une différence architecturale fondamentale. PDF Duo .NETn'a pas d'API de fusion du tout — fusionner dans les flux de travail PDF Duo signifiait historiquement le jumeler avec une seconde bibliothèque telle que iTextSharp 4.x.

IronPDF consolide cela en une seule dépendance : chargez chaque PDF comme un PdfDocument en utilisant PdfDocument.FromFile(), puis utilisez la méthode statique PdfDocument.Merge() pour les combiner. Cela renvoie un nouvel objet PdfDocument que vous sauvegardez séparément avec SaveAs().

L'approche IronPDF vous permet aussi de manipuler n'importe lequel des PDF avant la fusion, d'ajouter des filigranes au résultat fusionné, d'appliquer des paramètres de sécurité, et plus. Pour fusionner de nombreux fichiers, vous pouvez utiliser LINQ :

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

En savoir plus sur la fusion et la division de PDF.


Nouvelles capacités après la migration

Après avoir migré vers IronPDF, vous bénéficiez de fonctionnalités que PDF Duo ne peut tout simplement pas vous offrir :

En-têtes et pieds de page avec numéros de page

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 ne prend pas en charge les en-têtes et les pieds de page - il n'existe pas de fonctionnalité équivalente.IronPDF offre une prise en charge complète du HTML/CSS avec des espaces réservés intégrés pour le contenu dynamique comme les numéros de page. Voir le guide des en-têtes et pieds de page.

Marques de fond

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 ne prend pas en charge les filigranes.IronPDF fournit des filigranes basés sur HTML avec une prise en charge complète du style CSS.

Protection par mot de passe

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 ne prend pas en charge la protection par mot de passe ou les paramètres de sécurité.

Extraction de texte

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 ne prend pas en charge l'extraction de texte.


Notes de migration essentielles

Aucune option de mise en page sur l'HtmlToPdf de PDF Duo

DuoDimension.HtmlToPdf ne documente pas d'objet de paramètres couvrant le format de papier, l'orientation, ou les marges.IronPDF les expose explicitement sur RenderingOptions :

// 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

Enregistrement des noms de méthodes

Noms de méthodes différents pour écrire le fichier :

// 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

Chargement de PDF existants

PDF Duo .NET n'écrit que des PDFs — il n'existe pas d'appel documenté pour " charger un PDF existant ". Pour travailler sur un PDF existant, vous devez passer à IronPDF(ou une autre bibliothèque) :

// 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

Entrée de chaîne HTML

L'OpenHTML de PDF Duo ne documente pas d'appel "rendre cette chaîne HTML" ; les équipes écrivent d'abord le balisage dans un fichier temporaire.IronPDF rend les chaînes directement :

// 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

Comparaison des fonctionnalités

Fonction PDF Duo .NET IronPDF
HTML vers PDF Oui (moteur non divulgué) CSS3 complet, JavaScript
URL vers PDF Oui Complet avec prise en charge de l'authentification
Fusion de PDF Pas dans l'API documentée Oui
En-têtes/Pieds de page Pas dans l'API documentée Prise en charge complète du HTML
Numéros de page Pas dans l'API documentée Caractères génériques intégrés
Filigranes Pas dans l'API documentée Basé sur HTML
Protection par mot de passe Pas dans l'API documentée Options de sécurité complètes
Remplissage de formulaires Pas dans l'API documentée Oui
Signatures numériques Pas dans l'API documentée Oui
Extraction de texte Pas dans l'API documentée Oui
PDF vers images Pas dans l'API documentée Oui
Prise en charge de l'asynchronisme Pas dans l'API documentée Async/await complet
.NET Core/5+ Pas dans la liste d'exécution documentée Prise en charge

Liste de contrôle de la migration

Pré-migration

  • Trouvez toutes les références à PDF Duo dans le code source
  • Paramètres actuels du document (format de page, marges, etc.)
  • Lister toutes les opérations PDF utilisées
  • Identifier les opportunités pour de nouvelles fonctionnalités (en-têtes, filigranes, sécurité)
  • Obtenir une clé de licence IronPDF

Modifications du paquet

  • Supprimez la référence de projet à PDFDuo.dll (PDF Duo .NET n'est pas sur NuGet) et supprimez le binaire du fournisseur
  • Installez le packageNuGet IronPdf: dotnet add package IronPdf
  • Mettez à jour les imports de namespaces de using DuoDimension; à using IronPdf;

Modifications du code

  • Ajouter la configuration de la clé de licence au démarrage
  • Remplacez DuoDimension.HtmlToPdf par ChromePdfRenderer
  • Remplacez OpenHTML(path) + SavePDF(path) par RenderHtmlFileAsPdf(path).SaveAs(path)
  • Remplacez le détour par fichier temporaire pour les chaînes HTML par RenderHtmlAsPdf(html).SaveAs(path)
  • Remplacez OpenHTML(url) + SavePDF(path) par RenderUrlAsPdf(url).SaveAs(path)
  • Remplacez toute étape de fusion externe par PdfDocument.Merge()
  • Définissez explicitement le format de page et les marges via RenderingOptions (pas d'équivalent PDF Duo)
  • Remplacez SavePDF() par SaveAs()
  • Pour tout flux de travail "charger un PDF existant", utilisez PdfDocument.FromFile() (pas d'équivalent PDF Duo)

Après la migration

  • Effectuer des tests de régression comparant les résultats PDF
  • Vérifiez que les dimensions et les marges des pages correspondent.
  • Test avec du HTML/CSS complexe (le moteur moderne d'IronPDF devrait mieux le gérer)
  • Ajouter de nouvelles fonctionnalités (en-têtes, pieds de page, filigranes, sécurité)
  • Mise à jour de la documentation

Veuillez noterPDF Duo .NET est une marque déposée de son propriétaire respectif. Ce site n'est pas affilié à, approuvé par ou sponsorisé par DuoDimension. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont à titre informatif uniquement et reflètent les informations publiquement disponibles au moment de l'écriture.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi