Jak przeprowadzić migrację z HiQPdf do IronPDF w języku C#
HiQPdf to komercyjna biblioteka HTML-do-PDF opublikowana przezHiQPdfSoftware (aktualny HiQPdf 18.0.2 na nuget.org, luty 2026). Powszechne powody, dla których programiści oceniają alternatywy:
-
Ograniczona darmowa wersja:
HiQPdf.Freeogranicza wyjście do 3 stron na dokument — przydatne do oceny, ale nie do produkcji wymagających kompletnego generowania dokumentów. -
WebKit na Linii Klasycznej: Klasyczny pakiet
HiQPdfużywa starszego silnika opartego na WebKit, który może mieć problemy z nowoczesnymi frameworkami JavaScript.HiQPdfdostarcza wariant oparty na Chromium (HiQPdf.NG/HiQPdf.Chromium.Windows, plus wersja na Linux), ale większość istniejącego kodu jest skierowana na silnik klasyczny. -
Wsparcie dla .NET rozprzestrzenione po pakietach: .NET Framework, .NET Core i .NET Standard 2.0 są wspierane, ale rozdzielone na osobne ID NuGet (HiQPdf, HiQPdf_NetCore, HiQPdf.NG, HiQPdf.Chromium.Windows, HiQPdf_x64), między którym musisz wybierać.
-
Sfragmentowane pakiety: Wiele identyfikatorów NuGet dla różnych platform (
HiQPdf,HiQPdf.Free,HiQPdf_NetCore,HiQPdf.NG,HiQPdf.Chromium.Windows) komplikuje zarządzanie zależnościami. -
Rozbudowana konfiguracja: Wymaga konfiguracji przez łańcuchy właściwości
Document,Header,Footerzamiast płynnego API opcji renderowania. - Licencjonowanie per-developer dodaje koszty: 245 USD Startup / 495 USD Developer / 795 USD Team / 1 095 USD Enterprise (wieczysta, pierwszy rok aktualizacji wliczony).
PorównanieHiQPdfi IronPDF
| Aspekt | HiQPdf | IronPDF |
|---|---|---|
| Silnik renderujący | WebKit (Klasyczny HiQPdf) lub Chromium (HiQPdf.NG / HiQPdf.Chromium.Windows) |
Nowoczesny Chromium |
| Poziom bezpłatny | HiQPdf.Free ograniczenie do 3 stron |
30-dniowy okres próbny |
| Obsługa nowoczesnego JS | Ograniczone w Klasycznym; nowoczesne w NG/Chromium | Pełna (React, Angular, Vue) |
| Obsługa .NET Core/5+ | Wspierane, ale rozdzielone po wielu pakietach NuGet | Pojedynczy, ujednolicony pakiet |
| Projektowanie API | Łańcuchy właściwości | Płynne opcje renderowania |
| Obsługa CSS3 | Częściowe w Klasycznym; pełne w NG | Pełne wsparcie |
| Dokumentacja | Fragmentacja przez linie produktów | Kompleksowe |
| Pakiet NuGet | Wiele wariantów | Pojedynczy pakiet |
Dokumenty IronPDF wspierają obecne wersje .NET (.NET Framework 4.6.2+, .NET 6, 7, 8, 9) na nowoczesnym silniku renderującym Chromium.
Ocena złożoności migracji
Szacowany nakład pracy według funkcji
| Funkcja | Złożoność migracji |
|---|---|
| HTML do PDF | Bardzo niski |
| URL do pliku PDF | Bardzo niski |
| Łączenie plików PDF | Niski |
| Nagłówki/stopki | Medium |
| Rozmiar strony/marginesy | Niski |
| Tryb wyzwalacza/opóźnienia | Niski |
Zmiana paradygmatu
Podstawową zmianą w tej migracjiHiQPdfjest Shift od konfiguracji łańcucha właściwości do opcji płynnego renderowania:
HiQPdf: converter.Document.Header.Height = 50;
converter.Document.Header.Add(new HtmlToPdfVariableElement(...));
IronPDF: renderer.RenderingOptions.TextHeader = new TextHeaderFooter() { ... };
Zanim zaczniesz
Wymagania wstępne
- Wersja .NET:IronPDF obsługuje .NET Framework 4.6.2+ i .NET Core 3.1+ / .NET 5+
- Klucz licencyjny: Uzyskaj klucz licencyjny IronPDF na stronie ironpdf.com
- Usunięcie HiQPdf: Planowane jest usunięcie wszystkich wariantów pakietu NuGet HiQPdf
Zidentyfikuj wszystkie użycia HiQPdf
# FindHiQPdfnamespace 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" .
# FindHiQPdfnamespace 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" .
Zmiany w pakiecie NuGet
# Remove allHiQPdfvariants
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 allHiQPdfvariants
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
Szybki start – migracja
Krok 1: Zaktualizuj konfigurację licencji
Przed (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"
Po (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";
Krok 2: Zaktualizuj importy przestrzeni nazw
// 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
Kompletna dokumentacija API
Mapowanie głównych klas
| KlasaHiQPdf | Klasa IronPDF |
|---|---|
HtmlToPdf |
ChromePdfRenderer |
PdfDocument |
PdfDocument |
HtmlToPdfVariableElement |
TextHeaderFooter lub HtmlHeaderFooter |
Mapowanie metod konwersji
| MetodaHiQPdf | Metoda IronPDF |
|---|---|
ConvertHtmlToMemory(html, baseUrl) |
RenderHtmlAsPdf(html) |
ConvertUrlToMemory(url) |
RenderUrlAsPdf(url) |
File.WriteAllBytes(path, bytes) |
pdf.SaveAs(path) |
Mapowanie metod dokumentu PDF
| MetodaHiQPdf | Metoda IronPDF |
|---|---|
PdfDocument.FromFile(path) |
PdfDocument.FromFile(path) |
document1.AddDocument(document2) |
PdfDocument.Merge(pdf1, pdf2) |
document.WriteToFile(path) |
pdf.SaveAs(path) |
Mapowanie symboli zastępczych nagłówków/stopek
| HiQPdf Placeholder | IronPDF Placeholder | Opis |
|---|---|---|
{CrtPage} |
{page} |
Numer bieżącej strony |
{PageCount} |
{total-pages} |
Łączna liczba stron |
Przykłady migracji kodu
Przykład 1: Konwersja HTML do PDF
Przed (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
Po (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
PodejścieHiQPdfwymaga utworzenia instancji HtmlToPdf, wywołania ConvertUrlToMemory() lub ConvertHtmlToMemory(), aby uzyskać tablicę bajtów, a następnie ręcznego zapisania bajtów do pliku. ChromePdfRendererIronPDF zwraca obiekt PdfDocument z bezpośrednią metodą SaveAs(), eliminując ręczny krok zapisywania do pliku. Nowoczesny silnik Chromium zapewnia również lepsze renderowanie złożonej zawartości HTML/CSS/JavaScript. Dodatkowe opcje renderowania można znaleźć w dokumentacji dotyczącej konwersji HTML do PDF.
Przykład 2: Scałanie wielu plików PDF
Przed (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
Po (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
PodejścieHiQPdfwymaga ładowania dokumentów z plików za pomocą PdfDocument.FromFile(), wywołania AddDocument() na pierwszym dokumencie, aby dodać drugi, a następnie użycia WriteToFile() do zapisania.IronPDF dostarcza czystszą metodę statyczną PdfDocument.Merge(), która akceptuje wiele obiektów PdfDocument bez potrzeby przeprowadzania pośrednich operacji na plikach. Dowiedz się więcej o łączeniu i dzieleniu plików PDF.
Przykład 3: Nagłówki i stopki w plikach PDF z numerami stron
Przed (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
Po (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
PodejścieHiQPdfwymaga ustawienia Document.Header.Height, tworzenia obiektów HtmlToPdfVariableElement i wywoływania Add() na sekcjach nagłówka/stopki. Symbol zastępczy numeru strony używa składni {CrtPage} i {PageCount}.IronPDF oferuje czystszą konfigurację TextHeaderFooter z właściwościami CenterText i inną składnią dla symboli zastępczych: {page} i {total-pages}. Dodatkowe opcje, w tym nagłówki oparte na HTML, można znaleźć w dokumentacji dotyczącej nagłówków i stopek.
Ważne uwagi dotyczące migracji
Zmiana składni symboli zastępczych
Najważniejszą zmianą w dokumentach z numerami stron jest składnia symboli zastępczych:
//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}"
Pełne mapowanie symboli zastępczych:
{CrtPage}→{page}{PageCount}→{total-pages}
Różnica między metodami scałania
HiQPdf modyfikuje pierwszy dokument w miejscu:
// 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 zwraca nowy, scalony dokument:
// 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")
Brak ograniczenia do 3 stron
Wersja darmowaHiQPdfogranicza wydruk do 3 stron z znakami wodnymi.IronPDF generuje kompletne dokumenty bez sztucznych ograniczeń w okresie próbnym.
Ponowne użycie ChromePdfRenderer
W przeciwieństwie do HiQPdf, gdzie można tworzyć nowe instancje HtmlToPdf dla każdej konwersji, należy ponownie używać ChromePdfRenderer IronPDF:
// 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)
Rozwiązywanie problemów
Problem 1: Nie znaleziono HtmlToPdf
Problem: Klasa HtmlToPdf nie istnieje w IronPDF.
Rozwiązanie: Zastąp 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()
Problem 2: Nie znaleziono ConvertHtmlToMemory
Problem: Metoda ConvertHtmlToMemory() nie istnieje.
Rozwiązanie: Użyj 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
Problem 3: Nie działają symbole zastępcze numerów stron
Problem: {CrtPage} i {PageCount} pojawiają się dosłownie w wyjściu.
Rozwiązanie: Zaktualizuj do składni symboli zastępczych 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}"
Problem 4: Nie znaleziono elementu HtmlToPdfVariableElement
Problem: Klasa HtmlToPdfVariableElement nie istnieje.
Rozwiązanie: Użyj TextHeaderFooter lub 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
}
Lista kontrolna migracji
Przed migracją
- Sporządź spis wszystkich wywołań APIHiQPdfw kodzie źródłowym
- Dokumentuj aktualne rozmiary stron, marginesy i ustawienia
- Zidentyfikuj konfiguracje nagłówków/stopek oraz symbole zastępcze
- Uzyskaj klucz licencyjny IronPDF
- Przetestuj IronPDF w środowisku programistycznym
Migracja kodu
- Usuń wszystkie pakietyHiQPdfNuGet (wszystkie warianty)
- Zainstaluj pakiet NuGet IronPDF:
dotnet add package IronPdf - Zaktualizuj importy przestrzeni nazw
- Zastąp
HtmlToPdfprzezChromePdfRenderer - Konwertuj
ConvertHtmlToMemory()naRenderHtmlAsPdf() - Konwertuj
ConvertUrlToMemory()naRenderUrlAsPdf() - Aktualizuj zastępniki nagłówka/stopki (
{CrtPage}→{page},{PageCount}→{total-pages}) - Zastąp
HtmlToPdfVariableElementprzezTextHeaderFooter - Aktualizuj operacje scalania (
AddDocument→PdfDocument.Merge) - Dodaj inicjalizację klucza licencyjnego podczas uruchamiania
Testowanie
- Przetestuj konwersję HTML do PDF
- Przetestuj konwersję adresu URL do formatu PDF
- Sprawdź renderowanie nagłówków/stopek
- Sprawdź symbole zastępcze numerów stron
- Testowanie łączenia plików PDF
- Testowanie stron z dużą ilością kodu JavaScript (obecnie obsługiwane przez Chromium)
Po migracji
- Usuń numer seryjnyHiQPdfz konfiguracji
- Aktualizacja dokumentacji
- Sprawdzaj, czy nie ma żadnych różnic w renderowaniu

