IRONSOFTWAREHOME
FILMY

Jak konwertować strony Razor do formatu PDF w aplikacji internetowej ASP .NET Core

Curtis Chau
Curtis Chau
Updated: 19 lipca 2026

Przejście z ABCpdf dla .NET na IronPDF for .NET to strategiczna aktualizacja dla zespołów programistów, które chcą uprościć licencjonowanie, uzyskać nowoczesną dokumentację i natywną obsługę wielu platform. Ten szczegółowy przewodnik zawiera szczegółowy plan migracji, wraz z mapowaniami API i przykładami konwersji kodu z rzeczywistych scenariuszy.

Niezależnie od tego, czy pracujesz z .NET Framework 4.6.2, czy celujesz w .NET 9, ten przewodnik po migracji ABCpdf zapewnia łatwe przejście do silnika renderującego opartego na Chrome w IronPDF.

Dlaczego warto rozważyć migrację do ABCpdf?

ABCpdf od WebSupergoo (aktualna linia: v13.4.4, wydanie 9 kwietnia 2026) od lat jest zdolną biblioteką PDF dla .NET. Jednak kilka czynników sprawia, że IronPDF jest atrakcyjną alternatywą dla nowoczesnych zespołów deweloperskich.

Złożoność licencji

ABCpdf używa modelu licencjonowania warstwowego, który może wymagać wysiłku przy nawigacji. Standardowa licencja na jeden komputer to $329 (tylko 32-bitowa); Professional to $479; Profesjonalna redystrybucja to $4 790; grupowa licencja wynosi $33 530. Licencje są wieczyste, a klucze v13 obejmują również v8–v12. Wielu programistów zgłasza labirynt poziomów jako znaczące obciążenie administracyjne przy budżetowaniu projektów.

Architektura zorientowana na Windows (do v13)

ABCpdf był tylko na Windows przez większość swojej historii. Wsparcie dla Linux dodano w v13 za pomocą pakietów uruchomieniowych ABCpdf.ABCChrome117.Linux i ABCpdf.ABCChrome123.Linux. macOS nie jest obsługiwany, a kilka funkcji specyficznych dla Windows (XPS, WPF) pozostaje niedostępnych na Linux.

Styl dokumentacji

Dokumentacja ABCpdf, choć wyczerpująca, jest napisana w starszym stylu, który może wydawać się przestarzały w porównaniu z nowoczesnymi standardami dokumentacji API. Nowi użytkownicy często mają trudności ze znalezieniem dokładnie takich przykładów, jakich potrzebują, zwłaszcza podczas pracy z nowszymi wersjami .NET.

Obróbka konfiguracji silnika

ABCpdf wymaga jawnego wyboru silnika — EngineType.Chrome123 (domyślny w v13), Chrome117, Chrome86, Chrome65, Gecko, WebKit, lub MSHtml — oraz ręcznego zarządzania zasobami z wywołaniami doc.Clear(). Powoduje to dodanie standardowego kodu do każdej operacji na plikach PDF, czego współcześni programiści woleliby uniknąć.

##IronPDF vs ABCpdf: Porównanie funkcji

Poniższa tabela porównawcza przedstawia kluczowe różnice między dwiema bibliotekami .NET do obsługi plików PDF:

FunkcjaABCpdf dla .NETIronPDF
Silnik renderującyABCChrome (Chrome123/117/86/65), Gecko, WebKit, MSHtmlPełny Chromium (CSS3, JavaScript)
WielopłatformowePierwszeństwo dla Windowsa; Linux dodany w v13 (brak macOS)Natywne systemy Windows, Linux, macOS, Docker
Model licencyjnyStandard $329 / Pro $479 / Pro Redystrybucja $4 790 / Grupa $33 530, wieczysteProsta, przejrzysta polityka cenowa
Wsparcie .NET.NET Framework 4.0+, .NET Core 3.0+, .NET 5+Framework 4.6.2 do .NET Framework 9
Zarządzanie zasobamiWymagane ręczne doc.Clear()IDisposable z instrukcjami using
Konfiguracja licencjiCzęsto korzysta z rejestruProsty klucz licencyjny oparty na kodzie
DokumentacjaStyl przestarzałyNowoczesna dokumentacja z obszernymi przykładami

Przed rozpoczęciem migracji

Wymagania wstępne

Upewnij się, że Twoje środowisko programistyczne spełnia następujące wymagania:

  • .NET Framework 4.6.2+ lub .NET Core 3.1+ / .NET 5-9
  • Visual Studio 2019+ lub JetBrains Rider
  • Dostęp do menedżera pakietów NuGet
  • Klucz licencyjny IronPDF (dostępna bezpłatna wersja próbna)

Znajdź wszystkie odniesienia do ABCpdf

Uruchom te polecenia w katalogu rozwiązania, aby zlokalizować wszystkie pliki korzystające z biblioteki ABCpdf dla platformy .NET:

grep -r "using WebSupergoo" --include="*.cs" .
grep -r "ABCpdf" --include="*.csproj" .
SHELL

Niniejszy audyt identyfikuje wszystkie pliki wymagające modyfikacji, zapewniając pełny zakres migracji.

Zmiany wymagające dostosowania

Zrozumienie różnic architektonicznych między ABCpdf dla .NET a IronPDF pozwala uniknąć niespodzianek podczas migracji:

KategoriaZachowanie ABCpdfDziałanie IronPDFDziałanie migracyjne
Model obiektowyKlasa Doc jest centralnaChromePdfRenderer + PdfDocumentOddziel renderowanie od dokumentu
Porządkowanie zasobówRęczne doc.Clear()Wzorzec IDisposableUżyj instrukcji using
Wybór silnikadoc.HtmlOptions.Engine = EngineType.Chrome123 (lub MSHtml)Wbudowany ChromiumUsuń konfigurację silnika
Indeksowanie stron1-based (doc.Page = 1)0-based (pdf.Pages[0])Dostosuj odniesienia do indeksu
WspółrzędneOparte na punktach z doc.RectMarginesy oparte na CSSUżyj CSS lub RenderingOptions

Szybki start: 5-minutowa migracja

Krok 1: Zaktualizuj pakiety NuGet

# Remove ABCpdf
dotnet remove package ABCpdf

# Install IronPDF
dotnet add package IronPdf
SHELL

Krok 2: Ustaw swój klucz licencyjny

Dodaj to przy uruchomieniu aplikacji, przed wykonaniem jakichkolwiek operacji IronPDF:

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

Krok 3: Globalne wyszukiwanie i zamiana

Zaktualizuj wszystkie odniesienia do przestrzeni nazw w całym kodzie:

ZnajdźZastąp przez
using WebSupergoo.ABCpdf13;using IronPdf;
using WebSupergoo.ABCpdf13.Objects;using IronPdf;
using WebSupergoo.ABCpdf12;using IronPdf;
using WebSupergoo.ABCpdf11;using IronPdf;

Kompletna dokumentacija API

Metody tworzenia dokumentów

Poniższa tabela przedstawia mapowanie metod ABCpdf dla .NET na ich odpowiedniki w IronPDF for .NET:

Metoda ABCpdfMetoda IronPDF
new Doc()new ChromePdfRenderer()
doc.AddImageUrl(url)renderer.RenderUrlAsPdf(url)
doc.AddImageHtml(html)renderer.RenderHtmlAsPdf(html)
doc.AddImageFile(path)renderer.RenderHtmlFileAsPdf(path)
doc.Read(path)PdfDocument.FromFile(path)
doc.Save(path)pdf.SaveAs(path)
doc.GetData()pdf.BinaryData
doc.Clear()Użyj instrukcji using

Metody manipulacji stronami

Metoda ABCpdfMetoda IronPDF
doc.PageCountpdf.PageCount
doc.Page = npdf.Pages[n-1]
doc.Delete(pageId)pdf.RemovePages(index)
doc.Append(otherDoc)PdfDocument.Merge(pdf1, pdf2)
doc.Rect.Inset(x, y)RenderingOptions.MarginTop/Bottom/Left/Right

Metody bezpieczeństwa i szyfrowania

Metoda ABCpdfMetoda IronPDF
doc.Encryption.Passwordpdf.SecuritySettings.OwnerPassword
doc.Encryption.CanPrintpdf.SecuritySettings.AllowUserPrinting
doc.Encryption.CanCopypdf.SecuritySettings.AllowUserCopyPasteContent
doc.SetInfo("Title", value)pdf.MetaData.Title

Przykłady migracji kodu

Przykład 1: Konwersja HTML do PDF z adresu URL

Ten przykład pokazuje konwersję strony internetowej do formatu PDF, co jest jednym z najczęstszych zadań związanych z generowaniem plików PDF.

Wdrożenie ABCpdf dla .NET:

// NuGet: Install-Package ABCpdf
using System;
using WebSupergoo.ABCpdf13;
using WebSupergoo.ABCpdf13.Objects;

class Program
{
    static void Main()
    {
        Doc doc = new Doc();
        doc.HtmlOptions.Engine = EngineType.Chrome123;
        doc.AddImageUrl("https://www.example.com");
        doc.Save("output.pdf");
        doc.Clear();
    }
}

Wdrożenie IronPDF:

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

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

Podejście IronPDF eliminuje potrzebę jawnej konfiguracji silnika i ręcznego czyszczenia, zmniejszając złożoność kodu przy zachowaniu pełnych możliwości renderowania w przeglądarce Chrome.

Przykład 2: Ciąg znaków HTML do pliku PDF

Konwersja ciągów HTML do formatu PDF jest niezbędna do generowania dynamicznych raportów i dokumentów.

Wdrożenie ABCpdf dla .NET:

// NuGet: Install-Package ABCpdf
using System;
using WebSupergoo.ABCpdf13;
using WebSupergoo.ABCpdf13.Objects;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
        Doc doc = new Doc();
        doc.HtmlOptions.Engine = EngineType.Chrome123;
        doc.AddImageHtml(html);
        doc.Save("output.pdf");
        doc.Clear();
    }
}

Wdrożenie IronPDF:

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

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}

Wersja IronPDF wymaga mniej linii kodu i domyślnie korzysta z renderowania Chrome, co zapewnia spójny wynik na wszystkich platformach.

Przykład 3: Łączenie wielu plików PDF

Łączenie wielu dokumentów PDF jest częstym wymaganiem w procesach przetwarzania dokumentów.

Wdrożenie ABCpdf dla .NET:

// NuGet: Install-Package ABCpdf
using System;
using WebSupergoo.ABCpdf13;
using WebSupergoo.ABCpdf13.Objects;

class Program
{
    static void Main()
    {
        Doc doc1 = new Doc();
        doc1.Read("document1.pdf");
        
        Doc doc2 = new Doc();
        doc2.Read("document2.pdf");
        
        doc1.Append(doc2);
        doc1.Save("merged.pdf");
        
        doc1.Clear();
        doc2.Clear();
    }
}

Wdrożenie IronPDF:

// NuGet: Install-Package IronPdf
using System;
using System.Collections.Generic;
using IronPdf;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");
        
        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}

Statyczna metoda Merge w IronPDF dostarcza czystsze API, które akceptuje wiele dokumentów, eliminując potrzebę śledzenia i czyszczenia pojedynczych instancji Doc.

Przykład 4: Kompletny wzorzec migracji z marginesami

Ten przykład pokazuje kompletną migrację przed i po, dotyczącą generowania plików PDF z niestandardowymi marginesami.

Przed (ABCpdf dla .NET):

using WebSupergoo.ABCpdf13;
using WebSupergoo.ABCpdf13.Objects;

public byte[] GeneratePdf(string html)
{
    Doc doc = new Doc();
    doc.HtmlOptions.Engine = EngineType.Chrome123;
    doc.Rect.Inset(20, 20);
    doc.AddImageHtml(html);
    byte[] data = doc.GetData();
    doc.Clear();  // Manual cleanup required
    return data;
}

Po (IronPDF):

using IronPdf;

public byte[] GeneratePdf(string html)
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.MarginTop = 20;
    renderer.RenderingOptions.MarginBottom = 20;
    renderer.RenderingOptions.MarginLeft = 20;
    renderer.RenderingOptions.MarginRight = 20;

    using var pdf = renderer.RenderHtmlAsPdf(html);
    return pdf.BinaryData;  // Automatic cleanup with 'using'
}

Zaawansowane scenariusze migracji

Aplikacja internetowa ASP.NET Core .NET Core

Dla zespołów budujących aplikacje webowe z .NET 6+, oto zalecany wzorzec:

Wzór ABCpdf:

[HttpPost]
public IActionResult GeneratePdf([FromBody] ReportRequest request)
{
    Doc doc = new Doc();
    doc.HtmlOptions.Engine = EngineType.Chrome123;
    doc.AddImageHtml(request.Html);
    byte[] pdfBytes = doc.GetData();
    doc.Clear();

    return File(pdfBytes, "application/pdf", "report.pdf");
}

Wzór IronPDF:

[HttpPost]
public IActionResult GeneratePdf([FromBody] ReportRequest request)
{
    var renderer = new ChromePdfRenderer();
    using var pdf = renderer.RenderHtmlAsPdf(request.Html);

    return File(pdf.BinaryData, "application/pdf", "report.pdf");
}

Asynchroniczne generowanie plików PDF

ABCpdf nie obsługuje natywnie trybu asynchronicznego.IronPDF udostępnia metody asynchroniczne zapewniające lepszą wydajność aplikacji internetowych:

using IronPdf;

public async Task<byte[]> GeneratePdfAsync(string html)
{
    var renderer = new ChromePdfRenderer();
    using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
    return pdf.BinaryData;
}

Konfiguracja wstrzykiwania zależności

Zarejestruj IronPDF w nowoczesnych aplikacjach .NET, używając bieżących wzorców C#:

// Program.cs (.NET 6+)
builder.Services.AddSingleton<ChromePdfRenderer>();

// Or create a service wrapper
public interface IPdfService
{
    Task<byte[]> GeneratePdfAsync(string html);
}

public class IronPdfService : IPdfService
{
    private readonly ChromePdfRenderer _renderer;

    public IronPdfService()
    {
        _renderer = new ChromePdfRenderer();
        _renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
    }

    public async Task<byte[]> GeneratePdfAsync(string html)
    {
        using var pdf = await _renderer.RenderHtmlAsPdfAsync(html);
        return pdf.BinaryData;
    }
}

// Register: builder.Services.AddSingleton<IPdfService, IronPdfService>();

Wskazówki dotyczące optymalizacji wydajności

Ponowne wykorzystanie renderera do operacji wsadowych

// Good: Single renderer instance
var renderer = new ChromePdfRenderer();
foreach (var html in htmlList)
{
    using var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs($"output_{i}.pdf");
}

// Bad: New renderer each time (slower startup)
foreach (var html in htmlList)
{
    var renderer = new ChromePdfRenderer(); // Overhead!
    using var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs($"output_{i}.pdf");
}

Porównanie zużycia pamięci

ScenariuszABCpdf dla .NETIronPDF
Pojedynczy plik PDF o objętości 10 stron~80 MB~50 MB
Partia 100 plików PDFWysoki (ręczne czyszczenie)~100 MB
Duży plik HTML (5 MB+)Zmienna~150 MB

Rozwiązywanie typowych problemów związanych z migracją

Plik PDF wyświetla się jako pusty

Objaw: Wygenerowany plik PDF zawiera puste strony po migracji.

Rozwiązanie: Treść JavaScript może nie zostać w pełni załadowana przed renderowaniem:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.WaitFor.RenderDelay(2000); // Wait 2 seconds
// Or wait for specific element:
renderer.RenderingOptions.WaitFor.HtmlElementById("content-loaded");

Brak nagłówków/stopek

Objaw: TextHeader/TextFooter nie są widoczne w wynikach.

Rozwiązanie: Upewnij się, że marginesy pozostawiają miejsce na treść nagłówka/stopki:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.MarginTop = 40; // mm - leave room for header
renderer.RenderingOptions.MarginBottom = 40; // mm - leave room for footer

renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    CenterText = "Header Text",
    FontSize = 12
};

Lista kontrolna migracji

Przed migracją

  • Audytuj całe użycie ABCpdf z grep -r "WebSupergoo" --include="*.cs" .
  • Dokumentacja aktualnych wymagań dotyczących wyjścia PDF
  • Utwórz przypadki testowe z przykładowymi plikami PDF do porównania
  • Uzyskaj klucz licencyjny IronPDF
  • Kopia zapasowa kodu źródłowego

Podczas migracji

  • Usuń pakiet ABCpdf NuGet
  • Zainstaluj pakiet NuGet IronPDF
  • Dodaj klucz licencyjny do uruchamiania aplikacji
  • Zaktualizuj wszystkie instrukcje using
  • Przekształć tworzenie Doc na ChromePdfRenderer
  • Zastąp doc.Clear() instrukcjami using
  • Aktualizacja wywołań metod zgodnie z mapowaniem API
  • Konwersja układów opartych na współrzędnych na marginesy CSS

Po migracji

  • Uruchom wszystkie istniejące testy PDF
  • Wizualne porównanie wyników w formacie PDF (ABCpdf vs IronPDF)
  • Przetestuj wszystkie procesy związane z plikami PDF w środowisku testowym
  • Porównanie wyników testów wydajnościowych
  • Usuń konfigurację licencji ABCpdf
  • Aktualizacja zależności potoku CI/CD
Zwróć uwagę: ABCpdf jest zastrzeżonym znakiem towarowym odpowiedniego właściciela. Ta strona nie jest powiązana, popierana ani sponsorowana przez WebSupergoo Software. 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ę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