Comment exporter des documents au format PDF UA en C#
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 :
-
Version gratuite restrictive :
HiQPdf.Freelimite 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. -
WebKit sur la ligne Classic : Le package Classic
HiQPdfutilise 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. -
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.
-
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. -
Configuration verbeuse : Nécessite une configuration via des chaînes de propriétés
Document,Header,Footerplutôt qu'une API fluide d'options de rendu. - 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
| Aspect | HiQPdf | IronPDF |
|---|---|---|
| Moteur de rendu | WebKit (Classic HiQPdf) or Chromium (HiQPdf.NG / HiQPdf.Chromium.Windows) |
Chrome moderne |
| Niveau gratuit | HiQPdf.Free Limite de 3 pages |
essai complet de 30 jours |
| Prise en charge de JS moderne | Limité sur Classic ; moderne sur NG/Chromium | Complet (React, Angular, Vue) |
| prise en charge de .NET Core/5+ | Prise en charge, mais répartie sur plusieurs packages NuGet | Paquet unique et unifié |
| Conception de l'API | Chaînes de propriétés | Options de rendu fluide |
| Prise en charge CSS3 | Partiel sur Classic ; complet sur NG | Prise en charge complète |
| Documentation | Fragmenté à travers les lignes de produits | Complet |
| Paquet NuGet | Plusieurs variantes | Paquet 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é
| Fonction | Complexité de la migration |
|---|---|
| HTML vers PDF | Très faible |
| URL vers PDF | Très faible |
| Fusionner des PDF | Faible |
| En-têtes/Pieds de page | Moyen |
| Taille de la page/marges | Faible |
| TriggerMode/Delays | Faible |
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() { ... } ;
Avant de commencer
Prérequis
- Version .NET :IronPDF prend en charge .NET Framework 4.6.2+ et .NET Core 3.1+ / .NET 5+
- Clé de licence : Obtenez votre clé de licence IronPDF sur IronPDF
- 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" .
# 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" .
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
# 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
Migration rapide
Étape 1 : Mise à jour de la configuration de la licence
Avant (HiQPdf):
HtmlToPdf converter = new HtmlToPdf();
converter.SerialNumber = "HIQPDF-SERIAL-NUMBER";
HtmlToPdf converter = new HtmlToPdf();
converter.SerialNumber = "HIQPDF-SERIAL-NUMBER";
Dim converter As New HtmlToPdf()
converter.SerialNumber = "HIQPDF-SERIAL-NUMBER"
Après (IronPDF):
// Set globally at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
// 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;
// Before (HiQPdf)
using HiQPdf;
// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;
Imports IronPdf
Imports IronPdf.Rendering
Référence API complète
Mappage de la classe principale
| Classe HiQPdf | Classe IronPDF |
|---|---|
HtmlToPdf |
ChromePdfRenderer |
PdfDocument |
PdfDocument |
HtmlToPdfVariableElement |
TextHeaderFooter ou HtmlHeaderFooter |
Mise en correspondance des méthodes de conversion
| Méthode HiQPdf | Mé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 HiQPdf | Mé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
| HiQPdfPlaceholder | IronPDF Placeholder | Description 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);
}
}
// 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);
}
}
Imports HiQPdf
Imports System
Class Program
Shared Sub Main()
Dim htmlToPdfConverter As New HtmlToPdf()
Dim pdfBuffer As Byte() = htmlToPdfConverter.ConvertUrlToMemory("https://example.com")
System.IO.File.WriteAllBytes("output.pdf", pdfBuffer)
' Convert HTML string
Dim html As String = "<h1>Hello World</h1><p>This is a PDF document.</p>"
Dim pdfFromHtml As Byte() = htmlToPdfConverter.ConvertHtmlToMemory(html, "")
System.IO.File.WriteAllBytes("fromhtml.pdf", pdfFromHtml)
End Sub
End Class
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");
}
}
// 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");
}
}
Imports IronPdf
Imports System
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
pdf.SaveAs("output.pdf")
' Convert HTML string
Dim html As String = "<h1>Hello World</h1><p>This is a PDF document.</p>"
Dim pdfFromHtml = renderer.RenderHtmlAsPdf(html)
pdfFromHtml.SaveAs("fromhtml.pdf")
End Sub
End Module
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");
}
}
// 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");
}
}
Imports HiQPdf
Imports System
Module Program
Sub Main()
' Create first PDF
Dim converter1 As New HtmlToPdf()
Dim pdf1 As Byte() = converter1.ConvertHtmlToMemory("<h1>First Document</h1>", "")
System.IO.File.WriteAllBytes("doc1.pdf", pdf1)
' Create second PDF
Dim converter2 As New HtmlToPdf()
Dim pdf2 As Byte() = converter2.ConvertHtmlToMemory("<h1>Second Document</h1>", "")
System.IO.File.WriteAllBytes("doc2.pdf", pdf2)
' Merge PDFs
Dim document1 As PdfDocument = PdfDocument.FromFile("doc1.pdf")
Dim document2 As PdfDocument = PdfDocument.FromFile("doc2.pdf")
document1.AddDocument(document2)
document1.WriteToFile("merged.pdf")
End Sub
End Module
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");
}
}
// 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");
}
}
Imports IronPdf
Imports System
Module Program
Sub Main()
Dim renderer = New ChromePdfRenderer()
' Create first PDF
Dim pdf1 = renderer.RenderHtmlAsPdf("<h1>First Document</h1>")
pdf1.SaveAs("doc1.pdf")
' Create second PDF
Dim pdf2 = renderer.RenderHtmlAsPdf("<h1>Second Document</h1>")
pdf2.SaveAs("doc2.pdf")
' Merge PDFs
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
End Sub
End Module
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);
}
}
// 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);
}
}
Imports HiQPdf
Imports System
Class Program
Shared Sub Main()
Dim htmlToPdfConverter As New HtmlToPdf()
' Add header
htmlToPdfConverter.Document.Header.Height = 50
Dim headerHtml As 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
Dim footerHtml As New HtmlToPdfVariableElement("<div style='text-align:center'>Page {CrtPage} of {PageCount}</div>", "")
htmlToPdfConverter.Document.Footer.Add(footerHtml)
Dim pdfBuffer As Byte() = htmlToPdfConverter.ConvertHtmlToMemory("<h1>Document with Headers and Footers</h1>", "")
System.IO.File.WriteAllBytes("header-footer.pdf", pdfBuffer)
End Sub
End Class
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");
}
}
// 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");
}
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System
Class Program
Shared Sub Main()
Dim renderer As New ChromePdfRenderer()
' Configure header and footer
renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.CenterText = "Page Header",
.FontSize = 12
}
renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
.CenterText = "Page {page} of {total-pages}",
.FontSize = 10
}
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Document with Headers and Footers</h1>")
pdf.SaveAs("header-footer.pdf")
End Sub
End Class
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}"
// HiQPdfplaceholders
"Page {CrtPage} of {PageCount}"
//IronPDF placeholders
"Page {page} of {total-pages}"
' HiQPdfplaceholders
"Page {CrtPage} of {PageCount}"
' IronPDF placeholders
"Page {page} of {total-pages}"
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");
// HiQPdf: Modifies document1
document1.AddDocument(document2);
document1.WriteToFile("merged.pdf");
' 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");
// IronPDF: Returns new document
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
' IronPDF: Returns new document
Dim 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);
// IronPDF: Create once, reuse
var renderer = new ChromePdfRenderer();
var pdf1 = renderer.RenderHtmlAsPdf(html1);
var pdf2 = renderer.RenderHtmlAsPdf(html2);
' IronPDF: Create once, reuse
Dim renderer As New ChromePdfRenderer()
Dim pdf1 = renderer.RenderHtmlAsPdf(html1)
Dim 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();
// HiQPdf
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
// IronPDF
var renderer = new ChromePdfRenderer();
' HiQPdf
Dim htmlToPdfConverter As New HtmlToPdf()
' IronPDF
Dim renderer As 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;
// HiQPdf
byte[] pdfBytes = converter.ConvertHtmlToMemory(html, "");
// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
byte[] pdfBytes = pdf.BinaryData;
' HiQPdf
Dim pdfBytes As Byte() = converter.ConvertHtmlToMemory(html, "")
' IronPDF
Dim pdf = renderer.RenderHtmlAsPdf(html)
Dim pdfBytes As Byte() = 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}"
// HiQPdfsyntax (won't work)
"Page {CrtPage} of {PageCount}"
//IronPDF syntax
"Page {page} of {total-pages}"
' HiQPdfsyntax (won't work)
"Page {CrtPage} of {PageCount}"
' IronPDF syntax
"Page {page} of {total-pages}"
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
} ;
// HiQPdf
HtmlToPdfVariableElement headerHtml = new HtmlToPdfVariableElement("<div>Header</div>", "");
converter.Document.Header.Add(headerHtml);
// IronPDF
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Header",
FontSize = 12
} ;
' HiQPdf
Dim headerHtml As New HtmlToPdfVariableElement("<div>Header</div>", "")
converter.Document.Header.Add(headerHtml)
' IronPDF
renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.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
HtmlToPdfparChromePdfRenderer - Convertissez
ConvertHtmlToMemory()enRenderHtmlAsPdf() - Convertissez
ConvertUrlToMemory()enRenderUrlAsPdf() - Mettez à jour les espaces réservés d'en-tête/pied de page (
{CrtPage}→{page},{PageCount}→{total-pages}) - Remplacez
HtmlToPdfVariableElementparTextHeaderFooter - Mettez à jour les opérations de fusion (
AddDocument→PdfDocument.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

