IRONSOFTWAREHOME
FILMY

Jak konwertować widoki na pliki PDF w ASP.NET

Curtis Chau
Curtis Chau
Updated: 19 lipca 2026

Migracja zSAP Crystal Reportsdo IronPDF przekształca twój workflow raportowania z redystrybucyjnego runtime MSI z zależnościami z ery COM do nowoczesnego pakietu NuGet. Ten przewodnik zapewnia ścieżkę migracji krok po kroku, która eliminuje wymóg instalatora runtime, odblokowuje zależność SAP i umożliwia cele .NET 6/8/9 oraz Linux/Docker, które Crystal Reports dla Visual Studio (CR4VS) nie wspiera.

Dlaczego warto przejść zSAP Crystal Reportsna IronPDF

Zrozumienie SAP Crystal Reports

SAP Crystal Reports to platforma raportowania korporacyjnego szeroko stosowana do generowania raportów o "pikselowej dokładności", z szeroką łącznością źródeł danych i długotrwałym ekosystemem projektowania. Projektant Crystal Reports pozostaje produktywnym narzędziem do budowy złożonych układów raportów w stosie SAP.

Jednak architektura runtime z ery COM i footprint tylko dla Windows/.NET Framework tworzą trudności dla zespołów celujących w .NET 6/8/9, Linux lub wdrożenia nastawione na kontenery.

Główne powody migracji

  1. Redystrybucyjne MSI Runtime: Runtime Crystal Reports jest dostarczany jako instalator MSI (zwykle dziesiątki do kilku setek MB w zależności od 32/64-bit i języka) zamiast jako pakiet NuGet
  2. Zależność od ekosystemu SAP: Związanie z cyklami wydawniczymi SAP i roadmapą produktów; SAP potwierdziło zakończenie podstawowej konserwacji dla CR4VS na koniec 2027
  3. Licencjonowanie: Sam CR4VS można pobrać za darmo, a runtime można bezpłatnie redystrybuować, ale projektant rodziny Crystal Reports (CR 2020 / CR 2025) oraz Platforma BI to komercyjne jednostki SKU od SAP
  4. Architektura Dziedziczenia: Komponentowe DLL runtime zależne od COM celują w.NET Framework 4.xi nie mogą być ładowane pod .NET Core / .NET 5+
  5. Brak wsparcia dla .NET Core / .NET 5+: Nie ma roadmapy dla runtime Crystal Reports celującego w nowoczesne .NET; projekty pozostają przypięte do .NET Framework 4.x
  6. Runtimes 32-bitowe Zakończone: SAP potwierdził, że 32-bitowy CR .NET runtime jest zakończony po SP 39 (grudzień 2025); przyszłe pakiety serwisowe są tylko 64-bitowe
  7. Zależność Projektanta Raportów: Wymaga rozszerzenia CR4VS Visual Studio lub samodzielnego projektanta Crystal Reports do tworzenia plików .rpt

Ukryte koszty SAP Crystal Reports

Czynnik kosztowySAP Crystal ReportsIronPDF
Dystrybucja RuntimeInstalator redystrybucyjny MSIPakietNuGet
InstalacjaInstalator runtime + rozszerzenie VSdotnet add package IronPdf
WdrożenieUruchom MSI na maszynie docelowejxcopy / publikacja
Obsługa 64-bitowaTak (runtime 32-bitowy kończy się po SP 39, grudzień 2025)Język ojczysty
.NET Core / .NET 5+Nieobsługiwane (tylko Framework 4.x)Pełne wsparcie (.NET 6/8/9, Framework 4.6.2+)
Wdrożenie w chmurzeTylko maszyny wirtualne WindowsProste
Linux / DockerNieobsługiwane (tylko Windows)Obsługiwane

PorównanieSAP Crystal Reportsi IronPDF

FunkcjaSAP Crystal ReportsIronPDF
Podstawowa funkcjonalnośćPlatforma raportowania dla EnterpriseSilnik konwersji HTML do PDF i obróbka plików PDF
IntegracjaNajlepsze w ekosystemie SAPNowoczesna integracja z platformą .NET, lekki pakietNuGet
Łatwość użytkowaniaZłożona konfiguracja i wdrożenieUproszczona integracja, obsługa programistów .NET
Projektant raportówWymaganeOpcjonalnie (HTML/CSS)
Format szablonu.rpt (binarny)HTML/CSS
HTML do PDFNiePełny Chromium
URL do pliku PDFNieTak
Obsługa CSSNiePełny CSS3
JavaScriptNiePełna wersja ES2024
Manipulacja plikami PDFNiePełne (scal, podziel, edytuj)
Podpisy cyfroweNieTak
Zgodność z PDF/ANieTak
Współczesne znaczenieWychodzące z użycia, zastąpione przez nowoczesne alternatywyNowoczesne, dobrze zintegrowane z aktualnymi technologiami

Dla zespołów celujących w nowoczesne .NET (6, 8, 9) i wdrożenia międzyplatformowe,IronPDF zapewnia natywne wsparcie, które runtime Crystal Reports — przypięty do.NET Framework 4.x— nie może oferować.


Zanim zaczniesz

Wymagania wstępne

  1. Srodowisko .NET: .NET Framework 4.6.2+ lub .NET 6 / 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

# Crystal Reports for Visual Studio is not distributed by SAP on NuGet.
# Projects typically reference the GAC-installed CrystalDecisions.*.dll
# assemblies delivered by the CR4VS / CR runtime MSI. Community-maintained
#NuGetwrappers such as CrystalReports.Engine exist for build automation
# but are not official SAP packages.

# 1. Remove direct assembly references (CrystalDecisions.*.dll) from your .csproj
# 2. If using a communityNuGetwrapper, remove it:
dotnet remove package CrystalReports.Engine

# 3. Uninstall the Crystal Reports runtime MSI from build/deploy targets

# 4. Install IronPDF
dotnet add package IronPdf
SHELL

Konfiguracja licencji

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Kompletna dokumentacija API

Zmiany w przestrzeni nazw

// Before: SAP Crystal Reports
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using CrystalDecisions.ReportAppServer;

// After: IronPDF
using IronPdf;

Mapowania podstawowych interfejsów API

SAP Crystal ReportsIronPDFUwagi
ReportDocumentChromePdfRendererRenderowanie rdzenia
ReportDocument.Load()RenderHtmlAsPdf()Załaduj treść
pliki .rptSzablonyHTML/CSSFormat szablonu
SetDataSource()HTML z danymiPowiązanie danych
SetParameterValue()Interpolacja ciągów znakówParametry
ExportToDisk()pdf.SaveAs()Zapisz plik
ExportToStream()pdf.BinaryDataPobierz bajty
PrintToPrinter()pdf.Print()Drukowanie
Database.TablesDostęp do danych w języku C#Źródło danych
FormulaFieldDefinitionsLogika C#Obliczenia
SummaryInfopdf.MetaDataMetadane pliku PDF
ExportFormatType.PortableDocFormatDomyślny wynikPDF natywny

Przykłady migracji kodu

Przykład 1: Konwersja HTML do PDF

Przed (SAP Crystal Reports):

// NuGet: Install-Package CrystalReports.Engine
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System;

class Program
{
    static void Main()
    {
        // Crystal Reports requires a .rpt file template
        ReportDocument reportDocument = new ReportDocument();
        reportDocument.Load("Report.rpt");
        
        // Crystal Reports doesn't directly support HTML
        // You need to bind data to the report template
        // reportDocument.SetDataSource(dataSet);
        
        ExportOptions exportOptions = reportDocument.ExportOptions;
        exportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
        exportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
        
        DiskFileDestinationOptions diskOptions = new DiskFileDestinationOptions();
        diskOptions.DiskFileName = "output.pdf";
        exportOptions.DestinationOptions = diskOptions;
        
        reportDocument.Export();
        reportDocument.Close();
        reportDocument.Dispose();
    }
}

Po (IronPDF):

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

class Program
{
    static void Main()
    {
        // Create a PDF from HTML string
        var renderer = new ChromePdfRenderer();
        
        string htmlContent = "<h1>Hello World</h1><p>This is a PDF generated from HTML.</p>";
        
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
        
        Console.WriteLine("PDF created successfully!");
    }
}

Ten przykład ilustruje fundamentalną różnicę paradygmatyczną.SAP Crystal Reportswymaga wstępnie zaprojektowanego szablonu pliku .rpt utworzonego w Crystal Reports Designer, następnie musisz skonfigurować ExportOptions, ExportDestinationType, ExportFormatType, oraz DiskFileDestinationOptions. Biblioteka nie obsługuje bezpośrednio treści HTML — dane należy powiązać z szablonem raportu.

IronPDF akceptuje bezpośrednio ciągi HTML: utwórz ChromePdfRenderer, wywołaj RenderHtmlAsPdf() z jakąkolwiek zawartością HTML i SaveAs(). Nie jest wymagany projektant, nie ma szablonów binarnych ani skomplikowanej konfiguracji eksportu. 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 (SAP Crystal Reports):

// NuGet: Install-Package CrystalReports.Engine
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System;
using System.Net;

class Program
{
    static void Main()
    {
        // Crystal Reports cannot directly convert URLs to PDF
        // You need to create a report template first
        
        // Download HTML content
        WebClient client = new WebClient();
        string htmlContent = client.DownloadString("https://example.com");
        
        // Crystal Reports requires .rpt template and data binding
        // This approach is not straightforward for URL conversion
        ReportDocument reportDocument = new ReportDocument();
        reportDocument.Load("WebReport.rpt");
        
        // Manual data extraction and binding required
        // reportDocument.SetDataSource(extractedData);
        
        reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, "output.pdf");
        reportDocument.Close();
        reportDocument.Dispose();
    }
}

Po (IronPDF):

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

class Program
{
    static void Main()
    {
        // Create a PDF from a URL
        var renderer = new ChromePdfRenderer();
        
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("output.pdf");
        
        Console.WriteLine("PDF created from URL successfully!");
    }
}

SAP Crystal Reports nie może bezpośrednio konwertować adresów URL do formatu PDF. Musisz ręcznie pobrać zawartość HTML za pomocą WebClient, a następnie w jakiś sposób wyodrębnić i powiązać te dane z wstępnie zaprojektowanym szablonem .rpt - proces ten nie jest prosty i wymaga znacznej pracy ręcznej.

Metoda RenderUrlAsPdf()IronPDF przechwytuje w pełni renderowaną stronę internetową ze wszystkimi CSS,JavaScripti obrazami w jednym wywołaniu. Dowiedz się więcej z naszych samouczków.

Przykład 3: Nagłówki i stopki z numerami stron

Przed (SAP Crystal Reports):

// NuGet: Install-Package CrystalReports.Engine
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System;

class Program
{
    static void Main()
    {
        // Crystal Reports requires design-time configuration
        ReportDocument reportDocument = new ReportDocument();
        reportDocument.Load("Report.rpt");
        
        // Headers and footers must be designed in the .rpt file
        // using Crystal Reports designer
        // You can set parameter values programmatically
        reportDocument.SetParameterValue("HeaderText", "Company Name");
        reportDocument.SetParameterValue("FooterText", "Page ");
        
        // Crystal Reports handles page numbers through formula fields
        // configured in the designer
        
        reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, "output.pdf");
        reportDocument.Close();
        reportDocument.Dispose();
    }
}

Po (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        
        // Configure headers and footers
        renderer.RenderingOptions.TextHeader.CenterText = "Company Name";
        renderer.RenderingOptions.TextHeader.FontSize = 12;
        
        renderer.RenderingOptions.TextFooter.LeftText = "Confidential";
        renderer.RenderingOptions.TextFooter.RightText = "Page {page} of {total-pages}";
        renderer.RenderingOptions.TextFooter.FontSize = 10;
        
        string htmlContent = "<h1>Document Title</h1><p>Document content goes here.</p>";
        
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
        
        Console.WriteLine("PDF with headers and footers created!");
    }
}

SAP Crystal Reports wymaga konfiguracji nagłówków i stopek w czasie projektowania. Musisz je zaprojektować w pliku .rpt używając Crystal Reports Designer, a następnie przekazać wartości parametrów, takich jak "HeaderText" oraz "FooterText" podczas działania programu. Numery stron muszą być skonfigurowane przez pola formuły w projektancie.

IronPDF zapewnia programową konfigurację nagłówka/stopki za pomocą właściwości TextHeader oraz TextFooter. Ustaw CenterText, LeftText, RightText i FontSize bezpośrednio w kodzie. Numery stron używają zastępczych {page} i {total-pages} - nie jest wymagany projektant.


Typowe problemy związane z migracją

Problem 1: Konwersja plików .rpt

SAP Crystal Reports: Pliki binarne .rpt z osadzonym układem, danymi i formułami.

Rozwiązanie: Nie można dokonać bezpośredniej konwersji — należy odtworzyć jako HTML:

  1. Otwórz plik .rpt w programie Crystal Reports Designer
  2. Układ dokumentu, czcionki, kolory
  3. Zwróć uwagę na wszystkie pola formuł
  4. Odtwórz w HTML/CSS
  5. Przekonwertuj formuły na kod C#

Problem 2: Połączenia z bazą danych

SAP Crystal Reports: Wbudowane ciągi połączeń i ODBC.

Rozwiązanie: Użyj warstwy danych twojej aplikacji:

// Instead of Crystal's database integration
var data = await _dbContext.Orders
    .Where(o => o.Date >= startDate && o.Date <= endDate)
    .ToListAsync();

// Bind to HTML template
var html = GenerateReportHtml(data);

Problem 3: Zależności runtime

SAP Crystal Reports: Wymaga instalacji runtime Crystal Reports (500MB+).

**Rozwiązanie:**IronPDF jest samodzielne do wдиндека:

# Just add theNuGetpackage
dotnet add package IronPdf
# That's it - no additional installs needed
SHELL

Problem 4: 32-bit/64-bit i przypięcie do .NET Framework

SAP Crystal Reports: Runtime Crystal Reports jest zależny od COM i jest dostarczany w oddzielnych MSI 32-bitowych i 64-bitowych. SAP potwierdził, że 32-bitowy CR .NET runtime jest zakończony po SP 39 (grudzień 2025); przyszłe pakiety serwisowe są tylko 64-bitowe. Runtime celuje w.NET Framework 4.xi nie może być ładowany pod .NET Core / .NET 5+.

**Rozwiązanie:**IronPDF działa na .NET Framework 4.6.2+, .NET 6, .NET 8 i .NET 9 — w tym Linux i Docker. Nie wymaga specjalnej konfiguracji dla 64-bitowego lub AnyCPU.


Nowe możliwości po migracji

Po migracji do IronPDF uzyskasz możliwości, którychSAP Crystal Reportsnie zapewnia:

Łączenie plików PDF

var pdf1 = PdfDocument.FromFile("report1.pdf");
var pdf2 = PdfDocument.FromFile("report2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("complete_report.pdf");

Zabezpieczenia plików PDF

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(reportHtml);

pdf.MetaData.Title = "Quarterly Sales Report";
pdf.MetaData.Author = "Finance Department";

pdf.SecuritySettings.OwnerPassword = "admin123";
pdf.SecuritySettings.UserPassword = "view123";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;

pdf.SaveAs("secure_report.pdf");

Podpisy cyfrowe

var signature = new PdfSignature("certificate.pfx", "password");
pdf.Sign(signature);

Znaki wodne

using IronPdf.Editing;

pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>");

Podsumowanie porównania funkcji

FunkcjaSAP Crystal ReportsIronPDF
:Installation:
Metoda instalacjiMSI + rozszerzenie Visual StudioNuGet
WdrożenieUruchom MSI na maszynie docelowejxcopy / publikacja
:Wsparcie platformy:
.NET Core / .NET 5+NieobsługiwaneTak (.NET 6/8/9)
64-bitowe natywneTak (32-bit kończy się po SP 39, grudzień 2025)Tak
Linux / DockerNieobsługiwane (tylko Windows)Tak
Azure / AWSTylko maszyny wirtualne WindowsProste
:Rozwój:
Format szablonu.rpt (binarny)HTML/CSS
Krzywa uczenia sięSkładnia CrystalStandardy internetowe
IntelliSenseNiePełny C#
:Rendering:
URL do pliku PDFNieTak
Obsługa CSSNiePełny CSS3
JavaScriptNiePełna wersja ES2024
:Funkcje PDF:
Podział plików PDFNieTak
Znaki wodneOgraniczonePełny kod HTML
Podpisy cyfroweNieTak
PDF/ANieTak

Lista kontrolna migracji

Przed migracją

  • Inwentaryzuj wszystkie pliki .rpt
  • Zrób zrzut ekranu układu każdego raportu jako odniesienie
  • Udokumentuj pola formuł i obliczenia
  • Wymień wszystkie źródła danych i parametry
  • Określ wymagania dotyczące drukowania
  • Uzyskaj klucz licencyjny IronPDF ze strony ironpdf.com

Aktualizacje kodu

  • Usuń pakiety Crystal Reports (CrystalDecisions.CrystalReports.Engine, itp.)
  • Usuń instalację czasu wykonania z wdrożenia
  • Zainstaluj pakietNuGetIronPdf
  • Przekształć układy .rpt na szablony HTML/CSS
  • Przekształć formuły Crystal na kod C#
  • Zaktualizuj powiązanie danych z SetDataSource() do interpolacji ciągów HTML
  • Zaktualizuj kod drukowania z PrintToPrinter() do pdf.Print()
  • Dodaj inicjalizację licencji podczas uruchamiania aplikacji

Infrastruktura

  • Usuń Crystal Runtime z serwerów
  • Aktualizacja skryptów wdrażania
  • Usuń tryb kompatybilności 32-bitowy
  • Zaktualizuj obrazy Docker (jeśli dotyczy)

Testowanie

  • Porównaj wyjście PDF z oryginalnymi raportami
  • Zweryfikuj wszystkie obliczenia
  • Przetestuj wszystkie parametry
  • Funkcja drukowania testowego
  • Testy wydajności
  • Testowanie 64-bitowe

Zwróć uwagę: SAP Crystal Reports to zarejestrowany znak towarowy jego właściciela. Ta strona nie jest powiązana, sponsorowana ani autoryzowana przez SAP. Wszystkie nazwy produktów, loga i marki są własnością ich 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ęczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta