Jak przeprowadzić migrację z FastReport do IronPDF w języku C#
FastReport.NET to potężne rozwiązanie do tworzenia raportów stworzone dla ekosystemu .NET, wyposażone w wizualny projektant raportów i architekturę opartą na pasmach do tworzenia złożonych raportów opartych na danych. JednakFastReportstwarza poważne wyzwania dla nowoczesnych procesów tworzenia plików PDF: zależność od projektanta raportów, która ogranicza programowanie oparte na kodzie, stroma krzywa uczenia się w zakresie koncepcji opartych na paskach (DataBand, PageHeaderBand), ograniczona obsługa CSS przy użyciu zastrzeżonego formatowania, złożone powiązanie danych z szablonem RegisterData() oraz fragmentaryczne pakiety NuGet wymagające wielu instalacji. Ten kompleksowy przewodnik przedstawia krok po kroku ścieżkę migracji zFastReportdoIronPDF— uniwersalnej biblioteki PDF, która wykorzystuje technologie internetowe HTML/CSS do elastycznego, programowego generowania dokumentów.
Dlaczego warto przejść zFastReportna IronPDF?
Specjalizacja FastReport.NET w tworzeniu raportów stanowi przeszkodę dla zespołów programistycznych potrzebujących wszechstronnego generowania plików PDF. Zrozumienie tych różnic architektonicznych jest niezbędne do zaplanowania migracji.
Wyzwania związane z FastReport
-
Zależność od projektanta raportów: Tworzenie złożonych układów wymaga użycia wizualnego projektanta lub dogłębnej znajomości struktury plików .frx — nie nadaje się do podejść programistycznych opartych na kodzie.
-
Stroma krzywa uczenia się: Architektura oparta na pasmach wFastReport(DataBand, PageHeaderBand, PageFooterBand) wymaga zrozumienia koncepcji specyficznych dla raportów, które nie mają zastosowania w innych technologiach.
-
Ograniczona obsługa CSS: Stylizacja zgodna ze standardami internetowymi nie jest obsługiwana natywnie; Stylizacja odbywa się za pomocą własnego formatu FastReport, a nie znanego CSS.
-
Złożone powiązania danych: Metody RegisterData() i połączenia DataSource dodają szablonowy kod w prostych scenariuszach generowania plików PDF.
-
Pakiety fragmentaryczne: Do pełnej funkcjonalności potrzebnych jest wiele pakietów NuGet (FastReport.OpenSource, FastReport.OpenSource.Export.PdfSimple itp.).
- Złożoność licencji: Wersja open source ma ograniczone funkcje; Wymagana jest wersja komercyjna do szyfrowania plików PDF, podpisywania cyfrowego i osadzania czcionek.
Porównanie architektur
| Aspekt | FastReport | IronPDF |
|---|---|---|
| Podejście projektowe | Projektant wizualny + pliki .frx | HTML/CSS (technologie internetowe) |
| Krzywa uczenia się | Steep (koncepcje oparte na pasmach) | Łagodny (znajomość HTML/CSS) |
| Powiązanie danych | RegisterData(), DataBand | Interpolacja ciągów znaków, Razor, szablony |
| Obsługa CSS | Ograniczone | Pełna obsługa CSS3 z Flexbox/Grid |
| Model pakietu | Wiele pakietów | Pojedynczy pakiet (wszystkie funkcje) |
| Silnik renderujący | Niestandardowe | Najnowsza wersja Chromium |
| Manipulacja plikami PDF | Skupienie na eksporcie | Pełne (scalanie, dzielenie, bezpieczeństwo, formularze) |
| Nowoczesny .NET | .NET Standard 2.0 | .NET 6/7/8/9+ natywne |
Kluczowe korzyści z migracji
- Technologie internetowe: Należy stosować znane HTML/CSS zamiast zastrzeżonych układów opartych na paskach
- Tworzenie oprogramowania metodą "Code-First": Generowanie plików PDF programowo bez zależności od wizualnego projektanta
- Pojedynczy pakiet: Jeden pakiet NuGet zawiera wszystkie funkcje PDF
- Modern Rendering: najnowszy silnik Chromium zapewniający idealną wyświetlanie CSS3
- Pełna obsługa plików PDF: scalanie, dzielenie, zabezpieczenia, formularze — nie tylko eksport
Przygotowania przed migracją
Wymagania wstępne
Upewnij się, że Twoje środowisko spełnia następujące wymagania:
- .NET Framework 4.6.2+ lub .NET Core 3.1 / .NET 5-9
- Visual Studio 2019+ lub VS Code z rozszerzeniem C#
- Dostęp do menedżera pakietów NuGet
- Klucz licencyjnyIronPDF(bezpłatna wersja próbna dostępna na stronie ironpdf.com)
Audyt wykorzystania FastReport
Uruchom te polecenia w katalogu rozwiązania, aby zidentyfikować wszystkie odwołania do FastReport:
# Find allFastReportreferences
grep -r "FastReport\|\.frx\|PDFExport\|PDFSimpleExport\|DataBand\|RegisterData" --include="*.cs" --include="*.csproj" .
# Check NuGet packages
dotnet list package | grep FastReport
# Find allFastReportreferences
grep -r "FastReport\|\.frx\|PDFExport\|PDFSimpleExport\|DataBand\|RegisterData" --include="*.cs" --include="*.csproj" .
# Check NuGet packages
dotnet list package | grep FastReport
Dokumentuj swoje szablony raportów
Przed migracją należy sporządzić katalog wszystkich plików .frx wraz z opisem ich przeznaczenia:
- Nazwa i cel raportu
- Wykorzystane źródła danych
- Konfiguracja nagłówków/stopek
- Wymagania dotyczące numeracji stron
- Specjalne formatowanie lub stylizacja
Zrozumienie zmiany paradygmatu
Najważniejszą zmianą przy migracji zFastReportdoIronPDFjest fundamentalne podejście projektowe.FastReportwykorzystuje projektowanie wizualne oparte na paskach z plikami szablonów .frx oraz własne koncepcje, takie jak DataBand, PageHeaderBand i RegisterData().IronPDFwykorzystuje HTML/CSS — technologie internetowe, które większość programistów już zna.
Oznacza to konwersję konfiguracji paskówFastReportna szablony HTML, zastąpienie funkcji RegisterData() bezpośrednim powiązaniem danych poprzez interpolację ciągów znaków lub szablony Razor oraz przekształcenie pasków PageHeaderBand/PageFooterBand w nagłówki i stopki oparte na HTML.
Proces migracji krok po kroku
Krok 1: Zaktualizuj pakiety NuGet
Usuń wszystkie pakietyFastReporti zainstaluj IronPDF:
# Remove allFastReportpackages
dotnet remove package FastReport.OpenSource
dotnet remove package FastReport.OpenSource.Export.PdfSimple
dotnet remove package FastReport.OpenSource.Web
dotnet remove package FastReport.OpenSource.Data.MsSql
# InstallIronPDF(includes all features)
dotnet add package IronPdf
# Remove allFastReportpackages
dotnet remove package FastReport.OpenSource
dotnet remove package FastReport.OpenSource.Export.PdfSimple
dotnet remove package FastReport.OpenSource.Web
dotnet remove package FastReport.OpenSource.Data.MsSql
# InstallIronPDF(includes all features)
dotnet add package IronPdf
Krok 2: Aktualizacja odniesień do przestrzeni nazw
Zastąp przestrzenie nazwFastReportnazwą IronPDF:
// Remove these
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;
// Add this
using IronPdf;
// Remove these
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;
// Add this
using IronPdf;
Imports IronPdf
Krok 3: Skonfiguruj licencję
// 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"
Kompletna dokumentacja API
Mapowanie klas podstawowych
| KlasaFastReport | OdpowiednikIronPDF |
|---|---|
Report |
ChromePdfRenderer |
PDFExport |
ChromePdfRenderer + SecuritySettings |
PDFSimpleExport |
ChromePdfRenderer |
ReportPage |
HTML <body> lub <div> |
TextObject |
HTML <p>, <span>, <div> |
HTMLObject |
Bezpośrednie renderowanie HTML |
PageHeaderBand |
HtmlHeaderFooter |
PageFooterBand |
HtmlHeaderFooter |
Mapowanie metod
| MetodaFastReport | OdpowiednikIronPDF |
|---|---|
report.Load("template.frx") |
Plik szablonu HTML lub ciąg znaków |
report.RegisterData(data, "name") |
Interpolacja ciągów znaków lub Razor |
report.Prepare() |
Nie dotyczy |
report.Export(export, stream) |
pdf.SaveAs(path) |
Konwersja symboli zastępczych numerów stron
FastReport iIronPDFużywają różnych składni symboli zastępczych dla numerów stron:
| FastReport | IronPDF |
|---|---|
[Page] |
{page} |
[TotalPages] |
{total-pages} |
Przykłady migracji kodu
Konwersja HTML do PDF
Ten przykład ilustruje zasadniczą różnicę między podejściemFastReportopartym na HTMLObject a bezpośrednim renderowaniem w IronPDF.
Wdrożenie FastReport:
// NuGet: Install-Package FastReport.OpenSource
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;
class Program
{
static void Main()
{
using (Report report = new Report())
{
// Create HTML object
FastReport.HTMLObject htmlObject = new FastReport.HTMLObject();
htmlObject.Width = 500;
htmlObject.Height = 300;
htmlObject.Text = "<html><body><h1>Hello World</h1><p>This is a test PDF</p></body></html>";
// Prepare report
report.Prepare();
// Export to PDF
PDFSimpleExport pdfExport = new PDFSimpleExport();
using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
{
report.Export(pdfExport, fs);
}
}
}
}
// NuGet: Install-Package FastReport.OpenSource
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;
class Program
{
static void Main()
{
using (Report report = new Report())
{
// Create HTML object
FastReport.HTMLObject htmlObject = new FastReport.HTMLObject();
htmlObject.Width = 500;
htmlObject.Height = 300;
htmlObject.Text = "<html><body><h1>Hello World</h1><p>This is a test PDF</p></body></html>";
// Prepare report
report.Prepare();
// Export to PDF
PDFSimpleExport pdfExport = new PDFSimpleExport();
using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
{
report.Export(pdfExport, fs);
}
}
}
}
Imports FastReport
Imports FastReport.Export.PdfSimple
Imports System.IO
Class Program
Shared Sub Main()
Using report As New Report()
' Create HTML object
Dim htmlObject As New FastReport.HTMLObject()
htmlObject.Width = 500
htmlObject.Height = 300
htmlObject.Text = "<html><body><h1>Hello World</h1><p>This is a test PDF</p></body></html>"
' Prepare report
report.Prepare()
' Export to PDF
Dim pdfExport As New PDFSimpleExport()
Using fs As New FileStream("output.pdf", FileMode.Create)
report.Export(pdfExport, fs)
End Using
End Using
End Sub
End Class
Wdrożenie IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1><p>This is a test PDF</p></body></html>");
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1><p>This is a test PDF</p></body></html>");
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1><p>This is a test PDF</p></body></html>")
pdf.SaveAs("output.pdf")
End Sub
End Class
FastReport wymaga utworzenia obiektu Report, obiektu HTMLObject o stałych wymiarach, przygotowania raportu i eksportu za pomocą strumienia — siedem linii kodu z instrukcjami using.IronPDFosiąga ten sam rezultat w trzech wierszach dzięki bezpośredniemu renderowaniu HTML. Aby uzyskać więcej opcji, zapoznaj się z dokumentacją dotyczącą konwersji HTML do PDF.
Konwersja adresów URL do formatu PDF
Ten przykład pokazuje, żeFastReportwymaga ręcznego pobierania kodu HTML, podczas gdyIronPDFobsługuje renderowanie adresów URL natywnie.
Wdrożenie FastReport:
// NuGet: Install-Package FastReport.OpenSource
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;
using System.Net;
class Program
{
static void Main()
{
// Download HTML content from URL
string htmlContent;
using (WebClient client = new WebClient())
{
htmlContent = client.DownloadString("https://example.com");
}
using (Report report = new Report())
{
FastReport.HTMLObject htmlObject = new FastReport.HTMLObject();
htmlObject.Width = 800;
htmlObject.Height = 600;
htmlObject.Text = htmlContent;
report.Prepare();
PDFSimpleExport pdfExport = new PDFSimpleExport();
using (FileStream fs = new FileStream("webpage.pdf", FileMode.Create))
{
report.Export(pdfExport, fs);
}
}
}
}
// NuGet: Install-Package FastReport.OpenSource
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;
using System.Net;
class Program
{
static void Main()
{
// Download HTML content from URL
string htmlContent;
using (WebClient client = new WebClient())
{
htmlContent = client.DownloadString("https://example.com");
}
using (Report report = new Report())
{
FastReport.HTMLObject htmlObject = new FastReport.HTMLObject();
htmlObject.Width = 800;
htmlObject.Height = 600;
htmlObject.Text = htmlContent;
report.Prepare();
PDFSimpleExport pdfExport = new PDFSimpleExport();
using (FileStream fs = new FileStream("webpage.pdf", FileMode.Create))
{
report.Export(pdfExport, fs);
}
}
}
}
Imports FastReport
Imports FastReport.Export.PdfSimple
Imports System.IO
Imports System.Net
Class Program
Shared Sub Main()
' Download HTML content from URL
Dim htmlContent As String
Using client As New WebClient()
htmlContent = client.DownloadString("https://example.com")
End Using
Using report As New Report()
Dim htmlObject As New FastReport.HTMLObject()
htmlObject.Width = 800
htmlObject.Height = 600
htmlObject.Text = htmlContent
report.Prepare()
Dim pdfExport As New PDFSimpleExport()
Using fs As New FileStream("webpage.pdf", FileMode.Create)
report.Export(pdfExport, fs)
End Using
End Using
End Sub
End Class
Wdrożenie IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://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://example.com");
pdf.SaveAs("webpage.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Class
FastReport wymaga ręcznego pobierania treści HTML za pomocą WebClient, a następnie osadzania jej w HTMLObject o stałych wymiarach — jest to obejście, które nie obsługuje prawidłowo wykonywania kodu JavaScript ani względnych adresów URL zasobów. Funkcja RenderUrlAsPdf wIronPDFbezpośrednio renderuje aktywną stronę internetową z pełnym wykonaniem kodu JavaScript przy użyciu silnika Chromium. Aby uzyskać więcej opcji, zapoznaj się z dokumentacją dotyczącą konwersji URL na PDF.
Nagłówki i stopki z numerami stron
Ten przykład ilustruje różnicę w złożoności między systemem opartym na paskachFastReporta podejściem opartym na HTML w IronPDF.
Wdrożenie FastReport:
// NuGet: Install-Package FastReport.OpenSource
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;
class Program
{
static void Main()
{
using (Report report = new Report())
{
report.Load("template.frx");
// Set report page properties
FastReport.ReportPage page = report.Pages[0] as FastReport.ReportPage;
// Add page header
FastReport.PageHeaderBand header = new FastReport.PageHeaderBand();
header.Height = 50;
FastReport.TextObject headerText = new FastReport.TextObject();
headerText.Text = "Document Header";
header.Objects.Add(headerText);
page.Bands.Add(header);
// Add page footer
FastReport.PageFooterBand footer = new FastReport.PageFooterBand();
footer.Height = 50;
FastReport.TextObject footerText = new FastReport.TextObject();
footerText.Text = "Page [Page]";
footer.Objects.Add(footerText);
page.Bands.Add(footer);
report.Prepare();
PDFSimpleExport pdfExport = new PDFSimpleExport();
using (FileStream fs = new FileStream("report.pdf", FileMode.Create))
{
report.Export(pdfExport, fs);
}
}
}
}
// NuGet: Install-Package FastReport.OpenSource
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;
class Program
{
static void Main()
{
using (Report report = new Report())
{
report.Load("template.frx");
// Set report page properties
FastReport.ReportPage page = report.Pages[0] as FastReport.ReportPage;
// Add page header
FastReport.PageHeaderBand header = new FastReport.PageHeaderBand();
header.Height = 50;
FastReport.TextObject headerText = new FastReport.TextObject();
headerText.Text = "Document Header";
header.Objects.Add(headerText);
page.Bands.Add(header);
// Add page footer
FastReport.PageFooterBand footer = new FastReport.PageFooterBand();
footer.Height = 50;
FastReport.TextObject footerText = new FastReport.TextObject();
footerText.Text = "Page [Page]";
footer.Objects.Add(footerText);
page.Bands.Add(footer);
report.Prepare();
PDFSimpleExport pdfExport = new PDFSimpleExport();
using (FileStream fs = new FileStream("report.pdf", FileMode.Create))
{
report.Export(pdfExport, fs);
}
}
}
}
Imports FastReport
Imports FastReport.Export.PdfSimple
Imports System.IO
Class Program
Shared Sub Main()
Using report As New Report()
report.Load("template.frx")
' Set report page properties
Dim page As FastReport.ReportPage = TryCast(report.Pages(0), FastReport.ReportPage)
' Add page header
Dim header As New FastReport.PageHeaderBand()
header.Height = 50
Dim headerText As New FastReport.TextObject()
headerText.Text = "Document Header"
header.Objects.Add(headerText)
page.Bands.Add(header)
' Add page footer
Dim footer As New FastReport.PageFooterBand()
footer.Height = 50
Dim footerText As New FastReport.TextObject()
footerText.Text = "Page [Page]"
footer.Objects.Add(footerText)
page.Bands.Add(footer)
report.Prepare()
Dim pdfExport As New PDFSimpleExport()
Using fs As New FileStream("report.pdf", FileMode.Create)
report.Export(pdfExport, fs)
End Using
End Using
End Sub
End Class
Wdrożenie IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
// Configure header and footer
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:center'>Document Header</div>"
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>"
};
var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Report Content</h1><p>This is the main content.</p></body></html>");
pdf.SaveAs("report.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
// Configure header and footer
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:center'>Document Header</div>"
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>"
};
var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Report Content</h1><p>This is the main content.</p></body></html>");
pdf.SaveAs("report.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
' Configure header and footer
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
.HtmlFragment = "<div style='text-align:center'>Document Header</div>"
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
.HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>"
}
Dim pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Report Content</h1><p>This is the main content.</p></body></html>")
pdf.SaveAs("report.pdf")
End Sub
End Class
FastReport wymaga załadowania pliku szablonu, rzutowania obiektów strony, tworzenia obiektów pasków, ustawiania wysokości, tworzenia obiektów tekstowych, dodawania do kolekcji pasków oraz dodawania pasków do stron.IronPDFużywa HtmlHeaderFooter z prostymi fragmentami HTML — nagłówki i stopki można stylizować za pomocą pełnego CSS. Zwróć uwagę na zmianę składni numerów stron: [Page] zmienia się w {page}, a [TotalPages] zmienia się w {total-pages}. Aby uzyskać więcej opcji, zapoznaj się z dokumentacją dotyczącą nagłówków i stopek.
Ważne uwagi dotyczące migracji
Brak plików szablonów .frx
SzablonyFastReport(.frx) nie będą działać z IronPDF. Przekonwertuj swoje układy na szablony HTML/CSS:
//FastReport- loads .frx template
report.Load("report.frx");
//IronPDF- use HTML template
var html = File.ReadAllText("template.html");
var pdf = renderer.RenderHtmlAsPdf(html);
//FastReport- loads .frx template
report.Load("report.frx");
//IronPDF- use HTML template
var html = File.ReadAllText("template.html");
var pdf = renderer.RenderHtmlAsPdf(html);
' FastReport - loads .frx template
report.Load("report.frx")
' IronPDF - use HTML template
Dim html As String = File.ReadAllText("template.html")
Dim pdf = renderer.RenderHtmlAsPdf(html)
Konwersja powiązania danych
Zastąp RegisterData() bezpośrednim generowaniem kodu HTML:
// FastReport
report.RegisterData(dataSet, "Data");
report.GetDataSource("Data").Enabled = true;
//IronPDF- use string interpolation or StringBuilder
var html = new StringBuilder();
foreach (var item in data)
{
html.Append($"<tr><td>{item.Name}</td><td>{item.Value}</td></tr>");
}
var pdf = renderer.RenderHtmlAsPdf(html.ToString());
// FastReport
report.RegisterData(dataSet, "Data");
report.GetDataSource("Data").Enabled = true;
//IronPDF- use string interpolation or StringBuilder
var html = new StringBuilder();
foreach (var item in data)
{
html.Append($"<tr><td>{item.Name}</td><td>{item.Value}</td></tr>");
}
var pdf = renderer.RenderHtmlAsPdf(html.ToString());
Imports System.Text
' FastReport
report.RegisterData(dataSet, "Data")
report.GetDataSource("Data").Enabled = True
' IronPDF - use string interpolation or StringBuilder
Dim html As New StringBuilder()
For Each item In data
html.Append($"<tr><td>{item.Name}</td><td>{item.Value}</td></tr>")
Next
Dim pdf = renderer.RenderHtmlAsPdf(html.ToString())
Ustawienia zabezpieczeń
//IronPDFsecurity
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "password";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
//IronPDFsecurity
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "password";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
'IronPDFsecurity
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SecuritySettings.UserPassword = "password"
pdf.SecuritySettings.OwnerPassword = "ownerPassword"
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights
Aby uzyskać informacje na temat kompleksowych opcji bezpieczeństwa, zapoznaj się z dokumentacją dotyczącą szyfrowania.
Lista kontrolna po migracji
Po zakończeniu migracji kodu sprawdź, czy:
- Wizualne porównanie wygenerowanych plików PDF
- Sprawdź nagłówki/stopki i numery stron
- Testowanie przy użyciu rzeczywistych zbiorów danych
- Sprawdź funkcje bezpieczeństwa/szyfrowania
- Testy porównawcze wydajności
- Usuń nieużywane pliki szablonów .frx
- Usuń kod związany z FastReport
- Aktualizacja dokumentacji
Zabezpieczenie infrastruktury PDF na przyszłość
W obliczu zbliżającej się premiery .NET 10 i wprowadzenia nowych funkcji językowych w C# 14, wybór biblioteki PDF wykorzystującej nowoczesne technologie internetowe zapewnia długoterminową łatwość utrzymania. PodejścieIronPDFdo HTML/CSS oznacza, że Twoje szablony wykorzystują te same umiejętności, co w tworzeniu stron internetowych — bez zastrzeżonych koncepcji opartych na paskach, których nie da się przenieść na inne technologie. W miarę jak projekty rozciągają się na lata 2025 i 2026, możliwość korzystania ze standardowych szablonów HTML z funkcjami CSS3, takimi jak Flexbox i Grid, zapewnia elastyczność projektowania, której nie może dorównać autorskie formatowanie FastReport.
Dodatkowe zasoby
- Dokumentacja IronPDF
- Samouczki dotyczące konwersji HTML do PDF
- Dokumentacja API
- Pakiet NuGet
- Opcje licencyjne
Przejście zFastReportnaIronPDFeliminuje zależność od wizualnego projektanta, krzywą uczenia się opartą na paskach oraz fragmentaryczny model pakietów. Przejście na generowanie plików PDF w oparciu o HTML/CSS wykorzystuje znane technologie internetowe, zapewniając jednocześnie pełne możliwości manipulacji plikami PDF — scalanie, dzielenie, zabezpieczenia i formularze — w jednym pakiecie.

