Przejdź do treści stopki
PRZEWODNIKI MIGRACJI

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

  1. Środowisko .NET: .NET Framework 4.6.2+ lub .NET Core 3.1+ / .NET 5/6/7/8/9/10+
  2. Dostęp do NuGet: Możliwość instalowania pakietów NuGet
  3. 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
SHELL

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"
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

Schemat ustawień strony jest niemal identyczny, z prostymi zmianami nazw właściwości:

  • converter.Options.PdfPageSizerenderer.RenderingOptions.PaperSize
  • converter.Options.PdfPageOrientationrenderer.RenderingOptions.PaperOrientation
  • PdfPageSize.A4PdfPaperSize.A4
  • PdfPageOrientation.PortraitPdfPaperOrientation.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")
$vbLabelText   $csharpLabel

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!
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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 HtmlToPdf przez ChromePdfRenderer
  • Zastąp ConvertHtmlString() przez RenderHtmlAsPdf()
  • Zastąp ConvertUrl() przez RenderUrlAsPdf()
  • Zaktualizuj nazwy właściwości opcji (Options.PdfPageSizeRenderingOptions.PaperSize)
  • Zamień PdfPageSize na PdfPaperSize
  • Zamień PdfPageOrientation na PdfPaperOrientation
  • Zastąp doc.Save() przez pdf.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)

Curtis Chau
Autor tekstów technicznych

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

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie