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:
-
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.
-
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.
-
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.
-
Zależność od sieci: Awarie Internetu lub przerwy w działaniu serwisuPDFBoltoznaczają całkowite wstrzymanie generowania plików PDF.
-
Opóźnienie: W porównaniu z przetwarzaniem lokalnym, przesył danych w obie strony w sieci wydłuża każdą konwersję o kilka sekund.
-
Kwestie zgodności: Audyty dotyczące RODO, HIPAA i SOC2 są skomplikowane ze względu na przetwarzanie dokumentów zewnętrznych.
-
Bezpieczeństwo kluczy API: Wyciek kluczy API może skutkować nieautoryzowanym wykorzystaniem, za które zostanie naliczona opłata na Twoim koncie.
- 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
- Środowisko .NET: .NET Framework 4.6.2+ lub .NET Core 3.1+ / .NET 5/6/7/8/9+
- Dostęp do NuGet: Możliwość instalowania pakietów NuGet
- 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
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"
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" .
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
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
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
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
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
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
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.A4→PdfPaperSize.A4(inna nazwa wyliczenia)MarginTop = 20→RenderingOptions.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
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()
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
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()
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
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")
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()
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)
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)
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
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>")
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
HtmlToPdfConverterprzezChromePdfRenderer - Zastąp
ConvertHtmlString()przezRenderHtmlAsPdf() - Zastąp
ConvertUrl()przezRenderUrlAsPdf() - Zastąp
File.WriteAllBytes()przezpdf.SaveAs() - Zaktualizuj
PageSizenaRenderingOptions.PaperSize - Zaktualizuj właściwości marginesów na
RenderingOptions.MarginTopitp. - 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)

