Jak przeprowadzić migrację z SelectPdf do IronPDF w języku C#
Migracja zSelectPdfdo IronPDF przenosi twój przepływ pracy generowania PDF z biblioteki dostępnej tylko dla Windows - której domyślny silnik renderujący to wewnętrzny WebKit, a której opcjonalny silnik Blink został dostarczony z Chromium 124 (kwiecień 2024) - na obecną bibliotekę Chromium, wieloplatformową z pełnym wsparciem CSS3 i JavaScript. Niniejszy przewodnik oferuje kompletną, krok po kroku ścieżkę migracji, która umożliwia wdrożenie do Linux, Docker,Azure Functionsi innych platform chmurowych, którychSelectPdfnie obsługuje.
Dlaczego warto przejść zSelectPdfna IronPDF
Zrozumienie SelectPdf
SelectPdf to komercyjna biblioteka przeznaczona do konwersji treści HTML do formatu PDF przy użyciu języka C#. Biblioteka jest dostosowana do potrzeb programistów, którzy potrzebują płynnej integracji funkcji generowania plików PDF w swoich aplikacjach. SiłaSelectPdfleży w prostym API, co czyni go atrakcyjną opcją dla osób, które dopiero zaczynają przygodę z generowaniem plików PDF.
Potencjalni użytkownicy muszą jednak być świadomi jego istotnych ograniczeń. Zgodnie z dokumentacją dostawcy,SelectPdfdziała tylko na Windows - nie na Linux, macOS czy Xamarin. To stanowi znaczną barierę przy rozważaniu chmurowych rozwiązań wdrożeniowych, takich jak LinuxAzure Functionslub Docker. Edycja Community Edition jest ograniczona do 5 stron na PDF i nakłada znak wodny na każdą stronę, dopóki nie zostanie zakupiony klucz licencyjny. Domyślny silnik renderującySelectPdfto wewnętrzny WebKit; opcjonalny silnik Blink jest dostarczany z Chromium 124 (kwiecień 2024), który jest opóźniony w stosunku do aktualnej wersji Chrome i może powodować problemy z nowszymi funkcjami CSS, takimi jakCSS Gridi właściwość Flexbox gap.
Istotne ograniczenia SelectPdf
| Problem | Wpływ | Rozwiązanie IronPDF |
|---|---|---|
| Tylko dla systemu Windows | Nie można wdrożyć na systemie Linux, w Dockerze ani wAzure Functions | Pełna obsługa wielu platform |
| Domyślny silnik WebKit; opcjonalny Blink dostarcza Chromium 124 (kwiecień 2024) | Nowsze funkcje CSS mogą nie działać na domyślnym silniku | Aktualna wersja Chromium |
| Limit 5 stron w wersji bezpłatnej | Znak wodny na każdej stronie do momentu uzyskania licencji | Bogata wersja próbna |
| .NET 10 tylko na Windows | Brak wdrożenia na Linux/macOS/kontener | Pełna obsługa .NET 10 na wszystkich platformach |
| Blokowane wdrażanie w chmurze (poza Windows) | Nie można użyćAWS Lambdaani Linux Azure Functions | Natywne dla chmury |
PorównanieSelectPdfi IronPDF
| Funkcja | SelectPdf | IronPDF |
|---|---|---|
| Obsługa platform | Tylko Windows | W pełni wielopłatformowe, ponad 10 dystrybucji |
| Obsługa nowoczesnych standardów internetowych | WebKit domyślnie; Opcja Blink dostarcza Chromium 124 (kwiecień 2024) | Pełne CSS3, aktualny Chromium |
| Maksymalny limit stron w wersji darmowej | 5 stron + znak wodny na każdej stronie | Elastyczne, bez sztywnych ograniczeń |
| Ceny | $499 dla Pojedynczego Dewelopera do $1 599 Enterprise OEM | Przejrzyste i elastyczne ceny |
| Obsługa .NET 10 | Tak, ale tylko Windows | Tak, wszystkie platformy |
| Wdrażanie w środowiskach chmurowych | Tylko cele Windows | Pełna obsługa (Windows + Linux) |
| CSS Grid | WebKit: ograniczone; Blink (Chromium 124): obsługiwane | Obsługiwane |
| Flexbox (właściwość gap) | WebKit: nieobsługiwane; Blink: obsługiwane | Obsługiwane |
| Zmienne CSS | WebKit: nieobsługiwane; Blink: obsługiwane | Obsługiwane |
| Docker (Linux) | Nieobsługiwane | Oficjalne zdjęcia |
| Azure Functions (Linux) | Nieobsługiwane | Obsługiwane |
| AWS Lambda | Nieobsługiwane | Obsługiwane |
PaczkaSelectPdfNetCore jest skierowana na .NET Standard 2.0 i jest udokumentowana jako kompatybilna z .NET 5 do .NET 10 — ale tylko na Windows, co neutralizuje tę kompatybilność dla każdego zespołu wdrażającego do kontenerów Linux,AWS Lambdalub Azure App Service bazującej na Linux.IronPDF obsługuje te same wersje .NET i działa na Windows, Linux, macOS i Docker.
Zanim zaczniesz
Wymagania wstępne
- .NET Environment: .NET Framework 4.6.1+ or .NET Core 3.1+ / .NET 5/6/7/8/9/10+
- Dostęp do NuGet: Możliwość instalowania pakietów NuGet
- Licencja IronPDF: Uzyskaj klucz licencyjny na stronie ironpdf.com
Zmiany w pakiecie NuGet
# RemoveSelectPdf(use Select.HtmlToPdf.NetCore on .NET Core / .NET 5+)
dotnet remove package Select.HtmlToPdf
# or: dotnet remove package Select.HtmlToPdf.NetCore
# Install IronPDF
dotnet add package IronPdf
# RemoveSelectPdf(use Select.HtmlToPdf.NetCore on .NET Core / .NET 5+)
dotnet remove package Select.HtmlToPdf
# or: dotnet remove package Select.HtmlToPdf.NetCore
# Install IronPDF
dotnet add package IronPdf
Konfiguracja licencji
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Kompletna dokumentacija API
Zmiany w przestrzeni nazw
// Before: SelectPdf
using SelectPdf;
// After: IronPDF
using IronPdf;
using IronPdf.Engines.Chrome;
// Before: SelectPdf
using SelectPdf;
// After: IronPDF
using IronPdf;
using IronPdf.Engines.Chrome;
' Before: SelectPdf
Imports SelectPdf
' After: IronPDF
Imports IronPdf
Imports IronPdf.Engines.Chrome
Mapowania podstawowych interfejsów API
| SelectPdf | IronPDF | Uwagi |
|---|---|---|
HtmlToPdf |
ChromePdfRenderer |
Podstawowa klasa konwertera |
converter.ConvertHtmlString(html) |
renderer.RenderHtmlAsPdf(html) |
Konwersja ciągów znaków HTML |
converter.ConvertUrl(url) |
renderer.RenderUrlAsPdf(url) |
Konwersja adresów URL |
doc.Save(path) |
pdf.SaveAs(path) |
Zapisz do pliku |
doc.Close() |
Nie jest potrzebne | IronPDF zajmuje się czyszczeniem |
converter.Options.PdfPageSize |
renderer.RenderingOptions.PaperSize |
Rozmiar papieru |
converter.Options.PdfPageOrientation |
renderer.RenderingOptions.PaperOrientation |
Orientacja |
converter.Options.MarginTop |
renderer.RenderingOptions.MarginTop |
Górny margines |
converter.Options.MarginBottom |
renderer.RenderingOptions.MarginBottom |
Margines dolny |
converter.Options.MarginLeft |
renderer.RenderingOptions.MarginLeft |
Lewy margines |
converter.Options.MarginRight |
renderer.RenderingOptions.MarginRight |
Prawy margines |
PdfPageSize.A4 |
PdfPaperSize.A4 |
Wymiennik rozmiaru A4 |
PdfPageOrientation.Portrait |
PdfPaperOrientation.Portrait |
Wyliczenie Portrait |
PdfPageOrientation.Landscape |
PdfPaperOrientation.Landscape |
Landscape enum |
{page_number} |
{page} |
Zastępczy symbol numeru strony |
{total_pages} |
{total-pages} |
Liczba stron (miejsce na liczbę) |
Przykłady migracji kodu
Przykład 1: Konwersja ciągu znaków HTML do formatu PDF
Przed (SelectPdf):
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
HtmlToPdf converter = new HtmlToPdf();
PdfDocument doc = converter.ConvertHtmlString(htmlContent);
doc.Save("document.pdf");
doc.Close();
Console.WriteLine("PDF generated from HTML string");
}
}
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
HtmlToPdf converter = new HtmlToPdf();
PdfDocument doc = converter.ConvertHtmlString(htmlContent);
doc.Save("document.pdf");
doc.Close();
Console.WriteLine("PDF generated from HTML string");
}
}
Imports SelectPdf
Imports System
Class Program
Shared Sub Main()
Dim htmlContent As String = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"
Dim converter As New HtmlToPdf()
Dim doc As PdfDocument = converter.ConvertHtmlString(htmlContent)
doc.Save("document.pdf")
doc.Close()
Console.WriteLine("PDF generated from HTML string")
End Sub
End Class
Po (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("document.pdf");
Console.WriteLine("PDF generated from HTML string");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("document.pdf");
Console.WriteLine("PDF generated from HTML string");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim htmlContent As String = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("document.pdf")
Console.WriteLine("PDF generated from HTML string")
End Sub
End Class
Ten przykład ilustruje podstawowe różnice w API.SelectPdfużywa HtmlToPdf jako klasy konwertera, wywołując ConvertHtmlString() do utworzenia PdfDocument, następnie Save() i Close() do zapisu i czyszczenia.
IronPDF używa ChromePdfRenderer z RenderHtmlAsPdf(), zwracając PdfDocument, który jest zapisany za pomocą SaveAs(). Wywołanie Close() jest wyeliminowane -IronPDF automatycznie zarządza zasobami. Kompleksowe przykłady można znaleźć w dokumentacji dotyczącej konwersji HTML do PDF.
Przykład 2: Konwersja adresów URL do formatu PDF
Przed (SelectPdf):
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf converter = new HtmlToPdf();
PdfDocument doc = converter.ConvertUrl("https://www.example.com");
doc.Save("output.pdf");
doc.Close();
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf converter = new HtmlToPdf();
PdfDocument doc = converter.ConvertUrl("https://www.example.com");
doc.Save("output.pdf");
doc.Close();
Console.WriteLine("PDF created successfully");
}
}
Imports SelectPdf
Imports System
Class Program
Shared Sub Main()
Dim converter As New HtmlToPdf()
Dim doc As PdfDocument = converter.ConvertUrl("https://www.example.com")
doc.Save("output.pdf")
doc.Close()
Console.WriteLine("PDF created successfully")
End Sub
End Class
Po (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Class
Metoda ConvertUrl()SelectPdfbezpośrednio odwzorowuje się na RenderUrlAsPdf() w IronPDF. Podstawowa różnica tkwi w silniku renderującym:SelectPdfdomyślnie używa wewnętrznego WebKit i oferuje opcjonalny silnik Blink dostarczany z Chromium 124 (kwiecień 2024), podczas gdy IronPDF używa aktualnego stabilnego Chromium dla pełnego wsparcia CSS3 i JavaScript. Dowiedz się więcej z naszych samouczków.
Przykład 3: Niestandardowe ustawienia strony i marginesy
Przed (SelectPdf):
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf converter = new HtmlToPdf();
converter.Options.PdfPageSize = PdfPageSize.A4;
converter.Options.PdfPageOrientation = PdfPageOrientation.Portrait;
converter.Options.MarginTop = 20;
converter.Options.MarginBottom = 20;
converter.Options.MarginLeft = 20;
converter.Options.MarginRight = 20;
string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
PdfDocument doc = converter.ConvertHtmlString(html);
doc.Save("custom-settings.pdf");
doc.Close();
Console.WriteLine("PDF with custom settings created");
}
}
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf converter = new HtmlToPdf();
converter.Options.PdfPageSize = PdfPageSize.A4;
converter.Options.PdfPageOrientation = PdfPageOrientation.Portrait;
converter.Options.MarginTop = 20;
converter.Options.MarginBottom = 20;
converter.Options.MarginLeft = 20;
converter.Options.MarginRight = 20;
string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
PdfDocument doc = converter.ConvertHtmlString(html);
doc.Save("custom-settings.pdf");
doc.Close();
Console.WriteLine("PDF with custom settings created");
}
}
Imports SelectPdf
Imports System
Module Program
Sub Main()
Dim converter As New HtmlToPdf()
converter.Options.PdfPageSize = PdfPageSize.A4
converter.Options.PdfPageOrientation = PdfPageOrientation.Portrait
converter.Options.MarginTop = 20
converter.Options.MarginBottom = 20
converter.Options.MarginLeft = 20
converter.Options.MarginRight = 20
Dim html As String = "<html><body><h1>Custom Page Settings</h1></body></html>"
Dim doc As PdfDocument = converter.ConvertHtmlString(html)
doc.Save("custom-settings.pdf")
doc.Close()
Console.WriteLine("PDF with custom settings created")
End Sub
End Module
Po (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom-settings.pdf");
Console.WriteLine("PDF with custom settings created");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom-settings.pdf");
Console.WriteLine("PDF with custom settings created");
}
}
Imports IronPdf
Imports IronPdf.Engines.Chrome
Imports System
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20
Dim html As String = "<html><body><h1>Custom Page Settings</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("custom-settings.pdf")
Console.WriteLine("PDF with custom settings created")
End Sub
End Module
Schemat ustawień strony jest niemal identyczny, z prostymi zmianami nazw właściwości:
converter.Options.PdfPageSize→renderer.RenderingOptions.PaperSizeconverter.Options.PdfPageOrientation→renderer.RenderingOptions.PaperOrientationPdfPageSize.A4→PdfPaperSize.A4PdfPageOrientation.Portrait→PdfPaperOrientation.Portrait
Właściwości marginesów zachowują te same nazwy i jednostki.
Problem związany wyłącznie z systemem Windows
Ograniczenia platformy SelectPdf
Pomimo wszelkich zapewnień marketingowych,SelectPdfwyraźnie nie obsługuje:
- Linux (dowolna dystrybucja)
- macOS
- Kontenery Docker
- Azure Functions
- AWS Lambda
- Funkcje Google Cloud
- Wszelkie systemy oparte na architekturze ARM
Jest to fundamentalne ograniczenie architektoniczne —SelectPdfopiera się na bibliotekach specyficznych dla systemu Windows i nie można go przenieść na inne platformy.
Porównanie obsługi platform
| Platforma | SelectPdf | IronPDF |
|---|---|---|
| Windows Server 2019+ | ✅ | ✅ |
| Windows 10/11 | ✅ | ✅ |
| Ubuntu 20.04+ | ❌ | ✅ |
| Debian 10+ | ❌ | ✅ |
| CentOS 7+ | ❌ | ✅ |
| Alpine Linux | ❌ | ✅ |
| Amazon Linux 2 | ❌ | ✅ |
| macOS 10.15+ | ❌ | ✅ |
| Azure App Service (Linux) | ❌ | ✅ |
| Azure Functions | ❌ | ✅ |
| AWS Lambda | ❌ | ✅ |
| Docker (Linux) | ❌ | ✅ |
| Kubernetes | ❌ | ✅ |
Przestarzały silnik renderujący
Porównanie obsługi funkcji CSS
SelectPdf dostarcza trzy silniki (wg dokumentacji dostawcy): wewnętrzny WebKit (domyślnie), Blink (przedstawiony w v19.1, dostarczany z Chromium 124.0.6367.201 - wydany w kwietniu 2024), i Chromium/CEF. Domyślny silnik WebKit nie nadąża za nowoczesnymi standardami webowymi:
| Funkcja CSS | SelectPdf (domyślnie WebKit) | SelectPdf(Blink, Chromium 124) | IronPDF |
|---|---|---|---|
| CSS Grid | ⚠ Częściowe/uszkodzone | ✅ | ✅Pełne |
| Flexbox (podstawy) | ✅ | ✅ | ✅ |
| Flexbox (właściwość gap) | ❌ | ✅ | ✅ |
| Zmienne CSS | ❌ | ✅ | ✅ |
| CSS calc() | ⚠ Ograniczone | ✅ | ✅ |
| @media print | ⚠ Ograniczone | ✅ | ✅ |
| @font-face | ⚠ Ograniczone | ✅ | ✅ |
| Czcionki internetowe | ⚠ Ograniczone | ✅ | ✅ |
| SVG | ⚠ Podstawowe | ✅ | ✅Pełne |
| Transformacje CSS | ⚠ Ograniczone | ✅ | ✅ |
| Animacje CSS | ❌ | ⚠ Częściowe | ✅ |
Nowe możliwości po migracji
Po migracji do IronPDF zyskujesz możliwości, którychSelectPdfnie jest w stanie zapewnić:
Wdrażanie wielopłatformowe
// ✅IronPDF- Works everywhere
using IronPdf;
//Azure App Service (Linux)- WORKS
// Docker container - WORKS
//AWS Lambda- WORKS
// GitHub Actions on ubuntu-latest - WORKS
// macOS development - WORKS
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>");
pdf.SaveAs("output.pdf");
// ✅IronPDF- Works everywhere
using IronPdf;
//Azure App Service (Linux)- WORKS
// Docker container - WORKS
//AWS Lambda- WORKS
// GitHub Actions on ubuntu-latest - WORKS
// macOS development - WORKS
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>");
pdf.SaveAs("output.pdf");
Imports IronPdf
' ✅IronPDF- Works everywhere
'Azure App Service (Linux)- WORKS
' Docker container - WORKS
'AWS Lambda- WORKS
' GitHub Actions on ubuntu-latest - WORKS
' macOS development - WORKS
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>")
pdf.SaveAs("output.pdf")
Obsługa nowoczesnego CSS
// ✅IronPDF- Uses latest stable Chromium
var renderer = new ChromePdfRenderer();
var html = @"
<style>
:root { --primary: #007bff; --gap: 20px; }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--gap); }
</style>
<div class='grid'>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 1</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 2</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 3</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// All modern CSS features render correctly!
// ✅IronPDF- Uses latest stable Chromium
var renderer = new ChromePdfRenderer();
var html = @"
<style>
:root { --primary: #007bff; --gap: 20px; }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--gap); }
</style>
<div class='grid'>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 1</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 2</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 3</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// All modern CSS features render correctly!
Imports IronPdf
' ✅IronPDF- Uses latest stable Chromium
Dim renderer As New ChromePdfRenderer()
Dim html As String = "
<style>
:root { --primary: #007bff; --gap: 20px; }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--gap); }
</style>
<div class='grid'>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 1</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 2</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 3</div>
</div>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
' All modern CSS features render correctly!
Nie jest wymagane Close()
IronPDF automatycznie zarządza zasobami:
// Option 1: Let garbage collection handle it
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// No Close() needed
// Option 2: Explicit disposal
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
pdf.SaveAs("output.pdf");
}
// Option 1: Let garbage collection handle it
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// No Close() needed
// Option 2: Explicit disposal
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
pdf.SaveAs("output.pdf");
}
' Option 1: Let garbage collection handle it
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
' No Close() needed
' Option 2: Explicit disposal
Using pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Using
Lista kontrolna migracji
Przed migracją
- Sprawdź wszystkie użyciaSelectPdfw kodzie źródłowym
- Udokumentuj aktualne opcje konwertera dotyczące mapowania
- Zidentyfikuj implementacje nagłówków/stopek
- Sprawdź składnię symbolu zastępczego numeru strony (
{page_number}→{page}) - Zwróć uwagę na wzorce obsługi adresów URL bazowych
- Sprawdź docelowe platformy wdrożeniowe
- Uzyskaj klucz licencyjny IronPDF ze strony ironpdf.com
Aktualizacje kodu
- Usuń pakiet NuGet
Select.HtmlToPdf - Zainstaluj pakiet NuGet
IronPdf - Zaktualizuj importy przestrzeni nazw (
using SelectPdf;→using IronPdf;) - Zamień
HtmlToPdfnaChromePdfRenderer - Zamień
ConvertHtmlString()naRenderHtmlAsPdf() - Zamień
ConvertUrl()naRenderUrlAsPdf() - Zaktualizuj nazwy właściwości opcji (
Options.PdfPageSize→RenderingOptions.PaperSize) - Przekształć
PdfPageSizenaPdfPaperSize - Przekształć
PdfPageOrientationnaPdfPaperOrientation - Zamień
doc.Save()napdf.SaveAs() - Usuń wszystkie wywołania
doc.Close() - Napraw symbole zastępcze numerów stron (
{page_number}→{page},{total_pages}→{total-pages}) - Dodaj inicjalizację licencji podczas uruchamiania aplikacji
Po migracji
- Uruchom wszystkie testy jednostkowe
- Sprawdź renderowanie CSS (zwłaszcza Grid/Flexbox)
- Testowanie działania kodu JavaScript
- Sprawdź numery stron w nagłówku/stopce
- Przetestuj na docelowych platformach (Linux, Docker itp.)
- Test wydajności
- Porównaj jakość wydruków PDF
- Aktualizacja potoków CI/CD
- Testowe wdrożenia w chmurze (jeśli dotyczy)

