ActivePDF vs IronPDF: Tutorial HTML do PDF i kompleksowe porównanie
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ę intuicyjną konstrukcją API i pełną konwersją HTML do PDF przy użyciu silnika renderującego Chrome, podczas gdy ActivePDF zapewnia rozwiązania dla przedsiębiorstw poprzez wiele wyspecjalizowanych 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.
| Kategoria | Funkcja/Aspekt | IronPDF | ActivePDF | Kluczowa zaleta |
|---|---|---|---|---|
| Podstawowa architektura | Design Philosophy | Kompleksowa biblioteka, przyjazna dla programistów | Komponenty modułowe, zorientowane na Enterprise | IronPDF: Łatwiejsza integracja |
| Złożoność API | Intuitive methods like `RenderHtmlAsPdf`() |
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 | Wieloplatformowe | Windows, Linux, macOS, Docker | Głównie Windows Server | IronPDF: Prawdziwa wieloplatformowość |
| 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 | 300+ formats (`DocConverter`) | ActivePDF: Więcej formatów |
| DOCX do PDF | Built-in `DocxToPdfRenderer` |
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 | 125 ms (typowo), 835 ms (złożone) | 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 | Dedicated OCR component | Both: Available solutions | |
| Podpisy cyfrowe | Integrated, visual signatures | Advanced signature options | ActivePDF: Enterprise signatures | |
| Doświadczenie programisty | Dokumentacja | Complete tutorials, examples | Traditional API docs | IronPDF: Better learning resources |
| Przykłady kodu | 100+ ready-to-run samples | Basic examples on GitHub | IronPDF: Extensive resources | |
| Komunikaty błędów | Descriptive, actionable | Service-level messages | IronPDF: Better debugging | |
| Licensing & Pricing | Entry Level | Lite: $799 (1 dev, 1 project) | `WebGrabber`: $2,499+ per component | IronPDF: 70% lower entry |
| Team License | Professional: $2,399 (10 devs) | Multiple components needed | IronPDF: All-inclusive | |
| Suite Option | Iron Suite: $1,498 (9 products) | No suite option | IronPDF: Exceptional value | |
| Wsparcie | Wsparcie techniczne w cenie | Yes, 24/5 engineering support | Support portal access | IronPDF: Direct engineering support |
| Czas odpowiedzi | 24-48 hours typical | Varies by issue | IronPDF: Predictable SLA | |
| Najlepsze dla | Przykłady zastosowań | Modern web apps, rapid development | Enterprise automation, legacy systems | Context-dependent |
| Project Types | SaaS, web apps, microservices | Document management, batch processing | Based on requirements |
Przegląd
What is the IronPDF C# Library?
Iron Software is a market-leading component provider offering IronPDF for complete PDF manipulation. IronPDF provides an all-inclusive solution for generating PDF files from various formats while offering complete programmatic control over document properties. Developers favor IronPDF for its consistent, reliable output and intuitive API that requires minimal code, especially when working with modern web standards and JavaScript frameworks.
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.
What are ActivePDF Components?
ActivePDF (now part of Apryse) provides enterprise-focused PDF solutions through multiple specialized components. Unlike IronPDF's unified approach, ActivePDF offers separate products for different PDF tasks, requiring careful consideration of licensing options and enterprise deployment strategies.
What is ActivePDF WebGrabber for HTML to PDF Conversion?
ActivePDF WebGrabber is specifically designed to convert HTML sources (URLs, HTML files, or HTML strings) to PDF format. It provides configuration options for page properties including headers, footers, margins, watermarks, and bookmarks. WebGrabber supports both Native and Internet Explorer rendering engines.
What is ActivePDF DocConverter for Document Transformation?
ActivePDF DocConverter handles conversion of over 300 file formats to PDF, including Microsoft Office documents, images, CAD files, and more. It features watched folder automation, batch processing capabilities, and enterprise-grade document management features.
How do Modern CSS Frameworks Like Bootstrap Render in PDF?
Contemporary web applications increasingly depend on CSS frameworks like Bootstrap, Foundation, and Tailwind CSS for consistent, responsive UI development. PDF generation libraries must accurately render these frameworks to maintain professional document quality and design fidelity. Understanding how each library handles responsive CSS and modern web fonts is crucial for selecting the right solution.
How Does IronPDF Handle Bootstrap and Modern Framework Support?
IronPDF's Chromium rendering engine ensures complete support for all modern CSS frameworks and specifications, delivering pixel-perfect rendering:
- Bootstrap 5: Full flexbox and CSS Grid rendering with responsive utilities
- Bootstrap 4: Complete card systems, navigation components, and form layouts
- Tailwind CSS: All utility-first classes and responsive variants render correctly
- Foundation: Complete grid and component system support
- Modern CSS3: Flexbox, CSS Grid, custom properties, animations, transitions, and transforms
- Wykonanie JavaScript: Pełne wsparcie for dynamic content and framework interactivity
Validated with production examples: Bootstrap homepage and official templates convert with browser-accurate fidelity using IronPDF's rendering options.
Code Example: Service Pricing Table with 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")
Output: A professional pricing table with Bootstrap's card grid, flexbox layouts, badge positioning, and responsive utilities—all accurately preserved in the PDF.
What are ActivePDF WebGrabber's Limitations with Modern Framework Support?
ActivePDF WebGrabber provides HTML-to-PDF conversion but uses older rendering engines with significant limitations for modern CSS frameworks:
- Native Engine: Custom rendering with limited CSS3 support
- Internet Explorer Engine: Legacy IE rendering, no modern CSS features
- No Bootstrap 4/5 Support: Flexbox and CSS Grid features not supported
- Bootstrap 3 Limitations: Only table-based layouts work reliably
- JavaScript Limitations: Limited JavaScript execution compared to modern browsers
- Workarounds Required: Complex Bootstrap components need significant CSS modifications
Common issues reported by developers:
- Bootstrap navigation bars rendering with layout problems
- Card components with flexbox not displaying correctly
- Responsive grid systems breaking in PDF output
- Need to simplify or rewrite Bootstrap components for compatibility
Development impact: Applications built with modern Bootstrap versions (4+) require substantial additional work with ActivePDF WebGrabber. Teams must either:
- Maintain parallel simplified CSS for PDF generation (double maintenance burden)
- Limit web UI to Bootstrap 3 or older (sacrifices modern responsive features)
- Manually test and fix each Bootstrap component (time-consuming and error-prone)
For projects heavily invested in Bootstrap or modern CSS frameworks, ActivePDF WebGrabber's rendering limitations can significantly increase development costs and reduce design flexibility. Consider using IronPDF's Chrome renderer for accurate Bootstrap rendering.
For complete Bootstrap framework compatibility guidance, see the Bootstrap & Flexbox CSS Guide.
Why do developers choose IronPDF over ActivePDF?
IronPDF's rendering speed completes HTML-to-PDF conversion in 835 milliseconds for static sites, offering consistent performance across different content types. The library's memory usage has been optimized to use less than 10MB typically, with 75% reduction in memory usage when rendering headers and footers.
Developers appreciate IronPDF's straightforward API design that enables PDF generation with improve three lines of code, compared to ActivePDF's more complex multi-step process. The complete documentation includes over 100 code examples and detailed tutorials, making it easier for teams to get started quickly with features like async PDF generation and batch processing.
When might ActivePDF be the better choice?
ActivePDF excels in enterprise environments requiring:
- Automated batch processing with watched folders
- Support for 300+ file format conversions (via
DocConverter) - Integracja starszych systemów w środowisku Windows Server
- Zaawansowana obsługa pól formularzy i obsługa formularzy XFA
- Wiele poziomów zgodności z PDF/A dla potrzeb archiwizacji
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 wykorzystuje pełny silnik renderujący Chrome V8, zapewniający ponad 98% wierności przeglądarki oraz pełną obsługę HTML5, CSS3, JavaScript i czcionek internetowych. ActivePDF WebGrabber oferuje zarówno silniki natywne, jak i oparte na przeglądarce Internet Explorer, ale z ograniczonym wykonywaniem kodu JavaScript i obsługą 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 popularnych formatach (HTML, DOCX, obrazy, RTF, Markdown), ActivePDF DocConverter obsługuje ponad 300 formatów plików, w tym pliki CAD, starsze formaty dokumentów oraz specjalistyczne formaty Enterprise. 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:
- Wbudowana funkcja znakowania wodnego ze stylizacją HTML/CSS
- Proste API do obsługi nagłówków/stopek z predefiniowanymi polami scalania
- Jednowierszowe metody do typowych zadań
- Zintegrowane tworzenie i wypełnianie formularzy
- Podpisy cyfrowe z wizualną reprezentacją
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
Pobierz plik IronPDF.dll ręcznie
Alternatywnie można pobrać plik IronPDF.dll i dodać do niego odwołanie w projekcie, korzystając z metod instalacji ręcznej.
Po zainstalowaniu sprawdź dostęp, dodając:
using IronPdf;
using IronPdf;
Imports IronPdf
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 złożonego procesu instalacji:
- Pobierz instalator ze strony ActivePDF
- Poproś o klucz licencyjny w dziale sprzedaży ActivePDF (dostępne są klucze ewaluacyjne)
- Uruchom instalator z uprawnieniami administratora
- Skonfiguruj usługę
WebGrabberpodczas instalacji - W przypadku systemu Windows Server 2012+ należy utworzyć dedykowane konto użytkownika dla usługi
Po instalacji dodaj odwołanie WebGrabber z:
C:\Program Files\ActivePDF\WebGrabber\bin\APWebGrabber.Net45.dll
Jak zainstalować ActivePDF DocConverter?
DocConverter ma podobny schemat instalacji:
- Pobierz instalator
DocConverter - Zainstaluj z uprawnieniami administratora
- Skonfiguruj obserwowane foldery, jeśli korzystasz z konwersji metodą "przeciągnij i upuść"
- 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
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
W jaki sposób ActivePDF WebGrabber konwertuje ciągi znaków HTML na format 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
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")
Klasa ChromePdfRenderer zapewnia szeroki zakres kontroli nad procesem renderowania, w tym wybór typu mediów CSS, renderowanie tła oraz automatyczne tworzenie pól formularzy na podstawie 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
IronPDF automatycznie obsługuje:
W jaki sposób ActivePDF WebGrabber konwertuje pliki HTML do formatu 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
Należy pamiętać, ż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
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
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.
W jaki sposób ActivePDF WebGrabber konwertuje adresy URL na pliki 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
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
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)
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
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
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
}
Wstępnie zdefiniowane pola scalania dostępne w IronPDF obejmują:
{page}- Numer bieżącej strony{total-pages}- Łączna liczba stron{url}- Source URL (if applicable){date}- Current date{time}- Current time{html-title}- Title from HTML document{pdf-title}- PDF metadata title
How does ActivePDF WebGrabber set headers and footers?
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
Note: ActivePDF uses proprietary placeholders (%cp% for current page, %tp% for total pages) and requires manual HTML construction. For more flexible header/footer options, see IronPDF's header and footer guide.
How Do Advanced PDF Features Compare?
How do I create and manipulate PDF forms?
How does IronPDF handle form creation?
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")
Learn more about creating PDF forms and editing form data with IronPDF.
How does ActivePDF Toolkit handle forms?
// 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")
How do I ensure PDF/A compliance?
Both libraries support PDF/A, but with different approaches:
How to create PDF/A with 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)
IronPDF also supports PDF/A-3 with ZUGFeRD for electronic invoicing. See the PDF/A milestone update for more details.
How to create PDF/A with 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")
How do I add digital signatures to PDFs?
How does IronPDF handle digital signatures?
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")
For advanced signing scenarios, see IronPDF's signing guide and signing with HSM.
How do I handle batch processing?
How does IronPDF handle batch conversions?
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
See IronPDF's async guide and parallel processing examples for more batch processing techniques.
How does ActivePDF DocConverter handle batch processing?
// 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
How Do Performance and Resources Compare?
How do the libraries compare in terms of performance?
Based on benchmark testing and real-world usage:
What are IronPDF's performance metrics?
- HTML rendering: ~125ms for simple content
- Complex sites: 835ms (tested on static websites)
- Memory usage: Zazwyczaj poniżej 10 MB
- Initial startup: 2-3 seconds (Chrome engine initialization)
- 75% reduction in memory usage for headers/footers
- 80% reduction in loading time for large documents
For detailed performance optimization tips, see IronPDF's performance guide.
What are ActivePDF's performance characteristics?
- Variable based on rendering engine selected
- Native engine: Faster for simple HTML
- IE engine: Slower but better compatibility with legacy content
- Service-based architecture adds overhead
- Better suited for batch processing scenarios
What are the memory management best practices?
How to optimize memory with 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)
For more memory optimization strategies, see IronPDF's memory management guide and PDF memory stream examples.
What are ActivePDF memory considerations?
- Service-based architecture isolates memory usage
- Automatic cleanup between conversions
- Configure service memory limits in Windows
What ActivePDF Components Are Available?
What other ActivePDF components are available?
| Component | Purpose & Features |
|---|---|
| ActivePDF `DocConverter` | Converts 300+ file types to PDF. Features watched folders, batch processing, and enterprise automation. |
| ActivePDF `WebGrabber` | HTML to PDF conversion with support for URLs, files, and HTML strings. Includes Native and IE rendering engines. |
| ActivePDF Toolkit | Advanced PDF manipulation including forms, annotations, security, and low-level PDF operations. |
| ActivePDF Server | Server-based PDF printing solution for network environments. |
| ActivePDF Meridian | Network PDF printer for printing documents to PDF without per-user fees. |
| ActivePDF OCR | Optical Character Recognition for making scanned PDFs searchable. |
| ActivePDF Xtractor | Extracts text and images from PDF files for data processing. |
| ActivePDF Redactor | Permanently removes sensitive information from PDF documents. |
How Do Licensing and Pricing Compare?
How do licensing costs compare between IronPDF and ActivePDF?
What are IronPDF's licensing options and pricing (as of 2025)?
- Lite License: $799 (1 developer, 1 location, 1 project)
- Plus License: $1,199 (3 developers, 3 locations, 3 projects)
- Professional License: $2,399 (10 developers, 10 locations, 10 projects)
- Unlimited License: Custom pricing (unlimited developers/projects)
- Iron Suite: $1,498 (all 10 Iron Software products)
All licenses include 24/5 engineering support, lifetime license validity, and options for extensions and upgrades.
- WebGrabber: Starting at $2,499 (one-time payment)
- DocConverter: Starting at $2,999 (one-time payment)
- Toolkit: Starting at $1,500+ (varies by features)
- Support: Additional cost for premium support
- Multiple Components: Costs add up quickly
What is the total cost comparison?
Small Development Team (3 developers) - Cost Porównanie?
- IronPDF Plus License: $1,499 (all features included)
- ActivePDF
WebGrabber+DocConverter: $5,498 minimum - Savings with IronPDF: 73%
Enterprise Team (10 developers) - Cost Porównanie?
- IronPDF Professional: $2,999 (all features)
- ActivePDF Suite (multiple components): $10,000+
- Savings with IronPDF: 70%+
For detailed pricing comparisons with other competitors, see IronPDF vs Aspose, IronPDF vs iText, and IronPDF vs Syncfusion.
Which Library Offers Better Developer Support?
Which library offers better developer support?
What support does IronPDF offer?
- 24/5 engineering support included with all licenses
- Direct access to development team
- Complete documentation with 100+ examples
- Active community and forums
- Regular updates and improvements
- Response time: 24-48 hours typical
For support best practices, see how to make an engineering support request and getting the best support.
What support does ActivePDF provide?
- Support portal access
- Knowledge base articles
- Community forums
- Premium support available at additional cost
- Legacy documentation for older versions
Conclusion: Which PDF library should you choose?
When to Choose IronPDF:
- Modern .NET Development: Pełne wsparcie for .NET 9/10 and cross-platform deployment
- Rapid Development: Intuitive API requires minimal code
- Web Applications: Superior HTML/CSS/JavaScript rendering with Chrome engine
- Cloud Deployment: Optimized for Azure, AWS, and containerized environments
- Budget Conscious: Lower entry cost with all features included
- Krzywa uczenia się: Extensive documentation and examples for quick adoption
When to Choose ActivePDF:
- Legacy Systems: Existing ActivePDF infrastructure or Windows Server environments
- Diverse File Formats: Need to convert 300+ file types to PDF
- Enterprise Workflows: Watched folders and automated batch processing
- Advanced Forms: Complex XFA forms or specialized form requirements
- Compliance Requirements: Wiele poziomów PDF/A for specific industries
Ostateczna rekomendacja
For most modern .NET development scenarios, IronPDF offers the best combination of features, performance, and value. Its intuitive API, complete documentation, and transparent pricing make it ideal for teams looking to implement PDF functionality quickly and efficiently.
ActivePDF remains a viable choice for enterprises with specific requirements around file format support, legacy system integration, or existing ActivePDF infrastructure. However, the modular pricing model and complex installation process may present challenges for smaller teams or new projects.
Gotowy, aby rozpocząć?
Rozpocznij używanie IronPDF w swoim projekcie już dziś dzięki darmowej wersji próbnej.
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.



