Jak przeprowadzić migrację z SelectPdf do IronPDF w języku C#
Przejście zSelectPdfnaIronPDFzmienia proces tworzenia plików PDF z rozwiązania działającego wyłącznie w systemie Windows z przestarzałym silnikiem renderującym w nowoczesną, wieloplatformową bibliotekę z pełną obsługą CSS3 i JavaScript. Niniejszy przewodnik zawiera kompletną, szczegółową ścieżkę migracji, która umożliwia wdrożenie na systemie Linux, w środowisku Docker,Funkcje Azureoraz na innych platformach 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ń. Pomimo reklamowania możliwości działania na wielu platformach,SelectPdfdziała wyłącznie w środowisku Windows. Stanowi to poważną przeszkodę przy rozważaniu rozwiązań wdrożeniowych opartych na chmurze, takich jakFunkcje Azurelub kontenery, np. Docker. Ponadto jego darmowa wersja jest znacznie ograniczona, pozwalając na wydrukowanie maksymalnie pięciu stron przed zastosowaniem agresywnego znaku wodnego.SelectPdfwykorzystuje przestarzałą wersję Blink oraz architekturę opartą na WebKit, co powoduje problemy z kompatybilnością z nowoczesnymi technologiami internetowymi, takimi jakCSS Gridi zaawansowany flexbox.
Istotne ograniczenia SelectPdf
| Problem | Wpływ | RozwiązanieIronPDF |
|---|---|---|
| Tylko dla systemu Windows | Nie można wdrożyć na systemie Linux, w Dockerze ani wFunkcje Azure | Pełna obsługa wielu platform |
| Przestarzały silnik renderujący | Nowoczesny CSS zawodzi, układy się psują | Aktualna wersja Chromium |
| Limit 5 stron w wersji bezpłatnej | Wyraźny znak wodny po 5 stronach | Bogata wersja próbna |
| Brak obsługi .NET 10 | Problemy związane z przyszłościowością | Pełna obsługa .NET 10 |
| Wdrożenie w chmurze zablokowane | Nie można używaćAWS LambdaaniFunkcje Azure | Natywne dla chmury |
PorównanieSelectPdfi IronPDF
| Funkcja | SelectPdf | IronPDF |
|---|---|---|
| Obsługa platform | Tylko Windows | W pełni wieloplatformowe, ponad 10 dystrybucji |
| Obsługa nowoczesnych standardów internetowych | Ograniczone (przestarzałe Blink) | Pełna obsługa CSS3, nowoczesny Chromium |
| Maksymalny limit stron w wersji darmowej | 5 stron | Elastyczne, bez sztywnych ograniczeń |
| Ceny | Ceny zaczynają się od 499 USD | Przejrzyste i elastyczne ceny |
| Obsługa .NET 10 | None | Obsługiwane |
| Wdrażanie w środowiskach chmurowych | Nieobsługiwane | W pełni obsługiwane |
| CSS Grid | Ograniczone | Obsługiwane |
| Flexbox | Ograniczone | Obsługiwane |
| Zmienne CSS | Nieobsługiwane | Obsługiwane |
| Docker | NIE OBSŁUGIWANE | Oficjalne zdjęcia |
| Funkcje Azure | NIE OBSŁUGIWANE | Obsługiwane |
| AWS Lambda | NIE OBSŁUGIWANE | Obsługiwane |
Dla zespołów planujących wdrożenie .NET 10 i C# 14 w latach 2025 i 2026,SelectPdfwyraźnie nie obsługuje .NET 10, co stwarza problemy związane z przyszłościowością rozwiązania.IronPDFzapewnia pełną obsługę wszystkich nowoczesnych wersji .NET.
Zanim zaczniesz
Wymagania wstępne
- Środowisko .NET: .NET Framework 4.6.2+ lub .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
# Remove SelectPdf
dotnet remove package Select.HtmlToPdf
# Install IronPDF
dotnet add package IronPdf
# Remove SelectPdf
dotnet remove package Select.HtmlToPdf
# 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 | IronPDFzajmuje 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() w celu utworzenia PdfDocument, a następnie Save() i Close() w celu zapisania i wyczyszczenia.
IronPDF używa ChromePdfRenderer z RenderHtmlAsPdf(), zwracając PdfDocument, który jest zapisywany z SaveAs(). Wywołanie Close() zostało usunięte —IronPDFautomatycznie 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() wSelectPdfodpowiada bezpośrednio metodzie RenderUrlAsPdf() w IronPDF. Kluczowa różnica dotyczy silnika renderującego:SelectPdfwykorzystuje przestarzałą wersję Blink/WebKit, która ma problemy z obsługą nowoczesnego CSS, podczas gdyIronPDFkorzysta z najnowszej stabilnej wersji Chromium, zapewniającej pełną obsługę 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
- Funkcje Azure
- 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)| ❌ | ✅ ||Funkcje Azure| ❌ | ✅ ||AWS Lambda| ❌ | ✅ ||Docker (Linux)| ❌ | ✅ ||Kubernetes| ❌ | ✅ |
Przestarzały silnik renderujący
Porównanie obsługi funkcji CSS
SelectPdf wykorzystuje przestarzałą wersję Blink/WebKit, która nie nadąża za współczesnymi standardami internetowymi:
| Funkcja CSS | SelectPdf | IronPDF |
|---|---|---|
| CSS Grid | ⚠️ Częściowe/niekompletne | ✅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 | ❌ | ✅ |
Nowe możliwości po migracji
Po migracji doIronPDFzyskujesz możliwości, którychSelectPdfnie jest w stanie zapewnić:
Wdrażanie wieloplatformowe
// ✅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 licencyjnyIronPDFze strony ironpdf.com
Aktualizacje kodu
- Usuń pakiet NuGet
Select.HtmlToPdf - Zainstaluj pakiet NuGet
IronPdf - Zaktualizuj importy przestrzeni nazw (
using SelectPdf;→using IronPdf;) - Zastąp
HtmlToPdfprzezChromePdfRenderer - Zastąp
ConvertHtmlString()przezRenderHtmlAsPdf() - Zastąp
ConvertUrl()przezRenderUrlAsPdf() - Zaktualizuj nazwy właściwości opcji (
Options.PdfPageSize→RenderingOptions.PaperSize) - Zamień
PdfPageSizenaPdfPaperSize - Zamień
PdfPageOrientationnaPdfPaperOrientation - Zastąp
doc.Save()przezpdf.SaveAs() - Usuń wszystkie wywołania
doc.Close() - Popraw 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)

