Przejdź do treści stopki
PORóWNANIA PRODUKTóW

SpirePDF C# HTML do PDF Tutorial & Porównanie bibliotek

Jak wypada porównanie IronPDF i ActivePDF pod względem generowania plików PDF w środowisku .NET?

IronPDF oferuje kompleksowe rozwiązanie do obsługi plików PDF z renderowaniem opartym na przeglądarce Chrome i intuicyjnym projektem API, podczas gdy ActivePDF zapewnia modułowe komponenty dla przedsiębiorstw, wymagające oddzielnych licencji. IronPDF wyróżnia się obsługą nowoczesnych standardów internetowych, wdrażaniem na wielu platformach oraz opłacalnością w większości scenariuszy programowania w środowisku .NET.

Gdy programiści potrzebują niezawodnych funkcji generowania plików PDF w swoich aplikacjach .NET, często pojawiają się dwa popularne rozwiązania: IronPDF i ActivePDF. Obie biblioteki oferują skuteczne funkcje do tworzenia, konwertowania i edycji dokumentów PDF, ale znacznie różnią się pod względem podejścia, cen i złożoności wdrożenia.

IronPDF wyróżnia się intuicyjnym projektem API oraz kompletną konwersją HTML do PDF używającą silnika renderującego Chrome, podczas gdy ActivePDF dostarcza rozwiązań zorientowanych na przedsiębiorstwa poprzez wiele specjalistycznych komponentów, takich jak WebGrabber do konwersji HTML i DocConverter do transformacji dokumentów. Ten artykuł zawiera szczegółowe porównanie, które pomoże programistom podjąć świadomą decyzję dotyczącą ich potrzeb w zakresie przetwarzania plików PDF.

Przegląd porównania produktów
Porównanie IronPDF for .NET i ActivePDF dla programowania w .NET
Kategoria Funkcja/Aspekt IronPDF ActivePDF Kluczowa zaleta
Podstawowa architektura Filozofia projektowania Kompleksowa biblioteka, przyjazna dla programistów Komponenty modułowe, zorientowane na Enterprise IronPDF: Łatwiejsza integracja
Złożoność API Intuitive methods like `product__comprehensive`-comparison-table() Interfejsy API specyficzne dla komponentów IronPDF: Mniej linii kodu
Krzywa uczenia się Zazwyczaj 1–2 dni Zazwyczaj 1–2 tygodnie IronPDF: Szybsze wdrożenie
Obsługa platform Wielopłatformowe Windows, Linux, macOS, Docker Głównie Windows Server IronPDF: Prawdziwa wielopłatformowość
Wersje .NET .NET 10, 9, 8, 7, 6, 5, Core, Framework 4.6.2+ .NET Framework 4.5+, Core 1.0, Standard 1.0 IronPDF: Nowoczesna obsługa platformy .NET
Platformy chmurowe Zoptymalizowane pod kątem Azure, AWS, Google Cloud Ograniczona obsługa chmury IronPDF: Gotowość do pracy w chmurze
HTML do PDF Silnik renderujący Silnik Chrome V8 Silniki natywne i IE IronPDF: Nowoczesne renderowanie
Obsługa CSS3/HTML5 Pełne wsparcie Częściowe wsparcie IronPDF: Nowoczesne standardy internetowe
Wykonanie JavaScript Pełna obsługa JavaScript Ograniczona obsługa JavaScript IronPDF: Dynamiczna treść
Czcionki internetowe Czcionki Google, czcionki systemowe Tylko czcionki systemowe IronPDF: Elastyczność typograficzna
Konwersja dokumentów Obsługiwane formaty HTML, DOCX, obrazy, RTF, MD Ponad 300 formatów (`DocConverter`) ActivePDF: Więcej formatów
DOCX do PDF Wbudowany table-number Konwersja plików Office ActivePDF: Wyższa wierność
Przetwarzanie wsadowe Podejście programistyczne Obsługa obserwowanych folderów ActivePDF: Automatyzacja w Enterprise
Wydajność Szybkość renderowania HTML Szybkie i spójne w różnych typach treści Zmienna zależna od silnika IronPDF: Stała wydajność
Wykorzystanie pamięci Zazwyczaj poniżej 10 MB Koszty ogólne związane z usługami IronPDF: Mniejsze obciążenie systemu
Obsługa wątków Zoptymalizowane pod kątem natywnego async/await Usługa wielowątkowa IronPDF: Lepsza integracja z platformą .NET
Funkcje plików PDF Obsługa formularzy Tworzenie, wypełnianie i spłaszczanie formularzy Zaawansowane funkcje formularzy (Toolkit) ActivePDF: Złożone formularze
Zgodność z PDF/A Obsługa formatu PDF/A-3B Wiele poziomów PDF/A ActivePDF: Więcej opcji zgodności
Możliwości OCR Poprzez integrację z IronOCR Dedykowany komponent OCR Oba: Dostępne rozwiązania
Podpisy cyfrowe Zintegrowane, wizualne podpisy Zaawansowane opcje podpisów ActivePDF: Podpisy dla przedsiębiorstw
Doświadczenie programisty Dokumentacja Kompletne samouczki, przykłady Tradycyjna dokumentacja API IronPDF: Lepsze zasoby do nauki
Przykłady kodu Ponad 100 gotowych do uruchomienia przykładów Podstawowe przykłady na GitHub IronPDF: Rozległe zasoby
Komunikaty błędów Opisowe, działające Wiadomości na poziomie usługi IronPDF: Lepsze debugowanie
Licensing & Pricing Poziom początkowy Lite: $999 (1 deweloper, 1 projekt) `WebGrabber`: Skontaktuj się z ActivePDF/Apryse w celu uzyskania cen IronPDF: Przezroczyste, niższe ceny wejściowe
Licencja Team Professional: $2,999 (10 devs) Wymagane wiele komponentów IronPDF: Wszystko w jednym
Opcja Suite Iron Suite: $2,998 (10 products) Brak opcji suite IronPDF: Wyjątkowa wartość
Wsparcie Wsparcie techniczne w cenie Tak, wsparcie inżynierskie 24/5 Dostęp do portalu wsparcia IronPDF: Bezpośrednie wsparcie techniczne
Czas odpowiedzi 24-48 godzin typowo Różni się w zależności od problemu IronPDF: Przewidywalne SLA
Najlepsze dla Przykłady zastosowań Nowoczesne aplikacje internetowe, szybki rozwój Automatyzacja przedsiębiorstwa, systemy dziedziczone Zależy od kontekstu
Typy projektów SaaS, aplikacje webowe, mikrousługi Zarządzanie dokumentami, przetwarzanie wsadowe Na podstawie wymagań
Uwaga. Porównanie bazuje na aktualnych wersjach z kwietnia 2026. ActivePDF oferuje modułowe komponenty do specyficznych potrzeb przedsiębiorstw, podczas gdy IronPDF zapewnia zintegrowane rozwiązanie. Cena znacząco różni się w zależności od wyboru komponentów dla ActivePDF.

Porównaj IronPDF do komponentów ActivePDF

  • Pobierz bibliotekę IronPDF C# PDF
  • Porównaj funkcje IronPDF i ActivePDF
  • Porównaj kod dla konwersji URL do PDF
  • Porównaj kod dla konwersji stringów HTML do PDF
  • Porównaj licencjonowanie, opcje darmowego oprogramowania i więcej

Przegląd

Czym jest biblioteka IronPDF C#?

Iron Software jest wiodącym na rynku dostawcą komponentów, oferującym IronPDF do pełnej manipulacji PDF. IronPDF dostarcza kompleksowe rozwiązanie do generowania plików PDF z różnych formatów, umożliwiając pełną kontrolę programową nad właściwościami dokumentu. Programiści preferują IronPDF za jego spójne i niezawodne wyjście oraz intuicyjne API, które wymaga minimalnej ilości kodu, w szczególności przy pracy z nowoczesnymi standardami webowymi i frameworkami JavaScript.

IronPDF supports C#, VB.NET, ASP.NET, MVC, .NET Core, .NET 9, and .NET 10. It runs seamlessly on Windows, Linux, macOS, Docker, Azure, AWS, and other cloud platforms.

Czym są komponenty ActivePDF?

ActivePDF (obecnie część Apryse) dostarcza rozwiązania PDF zorientowane na przedsiębiorstwa przez wiele specjalistycznych komponentów. W przeciwieństwie do zintegrowanego podejścia IronPDF, ActivePDF oferuje oddzielne produkty do różnych zadań PDF, wymagając starannego rozważenia opcji licencji i strategii wdrożenia przedsiębiorstwa.

Czym jest ActivePDF WebGrabber do konwersji HTML do PDF?

ActivePDF WebGrabber jest specjalnie zaprojektowany do konwersji źródeł HTML (adresy URL, pliki HTML lub ciągi HTML) na format PDF. Dostarcza opcji konfiguracji dla właściwości strony, w tym nagłówków, stopek, marginesów, znaków wodnych i zakładek. WebGrabber obsługuje zarówno natywne, jak i Internet Explorer silniki renderujące.

Czym jest ActivePDF DocConverter do transformacji dokumentów?

ActivePDF DocConverter obsługuje konwersję ponad 300 formatów plików do PDF, w tym dokumentów Microsoft Office, obrazów, plików CAD i więcej. Posiada automatyzację obserwowanych folderów, możliwości przetwarzania wsadowego oraz funkcje zarządzania dokumentami na poziomie przedsiębiorstwa.

Jak nowoczesne frameworki CSS, takie jak Bootstrap, renderują się w PDF?

Współczesne aplikacje webowe coraz bardziej polegają na frameworkach CSS, takich jak Bootstrap, Foundation i Tailwind CSS, dla spójnego, responsywnego rozwoju UI. Biblioteki generowania PDF muszą dokładnie renderować te frameworki, aby utrzymać najwyższą jakość dokumentów i wierność projektowania. Zrozumienie, jak każda biblioteka obsługuje responsywną CSS i nowoczesne webowe fonty jest kluczowe przy wyborze odpowiedniego rozwiązania.

Jak IronPDF obsługuje wsparcie dla Bootstrap i nowoczesnych frameworków?

Silnik renderujący Chromium w IronPDF zapewnienia pełne wsparcie dla wszystkich nowoczesnych frameworków CSS i specyfikacji, zapewniając pixel-perfect rendering:

  • Bootstrap 5: Pełne renderowanie flexbox i CSS Grid z responsywnymi narzędziami
  • Bootstrap 4: Kompletny system kart, komponenty nawigacji i układy formularzy
  • Tailwind CSS: Wszystkie klasy utility-first oraz responsywne warianty renderują się poprawnie
  • Foundation: Pełne wsparcie dla gridów i systemów komponentów
  • Nowoczesny CSS3: Flexbox, CSS Grid, zmienne zwyczajowe, animacje, przejścia i transformacje
  • Wykonywanie JavaScript: Pełne wsparcie dla dynamicznej treści i interaktywności frameworku

Zweryfikowane na przykładach produkcyjnych: strona główna Bootstrap i szablony oficjalne konwertują się z dokładnością przeglądarki przy użyciu opcji renderowania IronPDF.

Przykład kodu: Tabela cenowa z Bootstrap

using IronPdf;

var renderer = new ChromePdfRenderer();

string bootstrapPricing = @"
<!DOCTYPE html>
<html>
<head>
    <link href='___PROTECTED_URL_198___ rel='stylesheet'>
</head>
<body>
    <div class='container my-5'>
        <h1 class='text-center mb-5'>Service Plans</h1>

        <div class='row g-4'>
            <div class='col-md-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-light text-center py-3'>
                        <h3>Starter</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$29</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 100 PDF conversions/month</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Basic templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Email support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 5 GB storage</li>
                            <li class='mb-2 text-muted'><i class='bi bi-x-circle'></i> Priority processing</li>
                        </ul>
                        <button class='btn btn-outline-primary w-100 mt-auto'>Get Started</button>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card h-100 shadow border-primary'>
                    <div class='position-absolute top-0 start-50 translate-middle'>
                        <span class='badge bg-primary'>Most Popular</span>
                    </div>
                    <div class='card-header bg-primary text-white text-center py-3'>
                        <h3>Professional</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$99</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 1,000 PDF conversions/month</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Premium templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Priority support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 50 GB storage</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Priority processing</li>
                        </ul>
                        <button class='btn btn-primary w-100 mt-auto'>Get Started</button>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-dark text-white text-center py-3'>
                        <h3>Enterprise</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$299</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Unlimited conversions</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Custom templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Dedicated support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Unlimited storage</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> SLA guarantee</li>
                        </ul>
                        <button class='btn btn-dark w-100 mt-auto'>Contact Sales</button>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapPricing);
pdf.SaveAs("pricing-table.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

string bootstrapPricing = @"
<!DOCTYPE html>
<html>
<head>
    <link href='___PROTECTED_URL_198___ rel='stylesheet'>
</head>
<body>
    <div class='container my-5'>
        <h1 class='text-center mb-5'>Service Plans</h1>

        <div class='row g-4'>
            <div class='col-md-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-light text-center py-3'>
                        <h3>Starter</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$29</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 100 PDF conversions/month</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Basic templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Email support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 5 GB storage</li>
                            <li class='mb-2 text-muted'><i class='bi bi-x-circle'></i> Priority processing</li>
                        </ul>
                        <button class='btn btn-outline-primary w-100 mt-auto'>Get Started</button>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card h-100 shadow border-primary'>
                    <div class='position-absolute top-0 start-50 translate-middle'>
                        <span class='badge bg-primary'>Most Popular</span>
                    </div>
                    <div class='card-header bg-primary text-white text-center py-3'>
                        <h3>Professional</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$99</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 1,000 PDF conversions/month</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Premium templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Priority support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 50 GB storage</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Priority processing</li>
                        </ul>
                        <button class='btn btn-primary w-100 mt-auto'>Get Started</button>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-dark text-white text-center py-3'>
                        <h3>Enterprise</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$299</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Unlimited conversions</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Custom templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Dedicated support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Unlimited storage</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> SLA guarantee</li>
                        </ul>
                        <button class='btn btn-dark w-100 mt-auto'>Contact Sales</button>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapPricing);
pdf.SaveAs("pricing-table.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

Dim bootstrapPricing As String = "
<!DOCTYPE html>
<html>
<head>
    <link href='___PROTECTED_URL_198___ rel='stylesheet'>
</head>
<body>
    <div class='container my-5'>
        <h1 class='text-center mb-5'>Service Plans</h1>

        <div class='row g-4'>
            <div class='col-md-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-light text-center py-3'>
                        <h3>Starter</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$29</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 100 PDF conversions/month</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Basic templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Email support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 5 GB storage</li>
                            <li class='mb-2 text-muted'><i class='bi bi-x-circle'></i> Priority processing</li>
                        </ul>
                        <button class='btn btn-outline-primary w-100 mt-auto'>Get Started</button>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card h-100 shadow border-primary'>
                    <div class='position-absolute top-0 start-50 translate-middle'>
                        <span class='badge bg-primary'>Most Popular</span>
                    </div>
                    <div class='card-header bg-primary text-white text-center py-3'>
                        <h3>Professional</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$99</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 1,000 PDF conversions/month</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Premium templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Priority support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> 50 GB storage</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Priority processing</li>
                        </ul>
                        <button class='btn btn-primary w-100 mt-auto'>Get Started</button>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-dark text-white text-center py-3'>
                        <h3>Enterprise</h3>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <div class='text-center mb-4'>
                            <span class='h2'>$299</span>
                            <span class='text-muted'>/month</span>
                        </div>
                        <ul class='list-unstyled flex-grow-1'>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Unlimited conversions</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Custom templates</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Dedicated support</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> Unlimited storage</li>
                            <li class='mb-2'><i class='bi bi-check-circle text-success'></i> SLA guarantee</li>
                        </ul>
                        <button class='btn btn-dark w-100 mt-auto'>Contact Sales</button>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>"

Dim pdf = renderer.RenderHtmlAsPdf(bootstrapPricing)
pdf.SaveAs("pricing-table.pdf")
$vbLabelText   $csharpLabel

Wynik: Profesjonalna tabela cenowa z siatką kart Bootstrap, układami flexbox, pozycjonowaniem odznak i responsywnymi narzędziami - wszystko dokładnie zachowane w PDF.

Jakie są ograniczenia ActivePDF WebGrabber z nowoczesnym wsparciem dla frameworków?

ActivePDF WebGrabber zapewnia konwersję HTML do PDF, ale korzysta ze starszych silników renderujących z istotnymi ograniczeniami dla nowoczesnych frameworków CSS:

  • Silnik Natywny: Niestandardowe renderowanie z ograniczonym wsparciem dla CSS3
  • Silnik Internet Explorer: Dziedziczne renderowanie IE, brak nowoczesnych funkcji CSS
  • Brak wsparcia dla Bootstrap 4/5: Funkcje Flexbox i CSS Grid nie są wspierane
  • Ograniczenia Bootstrap 3: Tylko układy oparte na tabelach działają niezawodnie
  • Ograniczenia JavaScript: Ograniczone wykonywanie JavaScript w porównaniu do nowoczesnych przeglądarek
  • Wymagane obejścia: Złożone komponenty Bootstrap wymagają znacznych modyfikacji CSS

Typowe problemy zgłaszane przez programistów:

  • Pasek nawigacyjny Bootstrap renderowany z problemami z układem
  • Komponenty kartowe z flexbox nie wyświetlają się poprawnie
  • Responsywne systemy gridów psują się w wyjściu PDF
  • Potrzeba uproszczenia lub przepisania komponentów Bootstrap dla kompatybilności

Wpływ na rozwój: Aplikacje zbudowane z nowoczesnymi wersjami Bootstrap (4+) wymagają znacznie większej pracy dodatkowej z ActivePDF WebGrabber. Zespoły muszą albo:

  1. Utrzymywać równoległe uproszczone CSS do generowania PDF (podwójne obciążenie związane z utrzymaniem)
  2. Ograniczać interfejs webowy do Bootstrap 3 lub starszych (poświęcając nowoczesne funkcje responsywne)
  3. Ręcznie testować i naprawiać każdy komponent Bootstrap (czasochłonne i podatne na błędy)

Dla projektów intensywnie korzystających z Bootstrap lub nowoczesnych frameworków CSS, ograniczenia renderowania ActivePDF WebGrabber mogą znacznie zwiększyć koszty rozwoju i zmniejszyć elastyczność projektowania. Rozważ użycie renderera Chrome IronPDF dla dokładnego renderowania Bootstrap.

W celu uzyskania pełnych wskazówek dotyczących kompatybilności z frameworkiem Bootstrap, zobacz poradnik Bootstrap & Flexbox CSS.

Dlaczego deweloperzy wybierają IronPDF zamiast ActivePDF?

IronPDF's szybkość renderowania dostarcza konsekwentną wydajność konwersji HTML do PDF w różnych typach treści. Zużycie pamięci biblioteki zostało zoptymalizowane pod kątem efektywności przy renderowaniu nagłówków i stopek.

Deweloperzy doceniają prostą projekt API IronPDF, który umożliwia generowanie PDF z trzema liniami kodu, w porównaniu do bardziej skomplikowanego, wieloetapowego procesu ActivePDF. Kompletna dokumentacja zawiera ponad 100 przykładów kodu oraz szczegółowe samouczki, ułatwiając zespołom szybkie rozpoczęcie pracy z funkcjami takimi jak asynchroniczne generowanie PDF i przetwarzanie wsadowe.

Kiedy ActivePDF może być lepszym wyborem?

ActivePDF wyróżnia się w środowiskach przedsiębiorstw wymagających:

Organizacje posiadające istniejącą infrastrukturę ActivePDF lub specyficzne wymagania dotyczące przepływu pracy w Enterprise mogą uznać modułowe podejście ActivePDF za korzystne, pomimo wyższych kosztów i większej złożoności w porównaniu z funkcjami IronPDF.


Porównanie

Jak wypada porównanie funkcji ActivePDF i IronPDF?

Która biblioteka oferuje lepsze możliwości konwersji HTML do PDF?

IronPDF używa pełnego silnika renderującego Chrome V8, dostarczając renderowania o wysokiej wierności przeglądarki z pełnym wsparciem dla HTML5, CSS3, JavaScript i webowych fontów. ActivePDF WebGrabber oferuje zarówno silniki natywne, jak i Internet Explorer, ale z ograniczonym wykonaniem JavaScript i wsparciem dla CSS3. Silnik Native nie obsługuje arkuszy stylów CSS, a silnik IE opiera się na przestarzałej przeglądarce Internet Explorer 11, która nie obsługuje nowoczesnych standardów internetowych, takich jak układy CSS Grid i flexbox.

Jak biblioteki wypadają w porównaniu pod względem obsługi formatów dokumentów?

Podczas gdy IronPDF koncentruje się na typowych formatach (HTML, DOCX, Obrazy, RTF, Markdown), ActivePDF DocConverter wspiera ponad 300 formatów plików, w tym pliki CAD, przestarzałe formaty dokumentów i specjalistyczne formaty przedsiębiorstw. To sprawia, że ActivePDF jest bardziej odpowiedni dla organizacji zajmujących się różnorodnymi typami dokumentów, chociaż funkcje konwersji IronPDF obejmują najczęściej używane formaty w nowoczesnych aplikacjach.

A co z funkcjami edycji plików PDF?

Obie biblioteki oferują pełne możliwości manipulacji plikami PDF:

IronPDF zapewnia:

ActivePDF oferuje:

  • Zaawansowana manipulacja polami formularzy (za pomocą Toolkit)
  • Bardziej szczegółowa kontrola nad wewnętrznymi elementami plików PDF
  • Funkcje redagowania na poziomie Enterprise
  • Różne poziomy zgodności z PDF/A
  • Specjalistyczne komponenty do konkretnych zadań

Krok 1: Instalacja

Jak zainstalować IronPDF?

Jakiej metody instalacji powinienem użyć dla IronPDF?

Programiści mogą zainstalować IronPDF na wiele sposobów, przy czym najwygodniejszym z nich jest menedżer pakietów NuGet:

Menedżer pakietów NuGet

Otwórz menedżera pakietów NuGet w Visual Studio i wyszukaj IronPDF:

:InstallCmd
:InstallCmd
SHELL

Pobierz plik IronPDF.dll ręcznie

Alternatywnie, pobierz IronPDF.dll i dodaj jego referencję do projektu używając metod instalacji ręcznej.

Po zainstalowaniu sprawdź dostęp, dodając:

using IronPdf;
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

IronPDF obsługuje .NET 9 i 10, a także wszystkie nowoczesne wersje .NET, w tym Core, Standard i Framework 4.6.2+. Aby uzyskać informacje na temat instalacji na konkretnych platformach, zapoznaj się z przewodnikami dla systemów Linux, macOS, Docker, Azure i AWS.


Jak zainstalować komponenty ActivePDF?

Jak zainstalować ActivePDF WebGrabber?

ActivePDF WebGrabber wymaga bardziej skomplikowanego procesu instalacji:

  1. Pobierz instalator ze strony ActivePDF
  2. Poproś o klucz licencyjny w dziale sprzedaży ActivePDF (dostępne są klucze ewaluacyjne)
  3. Uruchom instalator z uprawnieniami administratora
  4. Skonfiguruj usługę WebGrabber podczas instalacji
  5. W przypadku systemu Windows Server 2012+ należy utworzyć dedykowane konto użytkownika dla usługi

Po instalacji dodaj referencję WebGrabber z: C:\Program Files\ActivePDF\WebGrabber\bin\APWebGrabber.Net45.dll

Jak zainstalować ActivePDF DocConverter?

DocConverter podąża za podobnym wzorem instalacji:

  1. Pobierz instalator DocConverter
  2. Zainstaluj z uprawnieniami administratora
  3. Skonfiguruj obserwowane foldery, jeśli korzystasz z konwersji metodą "przeciągnij i upuść"
  4. Skonfiguruj menedżera konfiguracji do przetwarzania wsadowego

Uwaga: Komponenty ActivePDF wymagają systemu Windows Server i nie obsługują wdrażania międzyplatformowego, tak jak IronPDF. W przypadku nowoczesnych scenariuszy wdrażania warto rozważyć opcje kontenerowe IronPDF oraz obsługę natywną dla chmury.


Poradniki "Jak to zrobić"

Jak przekonwertować ciąg znaków HTML na plik PDF?

Porównajmy, jak obie biblioteki radzą sobie z typowym zadaniem: konwersją ciągu znaków HTML na plik PDF.

W jaki sposób IronPDF konwertuje ciągi znaków HTML na format PDF?

/**
 * HTML String to PDF
 * anchor-html-string-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // HTML Source
    string html = "<h1>Hello World!</h1> <h2>Welcome to IronPDF</h2> ";

    // Convert HTML string to PDF file
    var pdf = renderer.RenderHtmlAsPdf(html);

    // Save the file
    pdf.SaveAs("E:/sample.pdf");
}
/**
 * HTML String to PDF
 * anchor-html-string-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // HTML Source
    string html = "<h1>Hello World!</h1> <h2>Welcome to IronPDF</h2> ";

    // Convert HTML string to PDF file
    var pdf = renderer.RenderHtmlAsPdf(html);

    // Save the file
    pdf.SaveAs("E:/sample.pdf");
}
'''
''' * HTML String to PDF
''' * anchor-html-string-with-ironpdf
''' *
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	' Create rendering converter
	Dim renderer = New ChromePdfRenderer()

	' HTML Source
	Dim html As String = "<h1>Hello World!</h1> <h2>Welcome to IronPDF</h2> "

	' Convert HTML string to PDF file
	Dim pdf = renderer.RenderHtmlAsPdf(html)

	' Save the file
	pdf.SaveAs("E:/sample.pdf")
End Sub
$vbLabelText   $csharpLabel

Kluczowe zalety podejścia IronPDF:

  • Tylko 3 linijki kodu do konwersji
  • Automatyczna obsługa kodowania i renderowania
  • Wbudowany silnik Chrome zapewnia dokładne renderowanie
  • Nie ma potrzeby oddzielnej konfiguracji ścieżki i nazwy pliku

Jak ActivePDF WebGrabber konwertuje stringi HTML do PDF?

using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // HTML Source
    string html = "<h1>Hello World!</h1> <h2>Welcome to ActivePDF WebGrabber</h2>";

    // Assign source HTML to WebGrabber
    wg.CreateFromHTMLText = html;

    // Specify file directory
    wg.OutputDirectory = "E:/";

    // File name
    wg.NewDocumentName = "sample.pdf";

    // Convert source HTML to PDF file
    wg.ConvertToPDF();
}
using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // HTML Source
    string html = "<h1>Hello World!</h1> <h2>Welcome to ActivePDF WebGrabber</h2>";

    // Assign source HTML to WebGrabber
    wg.CreateFromHTMLText = html;

    // Specify file directory
    wg.OutputDirectory = "E:/";

    // File name
    wg.NewDocumentName = "sample.pdf";

    // Convert source HTML to PDF file
    wg.ConvertToPDF();
}
Imports APWebGrabber

Shared Sub Main(ByVal args() As String)
	' Instantiate Object
	Dim wg As New WebGrabber()

	' HTML Source
	Dim html As String = "<h1>Hello World!</h1> <h2>Welcome to ActivePDF WebGrabber</h2>"

	' Assign source HTML to WebGrabber
	wg.CreateFromHTMLText = html

	' Specify file directory
	wg.OutputDirectory = "E:/"

	' File name
	wg.NewDocumentName = "sample.pdf"

	' Convert source HTML to PDF file
	wg.ConvertToPDF()
End Sub
$vbLabelText   $csharpLabel

W jaki sposób obie biblioteki obsługują zaawansowany kod HTML ze stylami CSS?

Przykład pokazuje, w jaki sposób obie biblioteki obsługują bardziej złożony kod HTML ze stylami CSS:

Zaawansowany przykład IronPDF:

using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure rendering options
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string advancedHtml = @"
    <html>
    <head>
        <style>
            body { font-family: Arial, sans-serif; }
            .invoice { border: 1px solid #ccc; padding: 20px; }
            .header { background-color: #f0f0f0; padding: 10px; }
        </style>
    </head>
    <body>
        <div class='invoice'>
            <div class='header'>
                <h1>Invoice #12345</h1>
            </div>
            <form>
                <input type='text' name='customer' placeholder='Customer Name'>
            </form>
        </div>
    </body>
    </html>";

var pdf = renderer.RenderHtmlAsPdf(advancedHtml);
pdf.SaveAs("advanced-invoice.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure rendering options
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string advancedHtml = @"
    <html>
    <head>
        <style>
            body { font-family: Arial, sans-serif; }
            .invoice { border: 1px solid #ccc; padding: 20px; }
            .header { background-color: #f0f0f0; padding: 10px; }
        </style>
    </head>
    <body>
        <div class='invoice'>
            <div class='header'>
                <h1>Invoice #12345</h1>
            </div>
            <form>
                <input type='text' name='customer' placeholder='Customer Name'>
            </form>
        </div>
    </body>
    </html>";

var pdf = renderer.RenderHtmlAsPdf(advancedHtml);
pdf.SaveAs("advanced-invoice.pdf");
Imports IronPdf

Private renderer = New ChromePdfRenderer()

' Configure rendering options
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
renderer.RenderingOptions.PrintHtmlBackgrounds = True
renderer.RenderingOptions.CreatePdfFormsFromHtml = True

Dim advancedHtml As String = "
    <html>
    <head>
        <style>
            body { font-family: Arial, sans-serif; }
            .invoice { border: 1px solid #ccc; padding: 20px; }
            .header { background-color: #f0f0f0; padding: 10px; }
        </style>
    </head>
    <body>
        <div class='invoice'>
            <div class='header'>
                <h1>Invoice #12345</h1>
            </div>
            <form>
                <input type='text' name='customer' placeholder='Customer Name'>
            </form>
        </div>
    </body>
    </html>"

Dim pdf = renderer.RenderHtmlAsPdf(advancedHtml)
pdf.SaveAs("advanced-invoice.pdf")
$vbLabelText   $csharpLabel

Klasa ChromePdfRenderer zapewnia szeroką kontrolę nad procesem renderowania, w tym wybór typu media CSS, renderowanie tła i automatyczne tworzenie pól formularzy z elementów wejściowych HTML.


Jak przekonwertować plik HTML na plik PDF?

W jaki sposób IronPDF konwertuje pliki HTML do formatu PDF?

/**
 * HTML File to PDF
 * anchor-html-file-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // Render HTML file to PDF
    var pdf = renderer.RenderHtmlFileAsPdf("E:/myHtmlFile.html");

    // Save to target location
    pdf.SaveAs("E:/Sample.pdf");
}
/**
 * HTML File to PDF
 * anchor-html-file-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // Render HTML file to PDF
    var pdf = renderer.RenderHtmlFileAsPdf("E:/myHtmlFile.html");

    // Save to target location
    pdf.SaveAs("E:/Sample.pdf");
}
'''
''' * HTML File to PDF
''' * anchor-html-file-with-ironpdf
''' *
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	' Create rendering converter
	Dim renderer = New ChromePdfRenderer()

	' Render HTML file to PDF
	Dim pdf = renderer.RenderHtmlFileAsPdf("E:/myHtmlFile.html")

	' Save to target location
	pdf.SaveAs("E:/Sample.pdf")
End Sub
$vbLabelText   $csharpLabel

IronPDF automatycznie obsługuje:

Jak ActivePDF WebGrabber konwertuje pliki HTML do PDF?

using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // Specify file path to be converted
    wg.URL = "E:/myHtmlFile.html";

    // Specify the directory for newly generated file
    wg.OutputDirectory = "E:/";

    // Newly generated file name
    wg.NewDocumentName = "Sample.pdf";

    // Convert HTML file to PDF
    wg.ConvertToPDF();
}
using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // Specify file path to be converted
    wg.URL = "E:/myHtmlFile.html";

    // Specify the directory for newly generated file
    wg.OutputDirectory = "E:/";

    // Newly generated file name
    wg.NewDocumentName = "Sample.pdf";

    // Convert HTML file to PDF
    wg.ConvertToPDF();
}
Imports APWebGrabber

Shared Sub Main(ByVal args() As String)
	' Instantiate Object
	Dim wg As New WebGrabber()

	' Specify file path to be converted
	wg.URL = "E:/myHtmlFile.html"

	' Specify the directory for newly generated file
	wg.OutputDirectory = "E:/"

	' Newly generated file name
	wg.NewDocumentName = "Sample.pdf"

	' Convert HTML file to PDF
	wg.ConvertToPDF()
End Sub
$vbLabelText   $csharpLabel

Uwaga, że ActivePDF WebGrabber używa właściwości URL dla plików lokalnych, co może być mylące dla programistów oczekujących metody specyficznej dla pliku. Aby uzyskać bardziej intuicyjną obsługę plików, zapoznaj się z przewodnikiem IronPDF dotyczącym konwersji plików HTML.


Jak przekonwertować adres URL na plik PDF?

W jaki sposób IronPDF konwertuje adresy URL na pliki PDF?

/**
 * URL to PDF
 * anchor-url-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // Specify URL
    var pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_199___");

    // Save the file
    pdf.SaveAs("E:/Sample.pdf");
}
/**
 * URL to PDF
 * anchor-url-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var renderer = new ChromePdfRenderer();

    // Specify URL
    var pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_199___");

    // Save the file
    pdf.SaveAs("E:/Sample.pdf");
}
Imports IronPdf

Module Program
    Sub Main(args As String())
        ' Create rendering converter
        Dim renderer As New ChromePdfRenderer()

        ' Specify URL
        Dim pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_199___")

        ' Save the file
        pdf.SaveAs("E:/Sample.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

Jak obsłużyć asynchroniczną konwersję adresów URL za pomocą IronPDF?

IronPDF zapewnia doskonałą obsługę asynchroniczną, co przekłada się na lepszą wydajność:

using IronPdf;
using System.Threading.Tasks;

static async Task Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Configure for complex pages
    renderer.RenderingOptions.WaitFor.RenderDelay(2000); // Wait 2 seconds
    renderer.RenderingOptions.WaitFor.JavaScript(1500); // Wait for JS

    // Async conversion
    var pdf = await renderer.RenderUrlAsPdfAsync("___PROTECTED_URL_200___");
    await pdf.SaveAsAsync("E:/async-sample.pdf");
}
using IronPdf;
using System.Threading.Tasks;

static async Task Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Configure for complex pages
    renderer.RenderingOptions.WaitFor.RenderDelay(2000); // Wait 2 seconds
    renderer.RenderingOptions.WaitFor.JavaScript(1500); // Wait for JS

    // Async conversion
    var pdf = await renderer.RenderUrlAsPdfAsync("___PROTECTED_URL_200___");
    await pdf.SaveAsAsync("E:/async-sample.pdf");
}
Imports IronPdf
Imports System.Threading.Tasks

Module Program
    Async Function Main(args As String()) As Task
        Dim renderer = New ChromePdfRenderer()

        ' Configure for complex pages
        renderer.RenderingOptions.WaitFor.RenderDelay(2000) ' Wait 2 seconds
        renderer.RenderingOptions.WaitFor.JavaScript(1500) ' Wait for JS

        ' Async conversion
        Dim pdf = Await renderer.RenderUrlAsPdfAsync("___PROTECTED_URL_200___")
        Await pdf.SaveAsAsync("E:/async-sample.pdf")
    End Function
End Module
$vbLabelText   $csharpLabel

Klasa WaitFor zapewnia precyzyjną kontrolę nad czasem renderowania, co jest niezbędne w aplikacjach intensywnie wykorzystujących JavaScript. Programiści mogą oczekiwać na określone elementy, stany bezczynności sieci lub niestandardowe zdarzenia JavaScript, korzystając z modułów nasłuchujących komunikatów JavaScript.

Jak ActivePDF WebGrabber konwertuje URL do PDF?

using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // Specify URL 
    wg.URL = "___PROTECTED_URL_201___";

    // Specify the directory for newly generated file
    wg.OutputDirectory = "E:/";

    // Specify file name
    wg.NewDocumentName = "Sample.pdf";

    // Set timeout for conversion
    wg.TimeoutSpan = new TimeSpan(0, 0, 30);

    // Convert specified URL webpage to PDF
    wg.ConvertToPDF();
}
using APWebGrabber;

static void Main(string[] args)
{
    // Instantiate Object
    WebGrabber wg = new WebGrabber();

    // Specify URL 
    wg.URL = "___PROTECTED_URL_201___";

    // Specify the directory for newly generated file
    wg.OutputDirectory = "E:/";

    // Specify file name
    wg.NewDocumentName = "Sample.pdf";

    // Set timeout for conversion
    wg.TimeoutSpan = new TimeSpan(0, 0, 30);

    // Convert specified URL webpage to PDF
    wg.ConvertToPDF();
}
Imports APWebGrabber

Module Program
    Sub Main(args As String())
        ' Instantiate Object
        Dim wg As New WebGrabber()

        ' Specify URL 
        wg.URL = "___PROTECTED_URL_201___"

        ' Specify the directory for newly generated file
        wg.OutputDirectory = "E:/"

        ' Specify file name
        wg.NewDocumentName = "Sample.pdf"

        ' Set timeout for conversion
        wg.TimeoutSpan = New TimeSpan(0, 0, 30)

        ' Convert specified URL webpage to PDF
        wg.ConvertToPDF()
    End Sub
End Module
$vbLabelText   $csharpLabel

Więcej informacji na temat bardziej zaawansowanych scenariuszy konwersji adresów URL, w tym uwierzytelniania i niestandardowych nagłówków, można znaleźć w przewodniku IronPDF dotyczącym konwersji adresów URL do formatu PDF.


Jak utworzyć znak wodny w pliku PDF?

W jaki sposób IronPDF obsługuje znakowanie wodne?

IronPDF zapewnia elastyczne dodawanie znaków wodnych za pomocą HTML/CSS:

/**
 * Watermark PDF
 * anchor-watermark-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Source HTML string
    string html = "<h1 style='text-align:center'>WaterMark Example</h1>";

    // Create PDF
    var pdf = renderer.RenderHtmlAsPdf(html);

    // Apply watermark with HTML/CSS
    pdf.ApplyWatermark("<h2 style='color:red; opacity:0.5'>CONFIDENTIAL</h2>", 
        rotation: 30, 
        opacity: 50);

    // Save the document
    pdf.SaveAs("E:/Sample.pdf");
}
/**
 * Watermark PDF
 * anchor-watermark-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Source HTML string
    string html = "<h1 style='text-align:center'>WaterMark Example</h1>";

    // Create PDF
    var pdf = renderer.RenderHtmlAsPdf(html);

    // Apply watermark with HTML/CSS
    pdf.ApplyWatermark("<h2 style='color:red; opacity:0.5'>CONFIDENTIAL</h2>", 
        rotation: 30, 
        opacity: 50);

    // Save the document
    pdf.SaveAs("E:/Sample.pdf");
}
'''
''' * Watermark PDF
''' * anchor-watermark-with-ironpdf
''' *
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	Dim renderer = New ChromePdfRenderer()

	' Source HTML string
	Dim html As String = "<h1 style='text-align:center'>WaterMark Example</h1>"

	' Create PDF
	Dim pdf = renderer.RenderHtmlAsPdf(html)

	' Apply watermark with HTML/CSS
	pdf.ApplyWatermark("<h2 style='color:red; opacity:0.5'>CONFIDENTIAL</h2>", rotation:= 30, opacity:= 50)

	' Save the document
	pdf.SaveAs("E:/Sample.pdf")
End Sub
$vbLabelText   $csharpLabel

Zaawansowane znakowanie wodne za pomocą IronPDF:

// Image watermark
pdf.ApplyWatermark($@"<img src='logo.png' style='width:200px'>", 
    rotation: 0, 
    opacity: 30, 
    verticalAlignment: VerticalAlignment.Middle);

// Complex HTML watermark with positioning
string complexWatermark = @"
    <div style='text-align:center; font-family:Arial'>
        <h1 style='color:#ff0000'>DRAFT</h1>
        <p>Generated: " + DateTime.Now.ToString() + @"</p>
    </div>";

pdf.ApplyWatermark(complexWatermark, rotation: 45, opacity: 25);
// Image watermark
pdf.ApplyWatermark($@"<img src='logo.png' style='width:200px'>", 
    rotation: 0, 
    opacity: 30, 
    verticalAlignment: VerticalAlignment.Middle);

// Complex HTML watermark with positioning
string complexWatermark = @"
    <div style='text-align:center; font-family:Arial'>
        <h1 style='color:#ff0000'>DRAFT</h1>
        <p>Generated: " + DateTime.Now.ToString() + @"</p>
    </div>";

pdf.ApplyWatermark(complexWatermark, rotation: 45, opacity: 25);
' Image watermark
pdf.ApplyWatermark($"<img src='logo.png' style='width:200px'>", rotation:= 0, opacity:= 30, verticalAlignment:= VerticalAlignment.Middle)

' Complex HTML watermark with positioning
Dim complexWatermark As String = "
    <div style='text-align:center; font-family:Arial'>
        <h1 style='color:#ff0000'>DRAFT</h1>
        <p>Generated: " & DateTime.Now.ToString() & "</p>
    </div>"

pdf.ApplyWatermark(complexWatermark, rotation:= 45, opacity:= 25)
$vbLabelText   $csharpLabel

W jaki sposób ActivePDF tworzy znaki wodne?

ActivePDF wymaga użycia znaczników tekstowych jako rozwiązania alternatywnego:

using APWebGrabber;

static void Main(string[] args)
{
    WebGrabber wg = new WebGrabber();

    string html = "<h1 style='text-align:center'>WaterMark Example</h1>";
    wg.CreateFromHTMLText = html;

    // Add text stamp as watermark
    wg.AddStampText(270.0f, 350.0f, "WaterMark");

    // Configure stamp appearance
    wg.StampFontSize = 20;
    wg.StampFont = "Times New Roman";
    wg.StampFontTransparency = 1f;
    wg.StampRotation = 45.0f;
    wg.StampColorNET = new ADK.PDF.Color() 
    { 
        Red = 255, 
        Green = 0, 
        Blue = 0, 
        Gray = 0 
    };

    wg.OutputDirectory = "E:/";
    wg.NewDocumentName = "Sample.pdf";
    wg.ConvertToPDF();
}
using APWebGrabber;

static void Main(string[] args)
{
    WebGrabber wg = new WebGrabber();

    string html = "<h1 style='text-align:center'>WaterMark Example</h1>";
    wg.CreateFromHTMLText = html;

    // Add text stamp as watermark
    wg.AddStampText(270.0f, 350.0f, "WaterMark");

    // Configure stamp appearance
    wg.StampFontSize = 20;
    wg.StampFont = "Times New Roman";
    wg.StampFontTransparency = 1f;
    wg.StampRotation = 45.0f;
    wg.StampColorNET = new ADK.PDF.Color() 
    { 
        Red = 255, 
        Green = 0, 
        Blue = 0, 
        Gray = 0 
    };

    wg.OutputDirectory = "E:/";
    wg.NewDocumentName = "Sample.pdf";
    wg.ConvertToPDF();
}
Imports APWebGrabber

Shared Sub Main(ByVal args() As String)
	Dim wg As New WebGrabber()

	Dim html As String = "<h1 style='text-align:center'>WaterMark Example</h1>"
	wg.CreateFromHTMLText = html

	' Add text stamp as watermark
	wg.AddStampText(270.0F, 350.0F, "WaterMark")

	' Configure stamp appearance
	wg.StampFontSize = 20
	wg.StampFont = "Times New Roman"
	wg.StampFontTransparency = 1F
	wg.StampRotation = 45.0F
	wg.StampColorNET = New ADK.PDF.Color() With {
		.Red = 255,
		.Green = 0,
		.Blue = 0,
		.Gray = 0
	}

	wg.OutputDirectory = "E:/"
	wg.NewDocumentName = "Sample.pdf"
	wg.ConvertToPDF()
End Sub
$vbLabelText   $csharpLabel

Podejście ActivePDF ogranicza się do znaków wodnych zawierających wyłącznie tekst i wymaga ręcznego obliczania położenia. Aby uzyskać informacje na temat bardziej zaawansowanych funkcji znakowania wodnego, zapoznaj się z przykładami znaków wodnych IronPDF.


Jak ustawić nagłówki i stopki w plikach PDF?

W jaki sposób IronPDF dodaje nagłówki i stopki?

IronPDF oferuje zarówno proste nagłówki i stopki tekstowe, jak i złożone nagłówki i stopki HTML:

/**
 * Set Header Footers
 * anchor-headers-and-footers-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Configure text header/footer
    renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        LeftText = "Company Name",
        CenterText = "{page} of {total-pages}",
        RightText = "{date} {time}",
        DrawDividerLine = true,
        FontSize = 12,
        FontFamily = "Arial"
    };

    renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        CenterText = "Copyright © 2025",
        RightText = "Page {page}",
        FontSize = 10
    };

    // HTML content
    string html = "<h1>Document Content</h1><p>Lorem ipsum...</p>";
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("E:/document.pdf");
}
/**
 * Set Header Footers
 * anchor-headers-and-footers-with-ironpdf
 **/
using IronPdf;

static void Main(string[] args)
{
    var renderer = new ChromePdfRenderer();

    // Configure text header/footer
    renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        LeftText = "Company Name",
        CenterText = "{page} of {total-pages}",
        RightText = "{date} {time}",
        DrawDividerLine = true,
        FontSize = 12,
        FontFamily = "Arial"
    };

    renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        CenterText = "Copyright © 2025",
        RightText = "Page {page}",
        FontSize = 10
    };

    // HTML content
    string html = "<h1>Document Content</h1><p>Lorem ipsum...</p>";
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("E:/document.pdf");
}
'''
''' * Set Header Footers
''' * anchor-headers-and-footers-with-ironpdf
''' *
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	Dim renderer = New ChromePdfRenderer()

	' Configure text header/footer
	renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
		.LeftText = "Company Name",
		.CenterText = "{page} of {total-pages}",
		.RightText = "{date} {time}",
		.DrawDividerLine = True,
		.FontSize = 12,
		.FontFamily = "Arial"
	}

	renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
		.CenterText = "Copyright © 2025",
		.RightText = "Page {page}",
		.FontSize = 10
	}

	' HTML content
	Dim html As String = "<h1>Document Content</h1><p>Lorem ipsum...</p>"
	Dim pdf = renderer.RenderHtmlAsPdf(html)
	pdf.SaveAs("E:/document.pdf")
End Sub
$vbLabelText   $csharpLabel

W przypadku bardziej złożonych nagłówków/stopek wykorzystujących HTML:

// HTML headers with dynamic content
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = @"
        <div style='display: flex; justify-content: space-between; padding: 10px;'>
            <img src='logo.png' style='height: 30px;'>
            <div>{page} / {total-pages}</div>
        </div>",
    Height = 50
};
// HTML headers with dynamic content
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = @"
        <div style='display: flex; justify-content: space-between; padding: 10px;'>
            <img src='logo.png' style='height: 30px;'>
            <div>{page} / {total-pages}</div>
        </div>",
    Height = 50
};
' HTML headers with dynamic content
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
	.HtmlFragment = "
        <div style='display: flex; justify-content: space-between; padding: 10px;'>
            <img src='logo.png' style='height: 30px;'>
            <div>{page} / {total-pages}</div>
        </div>",
	.Height = 50
}
$vbLabelText   $csharpLabel

Wstępnie zdefiniowane pola scałania dostępne w IronPDF obejmują:

  • {page} - Aktualny numer strony
  • {total-pages} - Łączna liczba stron
  • {url} - Źródłowy URL (jeśli dotyczy)
  • {date} - Aktualna data
  • {time} - Aktualny czas
  • {html-title} - Tytuł z dokumentu HTML
  • {pdf-title} - Tytuł metadanych PDF

Jak ActivePDF WebGrabber ustawia nagłówki i stopki?

using APWebGrabber;

static void Main(string[] args)
{
    WebGrabber wg = new WebGrabber();

    string html = @"<h1 style='text-align:center;'>Page Content</h1>";
    wg.CreateFromHTMLText = html;

    // Configure header
    wg.HeaderHeight = 0.5f;
    wg.HeaderHTML = "<div style='float: left;'>Header Text</div>";
    wg.HeaderHTML += $"<div style='float: right;'>{DateTime.Now.ToShortDateString()}</div>";

    // Configure footer
    wg.FooterHeight = 0.5f;
    wg.FooterHTML = "<div style='text-align: right;'>%cp% of %tp%</div>";

    wg.OutputDirectory = "E:/";
    wg.NewDocumentName = "Sample.pdf";
    wg.ConvertToPDF();
}
using APWebGrabber;

static void Main(string[] args)
{
    WebGrabber wg = new WebGrabber();

    string html = @"<h1 style='text-align:center;'>Page Content</h1>";
    wg.CreateFromHTMLText = html;

    // Configure header
    wg.HeaderHeight = 0.5f;
    wg.HeaderHTML = "<div style='float: left;'>Header Text</div>";
    wg.HeaderHTML += $"<div style='float: right;'>{DateTime.Now.ToShortDateString()}</div>";

    // Configure footer
    wg.FooterHeight = 0.5f;
    wg.FooterHTML = "<div style='text-align: right;'>%cp% of %tp%</div>";

    wg.OutputDirectory = "E:/";
    wg.NewDocumentName = "Sample.pdf";
    wg.ConvertToPDF();
}
Imports APWebGrabber

Shared Sub Main(ByVal args() As String)
	Dim wg As New WebGrabber()

	Dim html As String = "<h1 style='text-align:center;'>Page Content</h1>"
	wg.CreateFromHTMLText = html

	' Configure header
	wg.HeaderHeight = 0.5F
	wg.HeaderHTML = "<div style='float: left;'>Header Text</div>"
	wg.HeaderHTML += $"<div style='float: right;'>{DateTime.Now.ToShortDateString()}</div>"

	' Configure footer
	wg.FooterHeight = 0.5F
	wg.FooterHTML = "<div style='text-align: right;'>%cp% of %tp%</div>"

	wg.OutputDirectory = "E:/"
	wg.NewDocumentName = "Sample.pdf"
	wg.ConvertToPDF()
End Sub
$vbLabelText   $csharpLabel

Uwaga: ActivePDF używa zastrzeżonych substytutów (%cp% dla aktualnej strony, %tp% dla łącznej liczby stron) i wymaga ręcznej konstrukcji HTML. Dla bardziej elastycznych opcji nagłówków/stopek, zobacz przewodnik po nagłówkach i stopkach IronPDF.


Jak porównywane są zaawansowane funkcje PDF?

Jak tworzę i manipuluję formularzami PDF?

Jak IronPDF obsługuje tworzenie formularzy?

using IronPdf;

// Create a PDF with form fields
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string formHtml = @"
    <form>
        <label>Name: <input type='text' name='fullname'></label><br>
        <label>Email: <input type='email' name='email'></label><br>
        <label>Subscribe: <input type='checkbox' name='subscribe'></label><br>
        <label>
            Plan:
            <select name='plan'>
                <option>Basic</option>
                <option>Premium</option>
            </select>
        </label>
    </form>";

var pdf = renderer.RenderHtmlAsPdf(formHtml);

// Fill form fields programmatically
pdf.Form.FindFormField("fullname").Value = "John Doe";
pdf.Form.FindFormField("email").Value = "john@example.com";
pdf.Form.FindFormField("subscribe").Value = "Yes";

pdf.SaveAs("filled-form.pdf");
using IronPdf;

// Create a PDF with form fields
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string formHtml = @"
    <form>
        <label>Name: <input type='text' name='fullname'></label><br>
        <label>Email: <input type='email' name='email'></label><br>
        <label>Subscribe: <input type='checkbox' name='subscribe'></label><br>
        <label>
            Plan:
            <select name='plan'>
                <option>Basic</option>
                <option>Premium</option>
            </select>
        </label>
    </form>";

var pdf = renderer.RenderHtmlAsPdf(formHtml);

// Fill form fields programmatically
pdf.Form.FindFormField("fullname").Value = "John Doe";
pdf.Form.FindFormField("email").Value = "john@example.com";
pdf.Form.FindFormField("subscribe").Value = "Yes";

pdf.SaveAs("filled-form.pdf");
Imports IronPdf

' Create a PDF with form fields
Private renderer = New ChromePdfRenderer()
renderer.RenderingOptions.CreatePdfFormsFromHtml = True

Dim formHtml As String = "
    <form>
        <label>Name: <input type='text' name='fullname'></label><br>
        <label>Email: <input type='email' name='email'></label><br>
        <label>Subscribe: <input type='checkbox' name='subscribe'></label><br>
        <label>
            Plan:
            <select name='plan'>
                <option>Basic</option>
                <option>Premium</option>
            </select>
        </label>
    </form>"

Dim pdf = renderer.RenderHtmlAsPdf(formHtml)

' Fill form fields programmatically
pdf.Form.FindFormField("fullname").Value = "John Doe"
pdf.Form.FindFormField("email").Value = "john@example.com"
pdf.Form.FindFormField("subscribe").Value = "Yes"

pdf.SaveAs("filled-form.pdf")
$vbLabelText   $csharpLabel

Dowiedz się więcej o tworzeniu formularzy PDF i edycji danych formularzy z IronPDF.

Jak ActivePDF Toolkit obsługuje formularze?

// ActivePDF requires separate Toolkit component for forms
APToolkitNET.Toolkit toolkit = new APToolkitNET.Toolkit();

// Open existing PDF
toolkit.OpenInputFile("form-template.pdf");

// Set form field values
toolkit.SetFormFieldData("fullname", "John Doe", -997);
toolkit.SetFormFieldData("email", "john@example.com", -997);

// Save filled form
toolkit.CopyForm(0, 0);
toolkit.SaveAs("filled-form.pdf");
// ActivePDF requires separate Toolkit component for forms
APToolkitNET.Toolkit toolkit = new APToolkitNET.Toolkit();

// Open existing PDF
toolkit.OpenInputFile("form-template.pdf");

// Set form field values
toolkit.SetFormFieldData("fullname", "John Doe", -997);
toolkit.SetFormFieldData("email", "john@example.com", -997);

// Save filled form
toolkit.CopyForm(0, 0);
toolkit.SaveAs("filled-form.pdf");
' ActivePDF requires separate Toolkit component for forms
Dim toolkit As New APToolkitNET.Toolkit()

' Open existing PDF
toolkit.OpenInputFile("form-template.pdf")

' Set form field values
toolkit.SetFormFieldData("fullname", "John Doe", -997)
toolkit.SetFormFieldData("email", "john@example.com", -997)

' Save filled form
toolkit.CopyForm(0, 0)
toolkit.SaveAs("filled-form.pdf")
$vbLabelText   $csharpLabel

Jak zapewnić zgodność z PDF/A?

Obie biblioteki wspierają PDF/A, ale za pomocą różnych podejść:

Jak utworzyć PDF/A z IronPDF?

using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Archival Document</h1>");

// Convert to PDF/A-3B
pdf.SaveAsPdfA("archive.pdf", PdfAVersions.PdfA3B);
using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Archival Document</h1>");

// Convert to PDF/A-3B
pdf.SaveAsPdfA("archive.pdf", PdfAVersions.PdfA3B);
Imports IronPdf

Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderHtmlAsPdf("<h1>Archival Document</h1>")

' Convert to PDF/A-3B
pdf.SaveAsPdfA("archive.pdf", PdfAVersions.PdfA3B)
$vbLabelText   $csharpLabel

IronPDF wspiera również PDF/A-3 z ZUGFeRD do fakturowania elektronicznego. Zobacz aktualizację etapów PDF/A dla więcej szczegółów.

Jak utworzyć PDF/A z ActivePDF DocConverter?

// Requires DocConverter component
DocConverter dc = new DocConverter();
dc.SetPDFACompliance(PDFACompliance.PDFA2B);
dc.ConvertToPDF("input.html", "output.pdf");
// Requires DocConverter component
DocConverter dc = new DocConverter();
dc.SetPDFACompliance(PDFACompliance.PDFA2B);
dc.ConvertToPDF("input.html", "output.pdf");
' Requires DocConverter component
Dim dc As New DocConverter()
dc.SetPDFACompliance(PDFACompliance.PDFA2B)
dc.ConvertToPDF("input.html", "output.pdf")
$vbLabelText   $csharpLabel

Jak dodaję podpisy cyfrowe do PDF?

Jak IronPDF obsługuje podpisy cyfrowe?

using IronPdf;
using IronPdf.Signing;

// Load or create PDF
var pdf = PdfDocument.FromFile("document.pdf");

// Create signature with certificate
var signature = new PdfSignature("certificate.pfx", "password");

// Configure signature appearance
signature.SignatureImage = new PdfSignatureImage("signature.png");
signature.SigningContact = "john@company.com";
signature.SigningReason = "Document Approval";

// Apply signature
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
using IronPdf;
using IronPdf.Signing;

// Load or create PDF
var pdf = PdfDocument.FromFile("document.pdf");

// Create signature with certificate
var signature = new PdfSignature("certificate.pfx", "password");

// Configure signature appearance
signature.SignatureImage = new PdfSignatureImage("signature.png");
signature.SigningContact = "john@company.com";
signature.SigningReason = "Document Approval";

// Apply signature
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
Imports IronPdf
Imports IronPdf.Signing

' Load or create PDF
Private pdf = PdfDocument.FromFile("document.pdf")

' Create signature with certificate
Private signature = New PdfSignature("certificate.pfx", "password")

' Configure signature appearance
signature.SignatureImage = New PdfSignatureImage("signature.png")
signature.SigningContact = "john@company.com"
signature.SigningReason = "Document Approval"

' Apply signature
pdf.Sign(signature)
pdf.SaveAs("signed.pdf")
$vbLabelText   $csharpLabel

Dla zaawansowanych scenariuszy podpisywania, zobacz przewodnik podpisywania IronPDF oraz podpisywanie z HSM.

Jak obsługuję przetwarzanie wsadowe?

Jak IronPDF obsługuje konwersje wsadowe?

using IronPdf;
using System.Threading.Tasks;
using System.IO;

static async Task BatchConvertAsync()
{
    var renderer = new ChromePdfRenderer();
    var tasks = new List<Task>();

    foreach (var file in Directory.GetFiles("input", "*.html"))
    {
        tasks.Add(Task.Run(async () =>
        {
            var pdf = await renderer.RenderHtmlFileAsPdfAsync(file);
            var outputPath = Path.Combine("output", 
                Path.GetFileNameWithoutExtension(file) + ".pdf");
            await pdf.SaveAsAsync(outputPath);
        }));
    }

    await Task.WhenAll(tasks);
}
using IronPdf;
using System.Threading.Tasks;
using System.IO;

static async Task BatchConvertAsync()
{
    var renderer = new ChromePdfRenderer();
    var tasks = new List<Task>();

    foreach (var file in Directory.GetFiles("input", "*.html"))
    {
        tasks.Add(Task.Run(async () =>
        {
            var pdf = await renderer.RenderHtmlFileAsPdfAsync(file);
            var outputPath = Path.Combine("output", 
                Path.GetFileNameWithoutExtension(file) + ".pdf");
            await pdf.SaveAsAsync(outputPath);
        }));
    }

    await Task.WhenAll(tasks);
}
Imports IronPdf
Imports System.Threading.Tasks
Imports System.IO

Shared Async Function BatchConvertAsync() As Task
	Dim renderer = New ChromePdfRenderer()
	Dim tasks = New List(Of Task)()

	For Each file In Directory.GetFiles("input", "*.html")
		tasks.Add(Task.Run(Async Function()
			Dim pdf = Await renderer.RenderHtmlFileAsPdfAsync(file)
			Dim outputPath = Path.Combine("output", Path.GetFileNameWithoutExtension(file) & ".pdf")
			Await pdf.SaveAsAsync(outputPath)
		End Function))
	Next file

	Await Task.WhenAll(tasks)
End Function
$vbLabelText   $csharpLabel

Zobacz poradnik asynchroniczny IronPDF oraz przykłady przetwarzania równoległego dla więcej technik przetwarzania wsadowego.

Jak ActivePDF DocConverter obsługuje przetwarzanie wsadowe?

// DocConverter supports watched folders for automatic conversion
DocConverter dc = new DocConverter();

// Configure watched folder
dc.AddWatchedFolder(@"C:\Input", @"C:\Output", "*.html");
dc.StartWatching();

// Files dropped in the input folder are automatically converted
// DocConverter supports watched folders for automatic conversion
DocConverter dc = new DocConverter();

// Configure watched folder
dc.AddWatchedFolder(@"C:\Input", @"C:\Output", "*.html");
dc.StartWatching();

// Files dropped in the input folder are automatically converted
' DocConverter supports watched folders for automatic conversion
Dim dc As New DocConverter()

' Configure watched folder
dc.AddWatchedFolder("C:\Input", "C:\Output", "*.html")
dc.StartWatching()

' Files dropped in the input folder are automatically converted
$vbLabelText   $csharpLabel

Jak porównywane są wydajność i zasoby?

Jak biblioteki porównują się pod względem wydajności?

Na podstawie testów porównawczych i rzeczywistego użytkowania:

Jakie są cechy wydajnościowe IronPDF?

  • Renderowanie HTML: Szybkie i spójne w prostych i złożonych treściach
  • Zużycie pamięci: Optymalizowane dla niskiego zużycia w typowych scenariuszach renderowania
  • Początkowy start: Inicjalizacja silnika Chrome dodaje jednorazowy koszt uruchomienia
  • Kolejne renderowania korzystają z rozgrzewki silnika

Dla szczegółowych wskazówek optymalizacyjnych dotyczących wydajności, zobacz przewodnik dotyczący wydajności IronPDF.

Jakie są cechy wydajnościowe ActivePDF?

  • Zmienna w zależności od wybranego silnika renderującego
  • Natywny silnik: Szybszy dla prostego HTML
  • Silnik IE: Wolniejszy, ale lepsza kompatybilność z zawartością starszego typu
  • Architektura oparta na usługach dodaje obciążenie
  • Lepiej przystosowany do scenariuszy przetwarzania wsadowego

Jakie są najlepsze praktyki zarządzania pamięcią?

Jak optymalizować pamięć przy użyciu IronPDF?

// Dispose of resources properly
using (var renderer = new ChromePdfRenderer())
{
    using (var pdf = renderer.RenderHtmlAsPdf(html))
    {
        pdf.SaveAs("output.pdf");
    }
}

// For large documents, use streaming
await pdf.Stream.CopyToAsync(fileStream);
// Dispose of resources properly
using (var renderer = new ChromePdfRenderer())
{
    using (var pdf = renderer.RenderHtmlAsPdf(html))
    {
        pdf.SaveAs("output.pdf");
    }
}

// For large documents, use streaming
await pdf.Stream.CopyToAsync(fileStream);
' Dispose of resources properly
Using renderer = New ChromePdfRenderer()
	Using pdf = renderer.RenderHtmlAsPdf(html)
		pdf.SaveAs("output.pdf")
	End Using
End Using

' For large documents, use streaming
Await pdf.Stream.CopyToAsync(fileStream)
$vbLabelText   $csharpLabel

Więcej strategii optymalizacji pamięci znajduje się w przewodniku zarządzania pamięcią IronPDF i przykładach strumieni pamięci PDF.

Jakie są kwestie dotyczące pamięci w ActivePDF?

  • Architektura oparta na usługach izoluje zużycie pamięci
  • Automatyczne czyszczenie pomiędzy konwersjami
  • Konfigurowanie limitów pamięci usług w Windows

Jakie komponenty ActivePDF są dostępne?

Jakie inne komponenty ActivePDF są dostępne?

Komponent Cel i funkcje
ActivePDF `DocConverter` Konwertuje ponad 300 typów plików do PDF. Funkcje obejmują obserwowane foldery, przetwarzanie wsadowe i automatyzację dla przedsiębiorstw.
ActivePDF `WebGrabber` Konwersja HTML do PDF z obsługą URL, plików i ciągów HTML. W zestawie natywne i IE silniki renderowania.
ActivePDF Toolkit Zaawansowana manipulacja PDF obejmująca formularze, adnotacje, bezpieczeństwo i niskopoziomowe operacje na PDF.
ActivePDF Server Rozwiązanie do drukowania serwerowego PDF dla środowisk sieciowych.
ActivePDF Meridian Sieciowa drukarka PDF do drukowania dokumentów do PDF bez opłat za użytkownika.
ActivePDF OCR Optyczne rozpoznawanie znaków do przeszukiwalnych zeskanowanych PDF-ów.
ActivePDF Xtractor Wyodrębnia tekst i obrazy z plików PDF do procesu przetwarzania danych.
ActivePDF Redactor Trwale usuwa poufne informacje z dokumentów PDF.

Zwróć uwagęWiele z tych komponentów wymaga osobnych licencji, co zwiększa całkowity koszt pełnej funkcjonalności PDF.


Jak porównują się licencje i ceny?

Jak porównują się koszty licencji między IronPDF a ActivePDF?

Jakie są opcje i ceny licencji IronPDF (stan na kwiecień 2026)?

  • Lite License: $999 (1 programista, 1 lokalizacja, 1 projekt)
  • Plus License: $1,499 (3 programiści, 3 lokalizacje, 3 projekty)
  • Professional License: $2,999 (10 programistów, 10 lokalizacji, 10 projektów)
  • Unlimited License: Niestandardowe ceny (nieograniczeni programiści/projekty)
  • Iron Suite: $2,998 (wszystkie 10 produktów Iron Software)

Wszystkie licencje zawierają 24/5 wsparcie techniczne, żywotność licencji oraz opcje rozszerzeń i aktualizacji.

  • WebGrabber: Ceny wymagają kontaktu z działem sprzedaży ActivePDF/Apryse
  • DocConverter: Ceny wymagają kontaktu z działem sprzedaży ActivePDF/Apryse
  • Toolkit: Ceny wymagają kontaktu z działem sprzedaży ActivePDF/Apryse
  • Support: Dodatkowa opłata za wsparcie premium
  • Multiple Komponents: Koszty szybko się sumują, gdy potrzeba wielu komponentów

Jaki jest całkowity koszt w porównaniu?

Mały zespół programistyczny (3 programiści) - Porównanie kosztów?

  • IronPDF Plus License: $1,499 (wszystkie funkcje w zestawie)
  • ActivePDF WebGrabber + DocConverter: Wymaga kontaktu z działem sprzedaży ActivePDF/Apryse w celu uzyskania cen
  • IronPDF zazwyczaj reprezentuje znaczące oszczędności w porównaniu do wdrożeń ActivePDF obejmujących wiele komponentów

Zespół Enterprise (10 programistów) - Porównanie kosztów?

  • IronPDF Professional: $2,999 (wszystkie funkcje)
  • ActivePDF Suite (wiele komponentów): Wymaga kontaktu z działem sprzedaży ActivePDF/Apryse w celu uzyskania cen
  • Kompleksowe ceny IronPDF eliminują gromadzenie się kosztów licencji na wiele odrębnych komponentów

Dla szczegółowego porównania cen z innymi konkurentami, zobacz IronPDF vs Aspose, IronPDF vs iText i IronPDF vs Syncfusion.


Która biblioteka oferuje lepsze wsparcie programistyczne?

Która biblioteka oferuje lepsze wsparcie programistyczne?

Jakie wsparcie oferuje IronPDF?

Dla najlepszych praktyk wsparcia, patrz jak złożyć wniosek o wsparcie techniczne i jak uzyskać najlepsze wsparcie.

Jakie wsparcie zapewnia ActivePDF?

  • Dostęp do portalu wsparcia
  • Artykuły z bazy wiedzy
  • Fora społecznościowe
  • Premiun wsparcie dostępne za dodatkową opłatą
  • Dokumentacja dla starszych wersji

Wniosek: Którą bibliotekę PDF wybrać?

Kiedy wybrać IronPDF:

  • Nowoczesne rozwój na .NET: Pełne wsparcie dla .NET 9/10 i wdrożeń międzyplatformowych
  • Szybki rozwój: Intuicyjny API wymaga minimalnej ilości kodu
  • Aplikacje internetowe: Wiodące renderowanie HTML/CSS/JavaScript z silnikiem Chrome
  • Wdrożenie w chmurze: Optymalizowane dla Azure, AWS i środowisk kontenerowych
  • Świadomość budżetowa: Niższy koszt początkowy z wszystkimi funkcjami w zestawie
  • Krzywa nauki: Szczegółowa dokumentacja i przykłady dla szybkiego wdrożenia

Kiedy wybrać ActivePDF:

  • Systemy legacy: Istniejąca infrastruktura ActivePDF lub środowiska Windows Server
  • Różnorodne formaty plików: Konieczność konwersji ponad 300 typów plików do PDF
  • Przepływy pracy korporacyjne: Obserwowane foldery i zautomatyzowane przetwarzanie wsadowe
  • Zaawansowane formularze: Złożone formularze XFA lub specjalistyczne wymagania dotyczące formularzy
  • Wymagania dotyczące zgodności: Wiele poziomów PDF/A dla specyficznych branż

Ostateczna rekomendacja

Dla większości nowoczesnych scenariuszy rozwoju na .NET, IronPDF oferuje najlepsze połączenie funkcji, wydajności i wartości. Jego intuicyjne API, kompletna dokumentacja i przejrzysta polityka cenowa czynią go idealnym rozwiązaniem dla zespołów poszukujących szybkiego i efektywnego wdrożenia funkcjonalności PDF.

ActivePDF nadal jest wartościowym wyborem dla przedsiębiorstw o konkretnych wymaganiach dotyczących obsługi formatów plików, integracji systemów legacy czy istniejącej infrastruktury ActivePDF. Jednak model cenowy oparty na modułach i skomplikowany proces instalacji może stanowić wyzwanie dla mniejszych zespołów lub nowych projektów.

Gotowy, aby rozpocząć?

Rozpocznij używanie IronPDF w swoim projekcie już dziś dzięki darmowej wersji próbnej.

Pierwszy krok:
green arrow pointer

Zwróć uwagęActivePDF to zarejestrowany znak towarowy swojego właściciela. Ta strona nie jest powiązana, autoryzowana ani sponsorowana przez ActivePDF. 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.

Często Zadawane Pytania

Jak wypada porównanie IronPDF i ActivePDF pod względem generowania plików PDF w środowisku .NET?

IronPDF oferuje usprawnione podejście do generowania plików PDF dzięki silnikowi renderującemu opartemu na przeglądarce Chrome oraz intuicyjnym interfejsom API, obsługującym nowoczesne wersje .NET, w tym .NET 9 i 10. ActivePDF zapewnia modułowe komponenty, takie jak WebGrabber i DocConverter, przeznaczone do zastosowań Enterprise, ale wymaga większej konfiguracji.

Jak mogę przekonwertować HTML na PDF za pomocą C#?

Możesz użyć metody RenderHtmlAsPdf biblioteki IronPDF, aby szybko konwertować ciągi HTML na pliki PDF. Do konwersji plików służy metoda RenderHtmlFileAsPdf. Obie metody zapewniają wysoką wierność dzięki obsłudze CSS3 i JavaScript.

Jakie są wyniki testów wydajnościowych IronPDF?

IronPDF zapewnia szybkie renderowanie HTML do PDF, wykonując zadania w czasie około 125–835 ms przy zużyciu pamięci poniżej 10 MB. Oferuje również znaczną poprawę w zakresie pamięci i przetwarzania nagłówków i stopek.

Czy mogę zautomatyzować przetwarzanie plików PDF w trybie wsadowym za pomocą IronPDF?

Tak, IronPDF obsługuje przetwarzanie wsadowe za pomocą wzorców async/await, co pozwala na jednoczesną obsługę wielu konwersji plików PDF przy użyciu metod takich jak RenderHtmlFileAsPdfAsync.

W jaki sposób IronPDF obsługuje podpisy cyfrowe w plikach PDF?

IronPDF udostępnia klasę PdfSignature do dodawania podpisów cyfrowych do dokumentów PDF. Obsługuje ona podpisywanie oparte na certyfikatach i umożliwia dostosowanie wyglądu podpisu oraz metadanych.

Jakie są kwestie związane z kosztami korzystania z IronPDF w programowaniu .NET?

Ceny licencji IronPDF zaczynają się od 749 USD dla pojedynczych programistów i obejmują wszystkie funkcje. Dla porównania, komponenty ActivePDF są wyceniane osobno, co prowadzi do wyższych kosztów całkowitych za podobne funkcje.

W jaki sposób IronPDF zapewnia kompatybilność między platformami?

IronPDF obsługuje wdrażanie na wielu platformach, w tym w środowiskach Windows, Linux, macOS i Docker, dzięki czemu nadaje się do różnorodnych potrzeb programistycznych i aplikacji opartych na chmurze.

Jak mogę dodać nagłówki i stopki do plików PDF za pomocą IronPDF?

IronPDF udostępnia klasy TextHeaderFooter i HtmlHeaderFooter, które pozwalają dodawać nagłówki i stopki zarówno z prostym tekstem, jak i złożonymi układami HTML/CSS.

Jak dobrze IronPDF integruje się z nowoczesnymi wersjami .NET?

IronPDF w pełni obsługuje nowoczesne wersje .NET, w tym .NET 9 i 10, a także .NET Core, .NET Standard i .NET Framework 4.6.2+, zapewniając szeroką kompatybilność i przyszłościowe rozwiązania.

Czy podczas konwersji do formatu PDF obsługiwane jest wykonywanie kodu JavaScript?

Tak, IronPDF w pełni wykonuje kod JavaScript przed renderowaniem plików PDF, oferując opcje kontroli czasu za pomocą funkcji WaitFor.JavaScript() i RenderDelay(), co zapewnia kompletne i dokładne konwersje.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczą...

Czytaj więcej

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie