HiQPdf vs IronPDF: Przewodnik po porównaniu technicznym
Kiedy deweloperzy .NET oceniają rozwiązania HTML-na-PDF,HiQPdfwyróżnia się jako komercyjna biblioteka wykorzystująca renderowanie na bazie WebKit. ChociażHiQPdfobsługuje HTML5/CSS3, jego starszy silnik WebKit może mieć trudności z nowoczesnymi frameworkami JavaScript, a darmowa wersja jest ograniczona do 3 stron z wyraźnymi znakami wodnymi. W przeciwieństwie do tego,IronPDFużywa nowoczesnego silnika renderowania opartego na Chromium, oferując pełne wsparcie dla JavaScript i zintegrowany pakiet dla wszystkich platform .NET.
To porównanie ocenia obie biblioteki pod kątem odpowiednich aspektów technicznych, aby pomóc profesjonalnym deweloperom i architektom w podejmowaniu świadomych decyzji o ich potrzebach PDF w .NET.
Przegląd HiQPdf
HiQPdf to komercyjna biblioteka HTML-to-PDF, która wykorzystuje silnik renderujący oparty na WebKit. Główna klasa konwertera biblioteki, HtmlToPdf, zawiera metody takie jak ConvertHtmlToMemory() i ConvertUrlToMemory(), które zwracają surowe dane byte[]. Konfiguracja jest zarządzana poprzez łańcuchy własności w obiekcie Document, takie jak Document.Header, Document.Footer i Document.PageSize.
Darmowa wersjaHiQPdfnarzuca znaczące ograniczenie — maksymalnie 3 strony na wyjściu PDF z natarczywym znakiem wodnym, co czyni dokładne testowanie na większych dokumentach wyzwaniem podczas oceny. Biblioteka oferuje wiele wariantów pakietów NuGet dla różnych platform (HiQPdf, HiQPdf.Free, HiQPdf.NetCore, HiQPdf.NetCore.x64, HiQPdf.Client), a dokumentacja nie precyzuje jasno wsparcia dla .NET Core lub .NET 5+.
Do nagłówków i stopekHiQPdfużywa obiektów HtmlToPdfVariableElement dodanych do kolekcji Document.Header i Document.Footer. Placholdery numerów stron używają składni {CrtPage} dla bieżącej strony i {PageCount} dla wszystkich stron.
Przegląd IronPDF
IronPDF to biblioteka PDF dla .NET, która wykorzystuje nowoczesny silnik renderowania na bazie Chromium, oferując pełne wsparcie dla HTML5, CSS3 i frameworków JavaScript, w tym React, Angular i Vue. Główna klasa renderująca biblioteki, ChromePdfRenderer, zawiera metody takie jak RenderHtmlAsPdf() i RenderUrlAsPdf(), które zwracają obiekty PdfDocument.
IronPDF oferuje pojedynczy zintegrowany pakiet NuGet dla wszystkich platform z udokumentowaną kompatybilnością dla .NET 6, 7, 8, 9 i 10. Konfiguracja wykorzystuje właściwości RenderingOptions bezpośrednio na rendererze. Nagłówki i stopki mogą używać TextHeaderFooter z właściwościami takimi jak CenterText i FontSize. Placeholdery numerów stron używają składni {page} i {total-pages}.
Porównanie Silników Renderowania i Zgodności
Podstawowa różnica między tymi bibliotekami tkwi w ich silnikach renderowania i wsparciu platform.
| Aspekt | HiQPdf | IronPDF |
|---|---|---|
| Silnik renderujący | Oparte na WebKit (starsze) | Nowoczesny Chromium |
| Darmowy poziom | Limit 3 stron + znak wodny | 30-dniowy okres próbny |
| Wsparcie dla nowoczesnego JS | Ograniczone | Pełna (React, Angular, Vue) |
| Wsparcie dla .NET Core/5+ | Potrzebnych jest kilka pakietów | Pojedynczy, ujednolicony pakiet |
| Projektowanie API | Złożone łańcuchy właściwości | Przejrzyste i płynne API |
| Obsługa CSS3 | Częściowe | Obsługiwane |
| Dokumentacja | Fragmentaryczny | Dokładny |
| Pakiet NuGet | Wiele wariantów | Pojedynczy pakiet |
SilnikHiQPdfoparty na WebKit to starsza technologia, która może mieć problemy z nowoczesnymi frameworkami JavaScript i skomplikówanymi strukturami HTML. Silnik Chromium wIronPDFzapewnia taką samą jakość renderowania jak w Google Chrome, gwarantując dokładną konwersję nowoczesnych treści webowych.
Porównanie kodu: typowe operacje na plikach PDF
Konwersja HTML i URL na PDF
Najbardziej podstawowe operacje ukazują różnice w projektowaniu API.
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 ClassIronPDF:
// 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 ModuleHiQPdf tworzy konwerter HtmlToPdf, wywołuje ConvertUrlToMemory() lub ConvertHtmlToMemory(), aby uzyskać surowe dane byte[], a następnie ręcznie zapisuje na dysku używając File.WriteAllBytes(). Metoda ConvertHtmlToMemory() wymaga drugiego parametru dla bazowego URL-a (pusty ciąg, jeśli nie jest potrzebny).
IronPDF tworzy ChromePdfRenderer, wywołuje RenderUrlAsPdf() lub RenderHtmlAsPdf(), aby uzyskać obiekt PdfDocument, a następnie zapisuje bezpośrednio używając SaveAs(). API jest bardziej zwięzłe z obiektowym sposobem obsługi dokumentów.
Aby uzyskać informacje na temat zaawansowanych opcji renderowania HTML, zapoznaj się z przewodnikiem dotyczącym konwersji HTML do PDF.
Łączenie wielu plików PDF
Łączenie PDF demonstruje różne podejścia do manipulacji dokumentami.
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 ModuleIronPDF:
// 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 ModuleHiQPdf wymaga uprzedniego zapisania PDF-ów na dysku, wczytania ich za pomocą PdfDocument.FromFile(), a następnie użycia AddDocument(), aby dołączyć jeden do drugiego, i na koniec WriteToFile(), aby zapisać wynik. Powoduje to modyfikację pierwszego dokumentu w miejscu.
IronPDF może łączyć dokumenty bezpośrednio w pamięci przy użyciu statycznej metody PdfDocument.Merge(), która zwraca nowy scalony dokument. To podejście jest bardziej przejrzyste i nie wymaga pośredniego wczytywania/zapisywania plików.
Nagłówki i stopki z numerami stron
Konfiguracja nagłówków i stopek pokazuje różne podejścia do treści dynamicznych.
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 ClassIronPDF:
// 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 ClassHiQPdf konfiguruje nagłówki i stopki poprzez właściwości Document.Header i Document.Footer, ustawia Height i dodaje obiekty HtmlToPdfVariableElement. Placeholdery numerów stron używają {CrtPage} dla bieżącej strony i {PageCount} dla wszystkich stron.
IronPDF używa RenderingOptions.TextHeader i RenderingOptions.TextFooter z obiektami TextHeaderFooter. Właściwości takie jak CenterText i FontSize zapewniają bezpośrednią konfigurację. Placeholdery numerów stron używają {page} i {total-pages}.
Dowiedz się więcej o konfiguracji nagłówków i stopek w samouczkach IronPDF.
Przewodnik po mapowaniu API
Dla programistów rozważających migrację doHiQPdflub porównujących możliwości, poniższe zestawienie przedstawia równoważne operacje:
Mapowanie głównych klas
| KlasaHiQPdf | KlasaIronPDF |
|---|---|
HtmlToPdf | ChromePdfRenderer |
PdfDocument | PdfDocument |
PdfPage | pdf.Pages[i] |
PdfDocumentControl | RenderingOptions |
PdfHeader / PdfDocumentHeader | HtmlHeaderFooter |
PdfFooter / PdfDocumentFooter | HtmlHeaderFooter |
HtmlToPdfVariableElement | HtmlHeaderFooter.HtmlFragment |
Mapowanie metod konwersji
| MetodaHiQPdf | MetodaIronPDF |
|---|---|
ConvertHtmlToMemory(html, baseUrl) | RenderHtmlAsPdf(html, baseUrl) |
ConvertUrlToMemory(url) | RenderUrlAsPdf(url) |
ConvertHtmlToFile(html, baseUrl, path) | RenderHtmlAsPdf(html).SaveAs(path) |
ConvertUrlToFile(url, path) | RenderUrlAsPdf(url).SaveAs(path) |
Mapowanie właściwości
| WłaściwośćHiQPdf | WłaściwościIronPDF |
|---|---|
BrowserWidth | RenderingOptions.ViewPortWidth |
BrowserHeight | RenderingOptions.ViewPortHeight |
Document.PageSize | RenderingOptions.PaperSize |
Document.PageOrientation | RenderingOptions.PaperOrientation |
Document.Margins.Top | RenderingOptions.MarginTop |
Document.Margins.Bottom | RenderingOptions.MarginBottom |
Document.Margins.Left | RenderingOptions.MarginLeft |
Document.Margins.Right | RenderingOptions.MarginRight |
Document.Header.Height | HtmlHeader.MaxHeight |
Document.Footer.Height | HtmlFooter.MaxHeight |
SerialNumber | IronPdf.License.LicenseKey |
Mapowanie składni symboli zastępczych
Symbole zastępcze nagłówków i stopek różnią się w zależności od biblioteki:
| HiQPdf | IronPDF |
|---|---|
{CrtPage} | {page} |
{PageCount} | {total-pages} |
{CrtPageUri} | {url} |
{CrtPageTitle} | {html-title} |
Podsumowanie porównania funkcji
| Funkcja | HiQPdf | IronPDF |
|---|---|---|
| Renderowanie Chromium | Nie (WebKit) | Tak |
| Nowoczesny JavaScript (React, Angular, Vue) | Ograniczone | Tak |
| Pełna obsługa CSS3 | Ograniczone | Tak |
| Obsługa .NET 6/7/8/9/10 | Tak | Tak |
| Pojedynczy pakiet NuGet | Nie (Wiele wariantów) | Tak |
| Bezpłatna pełna wersja próbna | Nie (Limit 3 stron + znak wodny) | Tak (30 dniowy) |
| HTML do PDF | Tak | Tak |
| URL do pliku PDF | Tak | Tak |
| Łączenie plików PDF | Tak (AddDocument) | Tak (Merge) |
| Nagłówki/stopki | Tak (HtmlToPdfVariableElement) | Tak (TextHeaderFooter) |
Kiedy zespoły rozważają przejście zHiQPdfna IronPDF
Zespoły programistów rozważają przejście zHiQPdfnaIronPDFz kilku powodów:
Ograniczona wersja darmowa: Darmowa wersjaHiQPdfnakłada limit 3 stron i zawiera uciążliwe znaki wodne, co sprawia, że jest praktycznie bezużyteczna do pracy produkcyjnej i trudna do dokładnej oceny.IronPDFoferuje 30-dniowy okres próbny z pełnym zestawem funkcji bez ograniczeń dotyczących liczby stron.
Starszy silnik WebKit: Silnik renderującyHiQPdfoparty na WebKit ma trudności z obsługą nowoczesnych frameworków JavaScript, takich jak React, Angular i Vue. Silnik Chromium firmyIronPDFzapewnia taką samą jakość renderowania jak Google Chrome, gwarantując dokładną konwersję złożonych, nowoczesnych treści internetowych.
Niejasna obsługa .NET Core: DokumentacjaHiQPdfnie wyjaśnia jednoznacznie, czy obsługuje .NET Core lub .NET 5+, a biblioteka wymaga oddzielnych pakietów NuGet dla różnych platform.IronPDFzapewnia jeden ujednolicony pakiet z udokumentówaną obsługą platform .NET 6, 7, 8, 9 i 10.
Fragmentaryczne pakiety NuGet:HiQPdfwymaga różnych wariantów pakietów (HiQPdf, HiQPdf.Free, HiQPdf.NetCore, HiQPdf.NetCore.x64, HiQPdf.Client) dla różnych scenariuszy.IronPDFwykorzystuje jeden pakiet dla wszystkich platform.
Skomplikowany projekt API:HiQPdfwymaga rozbudowanej konfiguracji poprzez łańcuchy własności takie jak Document.Header.Height i Document.Footer.Add(). Płynne APIIronPDFz właściwościami RenderingOptions zapewnia czystszą konfigurację.
Inna składnia placholderów:HiQPdfużywa placeholderów {CrtPage} i {PageCount}, podczas gdyIronPDFużywa {page} i {total-pages}. Migracja wymaga aktualizacji wszystkich szablonów nagłówków i stopek.
Mocne strony i kwestie do rozważenia
Atuty HiQPdf
- Obsługa HTML5/CSS3: Zapewnia możliwości renderowania HTML5 i CSS3
- Ugruntowana biblioteka: komercyjna biblioteka z istniejącą bazą użytkowników
Uwagi dotyczące HiQPdf
- Silnik WebKit: Starsza technologia renderowania z ograniczoną obsługą nowoczesnego JavaScript
- Limit 3 stron: wersja darmowa ma znaczne ograniczenia
- Pakiety fragmentaryczne: wiele pakietów NuGet dla różnych platform
- Niejasna obsługa .NET: Dokumentacja nie wyjaśnia jednoznacznie zgodności z nowoczesnym .NET
- Złożone łańcuchy właściwości: Rozbudowana konfiguracja poprzez właściwości zagnieżdżone
- Jednostki oparte na punktach: wykorzystuje punkty (72 na cal) do pomiarów
Atuty IronPDF
- Silnik Chromium: nowoczesne renderowanie z pełną obsługą JavaScript
- Pakiet zunifikowany: Pojedynczy pakiet NuGet dla wszystkich platform
- Pełna wersja próbna: 30-dniowy okres próbny z pełnym zestawem funkcji
- Obsługa nowoczesnego .NET: Udokumentówana dla .NET 6, 7, 8, 9, 10
- Czyste API: Płynna konfiguracja
RenderingOptions - Kompleksowe zasoby: obszerne samouczki i dokumentacja
Uwagi dotyczące IronPDF
- Licencja komercyjna: Wymagana do użytku produkcyjnego
- Jednostki milimetrowe: Używa milimetrów zamiast punktów dla marginesów
Wnioski
HiQPdf iIronPDFreprezentują różne generacje technologii konwersji HTML do PDF w aplikacjach .NET. SilnikHiQPdfoparty na WebKit zapewnia podstawową obsługę HTML5/CSS3, ale ma trudności z nowoczesnymi frameworkami JavaScript i oferuje niejasną kompatybilność z .NET Core z wieloma fragmentarycznymi pakietami. Limit 3 stron w wersji darmowej znacznie ogranicza możliwość oceny.
IronPDF zapewnia nowoczesną alternatywę opartą na silniku Chromium z pełną obsługą JavaScript dla aplikacji React, Angular i Vue. Pojedynczy, ujednolicony pakiet NuGet z udokumentówaną obsługą platform .NET 6/7/8/9/10 upraszcza wdrażanie, a przejrzysta konstrukcja API zmniejsza złożoność konfiguracji.
W miarę jak organizacje planują wdrożenie .NET 10, C# 14 oraz tworzenie aplikacji do 2026 r., wybór między starszym renderowaniem WebKit z fragmentarycznymi pakietami a nowoczesnym renderowaniem Chromium z ujednoliconą obsługą ma znaczący wpływ zarówno na tempo rozwoju, jak i jakość wyników. Zespoły wymagające obsługi nowoczesnych frameworków JavaScript, wyraźnej kompatybilności z platformą .NET lub usprawnionego zarządzania pakietami przekonają się, żeIronPDFskutecznie spełnia te wymagania.
Zacznij testować IronPDF, korzystając z bezpłatnej wersji próbnej, i zapoznaj się z obszerną dokumentacją, aby ocenić, czy rozwiązanie to spełnia Twoje konkretne wymagania.
