IRONSOFTWAREHOME
VIDÉOS

Comment exporter des documents au format PDF UA en C#

Curtis Chau
Curtis Chau
Updated: 19 juillet 2026

HiQPdf est une bibliothèque commerciale de conversion HTML en PDF publiée par HiQPdfSoftware (actuelle HiQPdf 18.0.2 sur nuget.org, février 2026). Raisons courantes pour lesquelles les développeurs évaluent des alternatives :

  1. Version gratuite restrictive : HiQPdf.Free limite la sortie à 3 pages par document — utile pour l'évaluation, pas pour les charges de travail de production nécessitant la génération complète de documents.

  2. WebKit sur la ligne Classic : Le package Classic HiQPdf utilise un ancien moteur basé sur WebKit qui peut avoir des difficultés avec les frameworks JavaScript modernes. HiQPdfpropose une variante basée sur Chromium (HiQPdf.NG / HiQPdf.Chromium.Windows, plus une version Linux), mais la plupart des codes existants ciblent le moteur Classic.

  3. Support .NET réparti entre les packages : .NET Framework, .NET Core, et .NET Standard 2.0 sont tous pris en charge mais répartis sur différents IDs NuGet (HiQPdf, HiQPdf_NetCore, HiQPdf.NG, HiQPdf.Chromium.Windows, HiQPdf_x64) entre lesquels il faut choisir.

  4. Packages fragmentés : Plusieurs IDs NuGet pour différentes plateformes (HiQPdf, HiQPdf.Free, HiQPdf_NetCore, HiQPdf.NG, HiQPdf.Chromium.Windows) compliquent la gestion des dépendances.

  5. Configuration verbeuse : Nécessite une configuration via des chaînes de propriétés Document, Header, Footer plutôt qu'une API fluide d'options de rendu.

  6. Les licences par développeur s'additionnent : 245 $ Startup / 495 $ Développeur / 795 $ Équipe / 1 095 $ Enterprise (perpétuelle, première année de mises à jour incluse).

Comparaison HiQPdfvs IronPDF

AspectHiQPdfIronPDF
Moteur de renduWebKit (Classic HiQPdf) or Chromium (HiQPdf.NG / HiQPdf.Chromium.Windows)Chrome moderne
Niveau gratuitHiQPdf.Free Limite de 3 pagesessai complet de 30 jours
Prise en charge de JS moderneLimité sur Classic ; moderne sur NG/ChromiumComplet (React, Angular, Vue)
prise en charge de .NET Core/5+Prise en charge, mais répartie sur plusieurs packages NuGetPaquet unique et unifié
Conception de l'APIChaînes de propriétésOptions de rendu fluide
Prise en charge CSS3Partiel sur Classic ; complet sur NGPrise en charge complète
DocumentationFragmenté à travers les lignes de produitsComplet
Paquet NuGetPlusieurs variantesPaquet unique

Les documents IronPDF prennent en charge les versions actuelles de .NET (.NET Framework 4.6.2+, .NET 6, 7, 8, 9) sur un moteur de rendu Chromium moderne.


Évaluation de la complexité de la migration

Estimation de l'effort par fonctionnalité

FonctionComplexité de la migration
HTML vers PDFTrès faible
URL vers PDFTrès faible
Fusionner des PDFFaible
En-têtes/Pieds de pageMoyen
Taille de la page/margesFaible
TriggerMode/DelaysFaible

Changement de paradigme

Le Shift fondamental de cette migration HiQPdfréside dans le passage d' une configuration de chaîne de propriétés à des options de rendu fluides :

HiQPdf : converter.Document.Header.Height = 50 ;
          converter.Document.Header.Add(new HtmlToPdfVariableElement(...)) ;
          
IronPDF : renderer.RenderingOptions.TextHeader = new TextHeaderFooter() { ... } ;
Text

Avant de commencer

Prérequis

  1. **Version .NET :**IronPDF prend en charge .NET Framework 4.6.2+ et .NET Core 3.1+ / .NET 5+
  2. Clé de licence : Obtenez votre clé de licence IronPDF sur IronPDF
  3. Suppression de HiQPdf : Prévoir la suppression de toutes les variantes du package NuGet HiQPdf

Identifier tous les usages de HiQPdf

# Find HiQPdfnamespace usage
grep -r "using HiQPdf\|HtmlToPdf\|PdfDocument" --include="*.cs" .

# Find header/footer usage
grep -r "\.Header\.\|\.Footer\.\|HtmlToPdfVariableElement" --include="*.cs" .

# Find placeholder syntax
grep -r "CrtPage\|PageCount" --include="*.cs" .

# Find NuGet references
grep -r "HiQPdf" --include="*.csproj" .
SHELL

Modifications du paquet NuGet

# Remove all HiQPdfvariants
dotnet remove package HiQPdf
dotnet remove package HiQPdf.Free
dotnet remove package HiQPdf_NetCore
dotnet remove package HiQPdf_x64
dotnet remove package HiQPdf.NG
dotnet remove package HiQPdf.Chromium.Windows

# Install IronPDF(single package for all platforms)
dotnet add package IronPdf
SHELL

Migration rapide

Étape 1 : Mise à jour de la configuration de la licence

Avant (HiQPdf):

HtmlToPdf converter = new HtmlToPdf();
converter.SerialNumber = "HIQPDF-SERIAL-NUMBER";

Après (IronPDF):

// Set globally at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";

Étape 2 : mise à jour des importations de l'espace de noms

// Before (HiQPdf)
using HiQPdf;

// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;

Référence API complète

Mappage de la classe principale

Classe HiQPdfClasse IronPDF
HtmlToPdfChromePdfRenderer
PdfDocumentPdfDocument
HtmlToPdfVariableElementTextHeaderFooter ou HtmlHeaderFooter

Mise en correspondance des méthodes de conversion

Méthode HiQPdfMéthode IronPDF
ConvertHtmlToMemory(html, baseUrl)RenderHtmlAsPdf(html)
ConvertUrlToMemory(url)RenderUrlAsPdf(url)
File.WriteAllBytes(path, bytes)pdf.SaveAs(path)

Mappage de méthode de document PDF

Méthode HiQPdfMéthode IronPDF
PdfDocument.FromFile(path)PdfDocument.FromFile(path)
document1.AddDocument(document2)PdfDocument.Merge(pdf1, pdf2)
document.WriteToFile(path)pdf.SaveAs(path)

Mappage des espaces réservés de l'en-tête et du pied de page

HiQPdfPlaceholderIronPDF PlaceholderDescription du projet
{CrtPage}{page}Numéro de page actuel
{PageCount}{total-pages}Nombre total de pages

Exemples de migration de code

Exemple 1 : Conversion HTML vers PDF

Avant (HiQPdf):

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

class Program
{
    static void Main()
    {
        HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
        byte[] pdfBuffer = htmlToPdfConverter.ConvertUrlToMemory("https://example.com");
        System.IO.File.WriteAllBytes("output.pdf", pdfBuffer);
        
        // Convert HTML string
        string html = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        byte[] pdfFromHtml = htmlToPdfConverter.ConvertHtmlToMemory(html, "");
        System.IO.File.WriteAllBytes("fromhtml.pdf", pdfFromHtml);
    }
}

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://example.com");
        pdf.SaveAs("output.pdf");
        
        // Convert HTML string
        string html = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        var pdfFromHtml = renderer.RenderHtmlAsPdf(html);
        pdfFromHtml.SaveAs("fromhtml.pdf");
    }
}

L'approche HiQPdfnécessite de créer une instance HtmlToPdf, d'appeler ConvertUrlToMemory() ou ConvertHtmlToMemory() pour obtenir un tableau d'octets, puis d'écrire manuellement les octets dans un fichier. L'ChromePdfRenderer d'IronPDF renvoie un objet PdfDocument avec une méthode directe SaveAs(), éliminant l'étape d'écriture manuelle de fichier. Le moteur moderne Chromium offre également un meilleur rendu pour le contenu HTML/CSS/JavaScript complexe. Voir la documentation HTML vers PDF pour des options de rendu supplémentaires.

Exemple 2 : fusionner plusieurs PDF

Avant (HiQPdf):

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

class Program
{
    static void Main()
    {
        // Create first PDF
        HtmlToPdf converter1 = new HtmlToPdf();
        byte[] pdf1 = converter1.ConvertHtmlToMemory("<h1>First Document</h1>", "");
        System.IO.File.WriteAllBytes("doc1.pdf", pdf1);
        
        // Create second PDF
        HtmlToPdf converter2 = new HtmlToPdf();
        byte[] pdf2 = converter2.ConvertHtmlToMemory("<h1>Second Document</h1>", "");
        System.IO.File.WriteAllBytes("doc2.pdf", pdf2);
        
        // Merge PDFs
        PdfDocument document1 = PdfDocument.FromFile("doc1.pdf");
        PdfDocument document2 = PdfDocument.FromFile("doc2.pdf");
        document1.AddDocument(document2);
        document1.WriteToFile("merged.pdf");
    }
}

Après (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        
        // Create first PDF
        var pdf1 = renderer.RenderHtmlAsPdf("<h1>First Document</h1>");
        pdf1.SaveAs("doc1.pdf");
        
        // Create second PDF
        var pdf2 = renderer.RenderHtmlAsPdf("<h1>Second Document</h1>");
        pdf2.SaveAs("doc2.pdf");
        
        // Merge PDFs
        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}

L'approche HiQPdfnécessite de charger des documents à partir de fichiers en utilisant PdfDocument.FromFile(), d'appeler AddDocument() sur le premier document pour ajouter le second, puis d'utiliser WriteToFile() pour sauvegarder.IronPDF fournit une méthode statique PdfDocument.Merge() plus propre qui accepte directement plusieurs objets PdfDocument — aucune opération de fichier intermédiaire n'est requise. En savoir plus sur la fusion et la division de PDF.

Exemple 3 : En-têtes et pieds de page PDF avec numéros de page

Avant (HiQPdf):

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

class Program
{
    static void Main()
    {
        HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
        
        // Add header
        htmlToPdfConverter.Document.Header.Height = 50;
        HtmlToPdfVariableElement headerHtml = new HtmlToPdfVariableElement("<div style='text-align:center'>Page Header</div>", "");
        htmlToPdfConverter.Document.Header.Add(headerHtml);
        
        // Add footer with page number
        htmlToPdfConverter.Document.Footer.Height = 50;
        HtmlToPdfVariableElement footerHtml = new HtmlToPdfVariableElement("<div style='text-align:center'>Page {CrtPage} of {PageCount}</div>", "");
        htmlToPdfConverter.Document.Footer.Add(footerHtml);
        
        byte[] pdfBuffer = htmlToPdfConverter.ConvertHtmlToMemory("<h1>Document with Headers and Footers</h1>", "");
        System.IO.File.WriteAllBytes("header-footer.pdf", pdfBuffer);
    }
}

Après (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        
        // Configure header and footer
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Page Header",
            FontSize = 12
        } ;
        
        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page} of {total-pages}",
            FontSize = 10
        } ;
        
        var pdf = renderer.RenderHtmlAsPdf("<h1>Document with Headers and Footers</h1>");
        pdf.SaveAs("header-footer.pdf");
    }
}
C#

L'approche HiQPdfnécessite de définir Document.Header.Height, de créer des objets HtmlToPdfVariableElement, et d'appeler Add() sur les sections d'en-tête/pied de page. Les espaces réservés de numéros de page utilisent la syntaxe {CrtPage} et {PageCount}.IronPDF fournit une configuration TextHeaderFooter plus propre avec des propriétés CenterText et une syntaxe de substitut différente : {page} et {total-pages}. Voir la documentation sur les en-têtes et pieds de page pour des options supplémentaires, notamment les en-têtes basés sur HTML.


Notes de migration essentielles

Modification de la syntaxe des espaces réservés

Le changement le plus important pour les documents comportant des numéros de page est la syntaxe des espaces réservés :

// HiQPdfplaceholders
"Page {CrtPage} of {PageCount}"

//IronPDF placeholders
"Page {page} of {total-pages}"
C#

Mappage complet des espaces réservés:

  • {CrtPage}{page}
  • {PageCount}{total-pages}

Différence de méthode de fusion

HiQPdf modifie le premier document en place :

// HiQPdf: Modifies document1
document1.AddDocument(document2);
document1.WriteToFile("merged.pdf");

IronPDF renvoie un nouveau document fusionné :

// IronPDF: Returns new document
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");

Pas de limite de 3 pages

La version gratuite de HiQPdflimite la production à 3 pages avec filigrane.IronPDF génère des documents complets sans limitations artificielles pendant la période d'essai.

Réutiliser ChromePdfRenderer

Contrairement à HiQPdfoù vous pouvez créer de nouvelles instances HtmlToPdf pour chaque conversion, l'ChromePdfRenderer d'IronPDF doit être réutilisé :

// IronPDF: Create once, reuse
var renderer = new ChromePdfRenderer();
var pdf1 = renderer.RenderHtmlAsPdf(html1);
var pdf2 = renderer.RenderHtmlAsPdf(html2);

Dépannage

Édition 1 : HtmlToPdf introuvable

Problème : La classe HtmlToPdf n'existe pas dans IronPDF.

Solution: Replace with ChromePdfRenderer:

// HiQPdf
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();

// IronPDF
var renderer = new ChromePdfRenderer();

Édition 2 : ConvertHtmlToMemory introuvable

Problème : La méthode ConvertHtmlToMemory() n'existe pas.

Solution: Use RenderHtmlAsPdf():

// HiQPdf
byte[] pdfBytes = converter.ConvertHtmlToMemory(html, "");

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
byte[] pdfBytes = pdf.BinaryData;

Sujet 3 : Les caractères de remplacement des numéros de page ne fonctionnent pas

Problème : {CrtPage} et {PageCount} apparaissent littéralement dans le résultat.

Solution : Mise à jour de la syntaxe des espaces réservés IronPDF :

// HiQPdfsyntax (won't work)
"Page {CrtPage} of {PageCount}"

//IronPDF syntax
"Page {page} of {total-pages}"
C#

Edition 4 : HtmlToPdfVariableElement introuvable

Problème : La classe HtmlToPdfVariableElement n'existe pas.

Solution: Use TextHeaderFooter or HtmlHeaderFooter:

// HiQPdf
HtmlToPdfVariableElement headerHtml = new HtmlToPdfVariableElement("<div>Header</div>", "");
converter.Document.Header.Add(headerHtml);

// IronPDF
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
    CenterText = "Header",
    FontSize = 12
} ;

Liste de contrôle de la migration

Pré-migration

  • Inventorier tous les appels d'API HiQPdfdans le code source
  • Documenter les dimensions, marges et paramètres actuels des pages
  • Identifier les configurations d'en-tête/de pied de page et les espaces réservés
  • Obtenir une clé de licence IronPDF
  • Tester IronPDF en environnement de développement

Migration de code

  • Supprimer tous les packages NuGet HiQPdf(toutes variantes)
  • Installez le package NuGet IronPDF: dotnet add package IronPdf
  • Mettre à jour les importations d'espace de noms
  • Remplacez HtmlToPdf par ChromePdfRenderer
  • Convertissez ConvertHtmlToMemory() en RenderHtmlAsPdf()
  • Convertissez ConvertUrlToMemory() en RenderUrlAsPdf()
  • Mettez à jour les espaces réservés d'en-tête/pied de page ({CrtPage}{page}, {PageCount}{total-pages})
  • Remplacez HtmlToPdfVariableElement par TextHeaderFooter
  • Mettez à jour les opérations de fusion (AddDocumentPdfDocument.Merge)
  • Ajouter l'initialisation de la clé de licence au démarrage

Essai

  • Tester la conversion de HTML en PDF
  • Test de conversion d'URL en PDF
  • Vérifier l'affichage de l'en-tête et du pied de page
  • Vérifier les espaces réservés aux numéros de page
  • Test de fusion de PDF
  • Test des pages riches en JavaScript (désormais prises en charge par Chromium)

Après la migration

  • Supprimer le numéro de série HiQPdfde la configuration
  • Mise à jour de la documentation
  • Surveillez toute différence de rendu

Veuillez noter: HiQPdf est une marque déposée de son propriétaire respectif. Ce site n'est pas affilié, approuvé ou sponsorisé par HiQPdfSoftware. 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 et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise