IRONSOFTWAREHOME
FILMY

Jak eksportować dokumenty w formacie PDF UA w języku C#

Curtis Chau
Curtis Chau
Updated: 19 lipca 2026

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:

  1. Ograniczona darmowa wersja: HiQPdf.Free ogranicza wyjście do 3 stron na dokument — przydatne do oceny, ale nie do produkcji wymagających kompletnego generowania dokumentów.

  2. WebKit na Linii Klasycznej: Klasyczny pakiet HiQPdf uż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.

  3. 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ć.

  4. 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.

  5. Rozbudowana konfiguracja: Wymaga konfiguracji przez łańcuchy właściwości Document, Header, Footer zamiast płynnego API opcji renderowania.

  6. 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

AspektHiQPdfIronPDF
Silnik renderującyWebKit (Klasyczny HiQPdf) lub Chromium (HiQPdf.NG / HiQPdf.Chromium.Windows)Nowoczesny Chromium
Poziom bezpłatnyHiQPdf.Free ograniczenie do 3 stron30-dniowy okres próbny
Obsługa nowoczesnego JSOgraniczone w Klasycznym; nowoczesne w NG/ChromiumPełna (React, Angular, Vue)
Obsługa .NET Core/5+Wspierane, ale rozdzielone po wielu pakietach NuGetPojedynczy, ujednolicony pakiet
Projektowanie APIŁańcuchy właściwościPłynne opcje renderowania
Obsługa CSS3Częściowe w Klasycznym; pełne w NGPełne wsparcie
DokumentacjaFragmentacja przez linie produktówKompleksowe
Pakiet NuGetWiele wariantówPojedynczy 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

FunkcjaZłożoność migracji
HTML do PDFBardzo niski
URL do pliku PDFBardzo niski
Łączenie plików PDFNiski
Nagłówki/stopkiMedium
Rozmiar strony/marginesyNiski
Tryb wyzwalacza/opóźnieniaNiski

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() { ... };
Text

Zanim zaczniesz

Wymagania wstępne

  1. **Wersja .NET:**IronPDF obsługuje .NET Framework 4.6.2+ i .NET Core 3.1+ / .NET 5+
  2. Klucz licencyjny: Uzyskaj klucz licencyjny IronPDF na stronie ironpdf.com
  3. 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" .
SHELL

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
SHELL

Szybki start – migracja

Krok 1: Zaktualizuj konfigurację licencji

Przed (HiQPdf):

HtmlToPdf converter = new HtmlToPdf();
converter.SerialNumber = "HIQPDF-SERIAL-NUMBER";

Po (IronPDF):

// 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;

Kompletna dokumentacija API

Mapowanie głównych klas

KlasaHiQPdfKlasa IronPDF
HtmlToPdfChromePdfRenderer
PdfDocumentPdfDocument
HtmlToPdfVariableElementTextHeaderFooter lub HtmlHeaderFooter

Mapowanie metod konwersji

MetodaHiQPdfMetoda IronPDF
ConvertHtmlToMemory(html, baseUrl)RenderHtmlAsPdf(html)
ConvertUrlToMemory(url)RenderUrlAsPdf(url)
File.WriteAllBytes(path, bytes)pdf.SaveAs(path)

Mapowanie metod dokumentu PDF

MetodaHiQPdfMetoda 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 PlaceholderIronPDF PlaceholderOpis
{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);
    }
}

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");
    }
}

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");
    }
}

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");
    }
}

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);
    }
}

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");
    }
}

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}"
C#

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");

IronPDF zwraca nowy, scalony dokument:

// IronPDF: Returns new document
var 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);

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();

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;

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}"
C#

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
};

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 HtmlToPdf przez ChromePdfRenderer
  • Konwertuj ConvertHtmlToMemory() na RenderHtmlAsPdf()
  • Konwertuj ConvertUrlToMemory() na RenderUrlAsPdf()
  • Aktualizuj zastępniki nagłówka/stopki ({CrtPage}{page}, {PageCount}{total-pages})
  • Zastąp HtmlToPdfVariableElement przez TextHeaderFooter
  • Aktualizuj operacje scalania (AddDocumentPdfDocument.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

Zwróć uwagę: HiQPdf jest zastrzeżonym znakiem towarowym odpowiedniego właściciela. Ta witryna nie jest powiązana, zatwierdzona ani sponsorowana przezHiQPdfSoftware. Wszystkie nazwy produktów, logo i marki są własnością ich odpowiednich właścicieli. Porównania mają charakter wyłącznie informacyjny i odzwierciedlają informacje dostępne publicznie w momencie pisania.
Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta