Przejdź do treści stopki
PRZEWODNIKI MIGRACJI

Jak przeprowadzić migrację z PDFBolt do IronPDF w języku C#

Przejście zPDFBoltnaIronPDFprzenosi proces obsługi plików PDF w środowisku .NET z usługi SaaS działającej wyłącznie w chmurze, z zewnętrznym przetwarzaniem dokumentów, do biblioteki hostowanej lokalnie, zapewniającej pełną prywatność danych i nieograniczone możliwości generowania plików lokalnie. Niniejszy przewodnik przedstawia kompleksową, krok po kroku ścieżkę migracji, która eliminuje zależności sieciowe, ograniczenia użytkowania i zewnętrzną transmisję danych, zapewniając jednocześnie dostęp do funkcji edycji plików PDF, którychPDFBoltnie jest w stanie zapewnić.

Dlaczego warto przejść zPDFBoltna IronPDF

Problem związany wyłącznie z chmurą

PDFBolt to platforma SaaS działająca wyłącznie w chmurze, która przetwarza dokumenty na serwerach zewnętrznych. Chociaż architektura ta jest wygodna w przypadku szybkich prototypów, stwarza ona poważne wyzwania dla aplikacji produkcyjnych:

  1. Przetwarzanie wyłącznie w chmurze: Każdy dokument przechodzi przez serwery zewnętrzne — nie ma opcji hostowania we własnym zakresie, co może zniechęcić firmy potrzebujące większej kontroli nad swoimi danymi i procesami.

  2. Zagrożenia związane z ochroną danych: Dokumenty wrażliwe (umowy, dokumentacja medyczna, dane finansowe) muszą być przesyłane na zewnątrz. Firmy zajmujące się poufnymi informacjami będą miały uzasadnione obawy.

  3. Ograniczenia użytkowania: W ramach bezpłatnego planu można przetworzyć maksymalnie 100 dokumentów miesięcznie, co może okazać się niewystarczające dla większych firm. Ceny rozliczane za dokument szybko się sumują w przypadku obciążeń produkcyjnych.

  4. Zależność od sieci: Awarie Internetu lub przerwy w działaniu serwisuPDFBoltoznaczają całkowite wstrzymanie generowania plików PDF.

  5. Opóźnienie: W porównaniu z przetwarzaniem lokalnym, przesył danych w obie strony w sieci wydłuża każdą konwersję o kilka sekund.

  6. Kwestie zgodności: Audyty dotyczące RODO, HIPAA i SOC2 są skomplikowane ze względu na przetwarzanie dokumentów zewnętrznych.

  7. Bezpieczeństwo kluczy API: Wyciek kluczy API może skutkować nieautoryzowanym wykorzystaniem, za które zostanie naliczona opłata na Twoim koncie.

  8. Uzależnienie od dostawcy: Twoja aplikacja przestanie działać, jeśliPDFBoltzmieni warunki lub zakończy działalność.

PorównaniePDFBolti IronPDF

Zastrzeżenie PDFBolt IronPDF
Lokalizacja danych Serwery zewnętrzne Tylko Twoje serwery
Ograniczenia użytkowania 100 bezpłatnych, a następnie za każdy dokument Nieograniczona
Wymagane połączenie z Internetem Tak, zawsze Nie
Opóźnienie Ruch sieciowy w obie strony Milisekundy
Zgodność Złożone (przetwarzanie zewnętrzne) Proste (przetwarzanie lokalne)
Model kosztowy Za dokument Jednorazowe lub roczne
Praca w trybie offline Niemożliwe W pełni obsługiwane
Kluczowe ryzyka związane z API Wyciek = rozliczenie Klucz licencyjny, brak ryzyka związanego z rozliczeniami

Dla zespołów planujących wdrożenie .NET 10 i C# 14 w latach 2025 i 2026,IronPDFzapewnia samodzielnie hostowaną platformę, która gwarantuje pełną prywatność danych i eliminuje zależność od zewnętrznych usług w chmurze.


Zanim zaczniesz

Wymagania wstępne

  1. Środowisko .NET: .NET Framework 4.6.2+ lub .NET Core 3.1+ / .NET 5/6/7/8/9+
  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 PDFBolt
dotnet remove package PDFBolt

# Install IronPDF
dotnet add package IronPdf
# Remove PDFBolt
dotnet remove package PDFBolt

# Install IronPDF
dotnet add package IronPdf
SHELL

Konfiguracja licencji

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Zidentyfikuj zastosowanie PDFBolt

# Find allPDFBoltreferences
grep -r "PDFBolt\|HtmlToPdfConverter\|ConvertHtmlString\|ConvertUrl" --include="*.cs" .

# Find API key references
grep -r "PDFBOLT\|ApiKey" --include="*.cs" --include="*.json" --include="*.config" .
# Find allPDFBoltreferences
grep -r "PDFBolt\|HtmlToPdfConverter\|ConvertHtmlString\|ConvertUrl" --include="*.cs" .

# Find API key references
grep -r "PDFBOLT\|ApiKey" --include="*.cs" --include="*.json" --include="*.config" .
SHELL

Kompletna dokumentacija API

Mapowania klas podstawowych

PDFBolt IronPDF
new HtmlToPdfConverter() new ChromePdfRenderer()
PageSize PdfPaperSize
(zwraca byte[]) PdfDocument

Mapowanie metod konwersji

PDFBolt IronPDF
converter.ConvertHtmlString(html) renderer.RenderHtmlAsPdf(html)
converter.ConvertUrl(url) renderer.RenderUrlAsPdf(url)

Mapowania metod wyjściowych

PDFBolt IronPDF
File.WriteAllBytes(path, pdf) pdf.SaveAs(path)
(PDF is byte[]) pdf.BinaryData
(strumień ręczny) pdf.Stream

Mapowania konfiguracji stron

PDFBolt IronPDF
converter.PageSize = PageSize.A4 renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
converter.MarginTop = 20 renderer.RenderingOptions.MarginTop = 20
converter.MarginBottom = 20 renderer.RenderingOptions.MarginBottom = 20
converter.MarginLeft = 15 renderer.RenderingOptions.MarginLeft = 15
converter.MarginRight = 15 renderer.RenderingOptions.MarginRight = 15

Mapowanie symboli zastępczych nagłówków/stopek

PDFBolt IronPDF
{pageNumber} {page}
{totalPages} {total-pages}
{date} {date}
{title} {html-title}

Przykłady migracji kodu

Przykład 1: Podstawowy HTML do PDF

Przed (PDFBolt):

// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = converter.ConvertHtmlString(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = converter.ConvertHtmlString(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
Imports PDFBolt
Imports System.IO

Class Program
    Shared Sub Main()
        Dim converter = New HtmlToPdfConverter()
        Dim html = "<html><body><h1>Hello World</h1></body></html>"
        Dim pdf = converter.ConvertHtmlString(html)
        File.WriteAllBytes("output.pdf", pdf)
    End Sub
End Class
$vbLabelText   $csharpLabel

Po (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports System.IO

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim html = "<html><body><h1>Hello World</h1></body></html>"
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Podstawową różnicą jest tutaj typ zwracanej wartości oraz sposób zapisywania. Funkcja HtmlToPdfConverter.ConvertHtmlString() bibliotekiPDFBoltzwraca byte[], który należy ręcznie zapisać na dysku za pomocą File.WriteAllBytes(). Wymaga to zaimportowania System.IO i samodzielnego wykonania operacji na pliku.

Funkcja ChromePdfRenderer.RenderHtmlAsPdf() bibliotekiIronPDFzwraca obiekt PdfDocument z wbudowaną metodą SaveAs(). To podejście obiektowe zapewnia dodatkowe korzyści: przed zapisaniem można modyfikować plik PDF (dodawać znaki wodne, łączyć dokumenty, dodawać zabezpieczenia). Jeśli potrzebujesz surowych bajtów w celu zapewnienia zgodności z istniejącym kodem, użyj pdf.BinaryData. Dodatkowe opcje renderowania można znaleźć w dokumentacji dotyczącej konwersji HTML do PDF.

Przykład 2: Konwersja adresów URL do formatu PDF

Przed (PDFBolt):

// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var pdf = converter.ConvertUrl("https://www.example.com");
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var pdf = converter.ConvertUrl("https://www.example.com");
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
Imports PDFBolt
Imports System.IO

Class Program
    Shared Sub Main()
        Dim converter = New HtmlToPdfConverter()
        Dim pdf = converter.ConvertUrl("https://www.example.com")
        File.WriteAllBytes("webpage.pdf", pdf)
    End Sub
End Class
$vbLabelText   $csharpLabel

Po (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer As New ChromePdfRenderer()
        Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
        pdf.SaveAs("webpage.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

WzorzecPDFBoltdla konwersji adresów URL opiera się na tym samym podejściu, co konwersja HTML: ConvertUrl() zwraca byte[], wymagając File.WriteAllBytes() do zapisania. Należy pamiętać, żePDFBoltnadal wymaga połączenia sieciowego z serwerami, nawet jeśli dane są pobierane z adresu URL.

Metoda RenderUrlAsPdf() bibliotekiIronPDFzwraca obiekt PdfDocument z wbudowaną metodą SaveAs(). Główną zaletą jest to, żeIronPDFpobiera adresy URL i renderuje pliki PDF lokalnie — żadne dane nie opuszczają Twojej infrastruktury. Zauważ, że wersjaIronPDFnie potrzebuje nawet using System.IO; w tym prostym przypadku. Dowiedz się więcej o konwersji adresów URL do formatu PDF.

Przykład 3: Plik HTML z niestandardowymi ustawieniami strony

Przed (PDFBolt):

// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.PageSize = PageSize.A4;
        converter.MarginTop = 20;
        converter.MarginBottom = 20;
        var html = File.ReadAllText("input.html");
        var pdf = converter.ConvertHtmlString(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.PageSize = PageSize.A4;
        converter.MarginTop = 20;
        converter.MarginBottom = 20;
        var html = File.ReadAllText("input.html");
        var pdf = converter.ConvertHtmlString(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
Imports PDFBolt
Imports System.IO

Class Program
    Shared Sub Main()
        Dim converter As New HtmlToPdfConverter()
        converter.PageSize = PageSize.A4
        converter.MarginTop = 20
        converter.MarginBottom = 20
        Dim html As String = File.ReadAllText("input.html")
        Dim pdf As Byte() = converter.ConvertHtmlString(html)
        File.WriteAllBytes("output.pdf", pdf)
    End Sub
End Class
$vbLabelText   $csharpLabel

Po (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        var html = File.ReadAllText("input.html");
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        var html = File.ReadAllText("input.html");
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System.IO

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
        renderer.RenderingOptions.MarginTop = 20
        renderer.RenderingOptions.MarginBottom = 20
        Dim html = File.ReadAllText("input.html")
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Ten przykład ilustruje różnice w konfiguracji stron.PDFBoltustawia właściwości bezpośrednio na obiekcie konwertera (converter.PageSize, converter.MarginTop).IronPDFużywa obiektu RenderingOptions w rendererze (renderer.RenderingOptions.PaperSize, renderer.RenderingOptions.MarginTop).

Kluczowe powiązania:

  • PageSize.A4PdfPaperSize.A4 (inna nazwa wyliczenia)
  • MarginTop = 20RenderingOptions.MarginTop = 20 (poprzez RenderingOptions)

W obu przypadkach wartości marginesów podawane są w milimetrach, więc istniejące wartości marginesów powinny zostać przeniesione bezpośrednio. Przestrzeń nazw IronPdf.Rendering jest wymagana do uzyskania dostępu do wyliczenia PdfPaperSize. Aby uzyskać dodatkowe opcje konfiguracji strony, zapoznaj się z dokumentacją opcji renderowania.


Ważne uwagi dotyczące migracji

Zmiana typu zwracanej wartości

PDFBolt zwraca bezpośrednio byte[];IronPDFzwraca PdfDocument:

//PDFBoltpattern:
byte[] pdf = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);

//IronPDFpattern:
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");

// Or if you need bytes:
byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData;
//PDFBoltpattern:
byte[] pdf = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);

//IronPDFpattern:
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");

// Or if you need bytes:
byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData;
'PDFBoltpattern:
Dim pdf As Byte() = converter.ConvertHtmlString(html)
File.WriteAllBytes("output.pdf", pdf)

'IronPDFpattern:
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")

' Or if you need bytes:
Dim pdfBytes As Byte() = renderer.RenderHtmlAsPdf(html).BinaryData
$vbLabelText   $csharpLabel

Zmiana nazw klas

Nazwa głównej klasy zmienia się z nazwy skupionej na konwerterze na nazwę skupioną na rendererze:

// PDFBolt
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
// PDFBolt
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
' PDFBolt
Dim converter As New HtmlToPdfConverter()

' IronPDF
Dim renderer As New ChromePdfRenderer()
$vbLabelText   $csharpLabel

Zmiana wzorca konfiguracji

PDFBolt wykorzystuje właściwości bezpośrednie;IronPDFużywa RenderingOptions:

// PDFBolt: Direct properties
converter.PageSize = PageSize.A4;
converter.MarginTop = 20;

// IronPDF: Via RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
// PDFBolt: Direct properties
converter.PageSize = PageSize.A4;
converter.MarginTop = 20;

// IronPDF: Via RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
' PDFBolt: Direct properties
converter.PageSize = PageSize.A4
converter.MarginTop = 20

' IronPDF: Via RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 20
$vbLabelText   $csharpLabel

Eliminacja klucza API

PDFBolt wymaga zarządzania kluczami API dla poszczególnych żądań;IronPDFwykorzystuje jednorazowy klucz licencyjny:

// PDFBolt: API key per client (security risk if leaked)
var apiKey = config["PDFBolt:ApiKey"];
var client = new Client(apiKey);

// IronPDF: License key once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
// PDFBolt: API key per client (security risk if leaked)
var apiKey = config["PDFBolt:ApiKey"];
var client = new Client(apiKey);

// IronPDF: License key once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
' PDFBolt: API key per client (security risk if leaked)
Dim apiKey = config("PDFBolt:ApiKey")
Dim client = New Client(apiKey)

' IronPDF: License key once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim renderer = New ChromePdfRenderer()
$vbLabelText   $csharpLabel

Usuń obsługę błędów sieciowych

Lokalne przetwarzanie oznacza brak błędów sieciowych do obsługi:

// PDFBolt: Network error handling required
catch (HttpRequestException ex)
catch (TaskCanceledException)
catch (TimeoutException)

// IronPDF: Remove network-specific catches entirely
// PDFBolt: Network error handling required
catch (HttpRequestException ex)
catch (TaskCanceledException)
catch (TimeoutException)

// IronPDF: Remove network-specific catches entirely
$vbLabelText   $csharpLabel

Nowe dostępne funkcje

Po migracji doIronPDFzyskujesz możliwości, którychPDFBoltnie jest w stanie zapewnić:

// PDF Merging (not available in PDFBolt)
var merged = PdfDocument.Merge(pdf1, pdf2);

// Watermarks (not available in PDFBolt)
pdf.ApplyWatermark("<h1 style='opacity:0.3;'>DRAFT</h1>");

// Password Protection (not available in PDFBolt)
pdf.SecuritySettings.UserPassword = "secret";

// Text Extraction (not available in PDFBolt)
string text = pdf.ExtractAllText();

// PDF to Images (not available in PDFBolt)
pdf.RasterizeToImageFiles("page_*.png");
// PDF Merging (not available in PDFBolt)
var merged = PdfDocument.Merge(pdf1, pdf2);

// Watermarks (not available in PDFBolt)
pdf.ApplyWatermark("<h1 style='opacity:0.3;'>DRAFT</h1>");

// Password Protection (not available in PDFBolt)
pdf.SecuritySettings.UserPassword = "secret";

// Text Extraction (not available in PDFBolt)
string text = pdf.ExtractAllText();

// PDF to Images (not available in PDFBolt)
pdf.RasterizeToImageFiles("page_*.png");
' PDF Merging (not available in PDFBolt)
Dim merged = PdfDocument.Merge(pdf1, pdf2)

' Watermarks (not available in PDFBolt)
pdf.ApplyWatermark("<h1 style='opacity:0.3;'>DRAFT</h1>")

' Password Protection (not available in PDFBolt)
pdf.SecuritySettings.UserPassword = "secret"

' Text Extraction (not available in PDFBolt)
Dim text As String = pdf.ExtractAllText()

' PDF to Images (not available in PDFBolt)
pdf.RasterizeToImageFiles("page_*.png")
$vbLabelText   $csharpLabel

Rozwiązywanie problemów

Problem 1: Nie znaleziono HtmlToPdfConverter

Problem: Klasa HtmlToPdfConverter nie istnieje w IronPDF.

Rozwiązanie: Użyj ChromePdfRenderer:

// PDFBolt
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
// PDFBolt
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
' PDFBolt
Dim converter As New HtmlToPdfConverter()

' IronPDF
Dim renderer As New ChromePdfRenderer()
$vbLabelText   $csharpLabel

Problem 2: Nie znaleziono ConvertHtmlString

Problem: Metoda ConvertHtmlString() nie istnieje.

Rozwiązanie: Użyj RenderHtmlAsPdf():

// PDFBolt
var pdf = converter.ConvertHtmlString(html);

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
// PDFBolt
var pdf = converter.ConvertHtmlString(html);

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
' PDFBolt
Dim pdf = converter.ConvertHtmlString(html)

' IronPDF
Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

Problem 3: Nie znaleziono ConvertUrl

Problem: metoda ConvertUrl() nie istnieje.

Rozwiązanie: Użyj RenderUrlAsPdf():

// PDFBolt
var pdf = converter.ConvertUrl(url);

// IronPDF
var pdf = renderer.RenderUrlAsPdf(url);
// PDFBolt
var pdf = converter.ConvertUrl(url);

// IronPDF
var pdf = renderer.RenderUrlAsPdf(url);
' PDFBolt
Dim pdf = converter.ConvertUrl(url)

' IronPDF
Dim pdf = renderer.RenderUrlAsPdf(url)
$vbLabelText   $csharpLabel

Problem 4: Nie znaleziono wyliczenia PageSize

Problem: PageSize enum nie istnieje.

Rozwiązanie: Użyj PdfPaperSize z IronPdf.Rendering:

// PDFBolt
converter.PageSize = PageSize.A4;

// IronPDF
using IronPdf.Rendering;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
// PDFBolt
converter.PageSize = PageSize.A4;

// IronPDF
using IronPdf.Rendering;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
' PDFBolt
converter.PageSize = PageSize.A4

' IronPDF
Imports IronPdf.Rendering
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
$vbLabelText   $csharpLabel

Problem 5: Powolne generowanie pierwszego pliku PDF

Problem: Wstępne renderowanie trwa dłużej niż oczekiwano.

Rozwiązanie: Silnik Chromium inicjuje się przy pierwszym użyciu. W razie potrzeby przygotuj się wcześniej:

// Warm up during application startup
var renderer = new ChromePdfRenderer();
renderer.RenderHtmlAsPdf("<html><body></body></html>");
// Warm up during application startup
var renderer = new ChromePdfRenderer();
renderer.RenderHtmlAsPdf("<html><body></body></html>");
' Warm up during application startup
Dim renderer As New ChromePdfRenderer()
renderer.RenderHtmlAsPdf("<html><body></body></html>")
$vbLabelText   $csharpLabel

Lista kontrolna migracji

Przed migracją

  • Sporządź spis wszystkich miejsc użyciaPDFBoltw kodzie źródłowym
  • Dokumentuj bieżące ustawienia konfiguracyjne strony (rozmiar strony, marginesy)
  • Zidentyfikuj kod zarządzania kluczem API w celu usunięcia
  • Wymień wszelkie ograniczenia szybkości lub obsługę błędów sieciowych, które należy usunąć
  • Uzyskaj klucz licencyjny IronPDF

Zmiany w pakiecie

  • Usuń pakiet NuGet PDFBolt
  • Zainstaluj pakiet NuGet IronPdf: dotnet add package IronPdf
  • Dodaj przestrzeń nazw using IronPdf;
  • Dodaj using IronPdf.Rendering; dla wyliczeń rozmiarów papieru

Zmiany w kodzie

  • Dodaj konfigurację klucza licencyjnego podczas uruchamiania
  • Zastąp HtmlToPdfConverter przez ChromePdfRenderer
  • Zastąp ConvertHtmlString() przez RenderHtmlAsPdf()
  • Zastąp ConvertUrl() przez RenderUrlAsPdf()
  • Zastąp File.WriteAllBytes() przez pdf.SaveAs()
  • Zaktualizuj PageSize na RenderingOptions.PaperSize
  • Zaktualizuj właściwości marginesów na RenderingOptions.MarginTop itp.
  • Usuń kod zarządzania kluczem API
  • Usuń kod obsługujący ograniczenia szybkości
  • Usuń obsługę błędów sieciowych

Po migracji

  • Usuń klucz API z plików konfiguracyjnych
  • Usuń klucz API z menedżerów sekretów
  • Uruchom wszystkie testy porównujące wynik w formacie PDF
  • Sprawdź, czy rozmiary stron i marginesy wyświetlają się poprawnie
  • Rozważ dodanie nowych funkcji (znaki wodne, zabezpieczenia, scalanie)

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