PORóWNANIE

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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.