Przejdź do treści stopki
PRZEWODNIKI MIGRACJI

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

  1. .NET Environment: .NET Framework 4.6.1+ or .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

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

Zwróć uwagęSelectPDF to zarejestrowany znak towarowy jego właściciela. Ta strona nie jest powiązana, sponsorowana ani autoryzowana przez Outside Software SRL ani SelectPdf. Wszystkie nazwy produktów, logo i marki są własnością ich odpowiednich właścicieli. Porównania mają charakter wyłącznie informacyjny i odzwierciedlają informacje dostępne publicznie w momencie pisania.

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

Zespół wsparcia Iron

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