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-na-PDF, która wykorzystuje silnik renderowania 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 przez łańcuchy właściwości na 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 dodawanych do kolekcji Document.Header i Document.Footer. Symbol zastępczy numeru strony używa składni {CrtPage} dla bieżącej strony i {PageCount} dla totalnej liczby 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 renderowania biblioteki, ChromePdfRenderer, zawiera metody takie jak RenderHtmlAsPdf() i RenderUrlAsPdf(), które zwracają obiekty PdfDocument.
IronPDF oferuje jeden zintegrowany pakiet NuGet dla wszystkich platform z udokumentówaną zgodnoś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. Symbol zastępczy numeru strony używa 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 Class
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
HiQPdf tworzy konwerter HtmlToPdf, wywołuje ConvertUrlToMemory() lub ConvertHtmlToMemory(), aby uzyskać surowe dane byte[], a następnie ręcznie zapisuje je na dysku przy użyciu File.WriteAllBytes(). Metoda ConvertHtmlToMemory() wymaga drugiego parametru dla podstawowego URL (pusty ciąg, jeśli nie jest potrzebny).
IronPDF tworzy ChromePdfRenderer, wywołuje RenderUrlAsPdf() lub RenderHtmlAsPdf(), aby uzyskać obiekt PdfDocument, a następnie zapisuje go bezpośrednio przy 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 Module
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
HiQPdf wymaga najpierw zapisania PDFów na dysku, załadowania ich z PdfDocument.FromFile(), następnie użycia AddDocument() do dołączenia jednego do drugiego i w końcu WriteToFile(), aby zapisać wynik. Powoduje to modyfikację pierwszego dokumentu w miejscu.
IronPDF może łączyć dokumenty bezpośrednio w pamięci, używając statycznej metody PdfDocument.Merge(), która zwraca nowy, połączony 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 Class
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
HiQPdf konfiguruje nagłówki i stopki za pomocą właściwości Document.Header i Document.Footer, ustawiając Height i dodając obiekty HtmlToPdfVariableElement. Symbol zastępczy numeru strony używa {CrtPage} dla bieżącej strony i {PageCount} dla całkowitej liczby stron.
IronPDF używa RenderingOptions.TextHeader i RenderingOptions.TextFooter z obiektami TextHeaderFooter. Właściwości takie jak CenterText i FontSize oferują bezpośrednią konfigurację. Symbol zastępczy numeru strony używa {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 | ❌ (WebKit) | ✅ |
| Nowoczesny JavaScript (React, Angular, Vue) | ⚠️ Ograniczone | ✅ |
| Pełna obsługa CSS3 | ⚠️ Częściowe | ✅ |
| Obsługa .NET 6/7/8/9/10 | ⚠️ Niejasna dokumentacja | ✅ |
| Pojedynczy pakiet NuGet | ❌ (Wiele wariantów) | ✅ |
| Bezpłatna pełna wersja próbna | ❌ (limit 3 stron + znak wodny) | ✅(30 dni) |
| HTML do PDF | ✅ | ✅ |
| URL do pliku PDF | ✅ | ✅ |
| Łączenie plików PDF | ✅ (AddDocument) |
✅ (Merge) |
| Nagłówki/stopki | ✅ (HtmlToPdfVariableElement) |
✅ (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.
Złożony projekt API:HiQPdfwymaga rozległej konfiguracji poprzez łańcuchy właściwości takie jak Document.Header.Height i Document.Footer.Add(). Fluent APIIronPDFz właściwościami RenderingOptions oferuje czystszą konfigurację.
Różna składnia symboli zastępczych:HiQPdfużywa symboli {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: Konfiguracja fluent
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.