Przejdź do treści stopki
PRZEWODNIKI MIGRACJI

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

ZetPDF to biblioteka PDF na licencji komercyjnej dla aplikacji C#, zbudowana w oparciu o powszechnie stosowaną bibliotekę open source PDFSharp. ChociażZetPDFzapewnia komercyjne wsparcie techniczne i podstawowe możliwości manipulacji plikami PDF, dziedziczy on znaczne ograniczenia wynikające z jego podstawy, jaką jest PDFSharp. Co najważniejsze, biblioteka opiera się na programowaniu graficznym opartym na współrzędnych i oferuje ograniczone możliwości konwersji HTML do PDF w porównaniu z nowoczesnymi alternatywami.

Niniejszy przewodnik zawiera kompletną ścieżkę migracji zZetPDFdoIronPDFwraz z instrukcjami krok po kroku, porównaniami kodu i praktycznymi przykładami dla profesjonalnych programistów .NET rozważających tę zmianę.

Dlaczego warto przejść z ZetPDF

ZetPDF, jako rozwidlenie PDFSharp, dziedziczy te same ograniczenia architektoniczne, które ograniczają jego skuteczność w nowoczesnych procesach tworzenia dokumentów. Główne powody, dla których zespoły programistów rozważają migrację, to:

API oparte na współrzędnych:ZetPDFwymaga od programistów pozycjonowania każdego elementu przy użyciu dokładnych współrzędnych. Skomplikowane ręczne pozycjonowanie każdego elementu stwarza wyzwania związane z utrzymaniem strony w miarę zmian wymagań.

Ograniczona obsługa CSS: Brak systemu stylów oznacza ręczne zarządzanie czcionkami i kolorami dla każdego elementu.

Brak renderowania JavaScript: Nie można renderować dynamicznej zawartości internetowej ani wykonywać kodu JavaScript podczas generowania pliku PDF.

Ograniczona oferta: W porównaniu z bezpłatnym korzystaniem z PDFSharp,ZetPDFoferuje niewiele przekonujących powodów, które uzasadniałyby zakup licencji komercyjnej.

Ręczne podziały stron: Należy ręcznie obliczać i zarządzać przepełnieniem stron, zamiast polegać na automatycznej paginacji.

Wymagana analiza tekstu: Ręczne obliczanie zawijania tekstu powoduje dodatkowe obciążenie związane z pracą programistów.

Podstawowy problem

ZetPDF i PDFSharp wymuszają pozycjonowanie każdego elementu przy użyciu dokładnych współrzędnych:

// ZetPDF: Podręcznik positioning nightmare
graphics.DrawString("Name:", font, brush, new XPoint(50, 100));
graphics.DrawString("John Doe", font, brush, new XPoint(100, 100));
graphics.DrawString("Address:", font, brush, new XPoint(50, 120));
graphics.DrawString("123 Main St", font, brush, new XPoint(100, 120));
// ... hundreds of lines for a simple form
// ZetPDF: Podręcznik positioning nightmare
graphics.DrawString("Name:", font, brush, new XPoint(50, 100));
graphics.DrawString("John Doe", font, brush, new XPoint(100, 100));
graphics.DrawString("Address:", font, brush, new XPoint(50, 120));
graphics.DrawString("123 Main St", font, brush, new XPoint(100, 120));
// ... hundreds of lines for a simple form
' ZetPDF: Podręcznik positioning nightmare
graphics.DrawString("Name:", font, brush, New XPoint(50, 100))
graphics.DrawString("John Doe", font, brush, New XPoint(100, 100))
graphics.DrawString("Address:", font, brush, New XPoint(50, 120))
graphics.DrawString("123 Main St", font, brush, New XPoint(100, 120))
' ... hundreds of lines for a simple form
$vbLabelText   $csharpLabel

IronPDF wykorzystujeHTML/CSS— silnik układu zajmuje się wszystkim:

// IronPDF: Simple HTML
var html = @"
<p><strong>Name:</strong> John Doe</p>
<p><strong>Address:</strong> 123 Main St</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
// IronPDF: Simple HTML
var html = @"
<p><strong>Name:</strong> John Doe</p>
<p><strong>Address:</strong> 123 Main St</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
' IronPDF: Simple HTML
Dim html As String = "
<p><strong>Name:</strong> John Doe</p>
<p><strong>Address:</strong> 123 Main St</p>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

IronPDFvs ZetPDF: Porównanie funkcji

Zrozumienie różnic architektonicznych pomaga decydentom technicznym w ocenie inwestycji w migrację:

Funkcja ZetPDF IronPDF
Na podstawie PDFSharp Tak Nie
Konwersja HTML do PDF Ograniczone Tak (pełna wersja Chromium)
Licencja komercyjna Tak, na czas nieokreślony Tak
Fundacja Open Source PDFSharp (licencja MIT) Oparty na Chromium
Obsługa CSS Nie Pełny CSS3
JavaScript Nie Pełna wersja ES2024
Automatyczny układ Nie Tak
Automatyczne podziały stron Nie Tak
Tabele Rysowanie ręczne HTML <table>
Nagłówki/stopki Podręcznik HTML/CSS
Znaki wodne Kod podręcznika Wbudowane
Łączenie plików PDF Ograniczone Tak
Podział plików PDF Ograniczone Tak
Podpisy cyfrowe Nie Tak
PDF/A Nie Tak
Prostota i łatwość użytkowania Umiarkowany High

Szybki start: Migracja zZetPDFdo IronPDF

Migrację można rozpocząć natychmiast, wykonując te podstawowe kroki.

Krok 1: Zastąp pakiet NuGet

Usuń ZetPDF:

# Remove ZetPDF
dotnet remove package ZetPDF
# Remove ZetPDF
dotnet remove package ZetPDF
SHELL

Zainstaluj IronPDF:

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

Krok 2: Aktualizacja przestrzeni nazw

Zastąp przestrzenie nazwZetPDFprzestrzenią nazw IronPdf:

// Before (ZetPDF)
using ZetPdf;
using ZetPdf.Drawing;
using ZetPdf.Fonts;

// After (IronPDF)
using IronPdf;
// Before (ZetPDF)
using ZetPdf;
using ZetPdf.Drawing;
using ZetPdf.Fonts;

// After (IronPDF)
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

Krok 3: Inicjalizacja licencji

Dodaj inicjalizację licencji podczas uruchamiania aplikacji:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Przykłady migracji kodu

Konwersja HTML do PDF

Operacja konwersji HTML na PDF ilustruje różnice w API między tymi bibliotekami .NET do obsługi plików PDF.

Podejście ZetPDF:

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

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
        converter.ConvertHtmlToPdf(htmlContent, "output.pdf");
        Console.WriteLine("PDF created successfully");
    }
}
// NuGet: Install-Package ZetPDF
using ZetPDF;
using System;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
        converter.ConvertHtmlToPdf(htmlContent, "output.pdf");
        Console.WriteLine("PDF created successfully");
    }
}
Imports ZetPDF
Imports System

Module Program
    Sub Main()
        Dim converter As New HtmlToPdfConverter()
        Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"
        converter.ConvertHtmlToPdf(htmlContent, "output.pdf")
        Console.WriteLine("PDF created successfully")
    End Sub
End Module
$vbLabelText   $csharpLabel

Podejście IronPDF:

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

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

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

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

ZetPDF używa HtmlToPdfConverter z ConvertHtmlToPdf(), które zapisuje bezpośrednio do ścieżki pliku.IronPDFudostępnia ChromePdfRenderer z RenderHtmlAsPdf(), które zwracają obiekt PdfDocument, zapewniając większą elastyczność w zakresie wyników — można zapisać plik, pobrać dane binarne lub wykonać dodatkowe operacje przed zapisaniem.

W przypadku zaawansowanych scenariuszy konwersji HTML do PDF zapoznaj się z przewodnikiem po konwersji HTML do PDF.

Konwersja adresów URL do formatu PDF

Konwersja adresu URL do formatu PDF wyraźnie pokazuje różnice w strukturze.

Podejście ZetPDF:

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

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var url = "https://www.example.com";
        converter.ConvertUrlToPdf(url, "webpage.pdf");
        Console.WriteLine("PDF from URL created successfully");
    }
}
// NuGet: Install-Package ZetPDF
using ZetPDF;
using System;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var url = "https://www.example.com";
        converter.ConvertUrlToPdf(url, "webpage.pdf");
        Console.WriteLine("PDF from URL created successfully");
    }
}
Imports ZetPDF
Imports System

Module Program
    Sub Main()
        Dim converter As New HtmlToPdfConverter()
        Dim url As String = "https://www.example.com"
        converter.ConvertUrlToPdf(url, "webpage.pdf")
        Console.WriteLine("PDF from URL created successfully")
    End Sub
End Module
$vbLabelText   $csharpLabel

Podejście IronPDF:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var url = "https://www.example.com";
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("PDF from URL created successfully");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var url = "https://www.example.com";
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("PDF from URL created successfully");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim url = "https://www.example.com"
        Dim pdf = renderer.RenderUrlAsPdf(url)
        pdf.SaveAs("webpage.pdf")
        Console.WriteLine("PDF from URL created successfully")
    End Sub
End Class
$vbLabelText   $csharpLabel

ZetPDF używa tej samej klasy HtmlToPdfConverter co ConvertUrlToPdf().IronPDFzapewnia RenderUrlAsPdf() na ChromePdfRenderer, co wykorzystuje pełny silnik renderujący Chromium do dokładnego przechwytywania stron internetowych, w tym wykonywania kodu JavaScript i nowoczesnego CSS.

Zapoznaj się z dokumentacją dotyczącą konwersji adresów URL do formatu PDF, aby uzyskać informacje na temat uwierzytelniania i opcji niestandardowych nagłówków.

Łączenie wielu plików PDF

Porównanie plików PDF ujawnia istotne różnice w API dotyczące sposobu obsługi dokumentów.

Podejście ZetPDF:

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

class Program
{
    static void Main()
    {
        var merger = new PdfMerger();
        var files = new List<string> { "document1.pdf", "document2.pdf" };
        merger.MergeFiles(files, "merged.pdf");
        Console.WriteLine("PDFs merged successfully");
    }
}
// NuGet: Install-Package ZetPDF
using ZetPDF;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var merger = new PdfMerger();
        var files = new List<string> { "document1.pdf", "document2.pdf" };
        merger.MergeFiles(files, "merged.pdf");
        Console.WriteLine("PDFs merged successfully");
    }
}
Imports ZetPDF
Imports System
Imports System.Collections.Generic

Module Program
    Sub Main()
        Dim merger As New PdfMerger()
        Dim files As New List(Of String) From {"document1.pdf", "document2.pdf"}
        merger.MergeFiles(files, "merged.pdf")
        Console.WriteLine("PDFs merged successfully")
    End Sub
End Module
$vbLabelText   $csharpLabel

Podejście IronPDF:

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

class Program
{
    static void Main()
    {
        var pdfs = new List<PdfDocument>
        {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf")
        };
        var merged = PdfDocument.Merge(pdfs);
        merged.SaveAs("merged.pdf");
        Console.WriteLine("PDFs merged successfully");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdfs = new List<PdfDocument>
        {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf")
        };
        var merged = PdfDocument.Merge(pdfs);
        merged.SaveAs("merged.pdf");
        Console.WriteLine("PDFs merged successfully");
    }
}
Imports IronPdf
Imports System
Imports System.Collections.Generic

Module Program
    Sub Main()
        Dim pdfs As New List(Of PdfDocument) From {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf")
        }
        Dim merged = PdfDocument.Merge(pdfs)
        merged.SaveAs("merged.pdf")
        Console.WriteLine("PDFs merged successfully")
    End Sub
End Module
$vbLabelText   $csharpLabel

ZetPDF wykorzystuje dedykowaną klasę PdfMerger, która obsługuje ścieżki plików za pomocą MergeFiles().IronPDFładuje dokumenty jako obiekty PdfDocument przy użyciu PdfDocument.FromFile(), a następnie łączy je za pomocą statycznej metody PdfDocument.Merge(). To podejście obiektowe umożliwia wykonywanie dodatkowych operacji na scalonym dokumencie przed zapisaniem.

Zapoznaj się z dokumentacją dotyczącą łączenia plików PDF, aby poznać dodatkowe opcje łączenia.

Rysowanie oparte na współrzędnych a HTML

W przypadku programistów korzystających z istniejącego koduZetPDFwykorzystującego grafikę opartą na współrzędnych ścieżka migracji obejmuje konwersję poleceń rysowania do formatu HTML/CSS.

Podejście oparte na współrzędnych ZetPDF:

using ZetPdf;
using ZetPdf.Drawing;

var document = new PdfDocument();
var page = document.AddPage();
page.Width = XUnit.FromMillimeter(210);
page.Height = XUnit.FromMillimeter(297);

var graphics = XGraphics.FromPdfPage(page);
var titleFont = new XFont("Arial", 24, XFontStyle.Bold);
var bodyFont = new XFont("Arial", 12);

graphics.DrawString("Company Report", titleFont, XBrushes.Navy,
    new XPoint(50, 50));
graphics.DrawString("This is the introduction paragraph.", bodyFont, XBrushes.Black,
    new XPoint(50, 80));
graphics.DrawString("Generated: " + DateTime.Now.ToString(), bodyFont, XBrushes.Gray,
    new XPoint(50, 100));

document.Save("report.pdf");
using ZetPdf;
using ZetPdf.Drawing;

var document = new PdfDocument();
var page = document.AddPage();
page.Width = XUnit.FromMillimeter(210);
page.Height = XUnit.FromMillimeter(297);

var graphics = XGraphics.FromPdfPage(page);
var titleFont = new XFont("Arial", 24, XFontStyle.Bold);
var bodyFont = new XFont("Arial", 12);

graphics.DrawString("Company Report", titleFont, XBrushes.Navy,
    new XPoint(50, 50));
graphics.DrawString("This is the introduction paragraph.", bodyFont, XBrushes.Black,
    new XPoint(50, 80));
graphics.DrawString("Generated: " + DateTime.Now.ToString(), bodyFont, XBrushes.Gray,
    new XPoint(50, 100));

document.Save("report.pdf");
Imports ZetPdf
Imports ZetPdf.Drawing

Dim document As New PdfDocument()
Dim page = document.AddPage()
page.Width = XUnit.FromMillimeter(210)
page.Height = XUnit.FromMillimeter(297)

Dim graphics = XGraphics.FromPdfPage(page)
Dim titleFont As New XFont("Arial", 24, XFontStyle.Bold)
Dim bodyFont As New XFont("Arial", 12)

graphics.DrawString("Company Report", titleFont, XBrushes.Navy, New XPoint(50, 50))
graphics.DrawString("This is the introduction paragraph.", bodyFont, XBrushes.Black, New XPoint(50, 80))
graphics.DrawString("Generated: " & DateTime.Now.ToString(), bodyFont, XBrushes.Gray, New XPoint(50, 100))

document.Save("report.pdf")
$vbLabelText   $csharpLabel

PodejścieIronPDFHTML:

using IronPdf;

var html = $@"
<html>
<head>
    <style>
        body {{ font-family: Arial, sans-serif; padding: 50px; }}
        h1 {{ color: navy; }}
        .date {{ color: gray; }}
    </style>
</head>
<body>
    <h1>Company Report</h1>
    <p>This is the introduction paragraph.</p>
    <p class='date'>Generated: {DateTime.Now}</p>
</body>
</html>";

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
using IronPdf;

var html = $@"
<html>
<head>
    <style>
        body {{ font-family: Arial, sans-serif; padding: 50px; }}
        h1 {{ color: navy; }}
        .date {{ color: gray; }}
    </style>
</head>
<body>
    <h1>Company Report</h1>
    <p>This is the introduction paragraph.</p>
    <p class='date'>Generated: {DateTime.Now}</p>
</body>
</html>";

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
Imports IronPdf

Dim html As String = $"
<html>
<head>
    <style>
        body {{ font-family: Arial, sans-serif; padding: 50px; }}
        h1 {{ color: navy; }}
        .date {{ color: gray; }}
    </style>
</head>
<body>
    <h1>Company Report</h1>
    <p>This is the introduction paragraph.</p>
    <p class='date'>Generated: {DateTime.Now}</p>
</body>
</html>"

Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("report.pdf")
$vbLabelText   $csharpLabel

PodejścieZetPDFwymaga tworzenia obiektów czcionek, obliczania dokładnych pozycji pikseli oraz ręcznego zarządzania kontekstem graficznym. PodejścieIronPDFwykorzystuje standardowy HTML i CSS, które są już znane programistom stron internetowych — czcionki, kolory i układ są obsługiwane za pomocą znanych właściwości CSS.

Dokumentacja APIZetPDFdo IronPDF

To mapowanie przyspiesza migrację, pokazując bezpośrednie odpowiedniki API:

ZetPDF IronPDF
new PdfDocument() new ChromePdfRenderer()
document.AddPage() Automatyczne
XGraphics.FromPdfPage(page) Nie dotyczy
graphics.DrawString() Elementy tekstowe HTML
graphics.DrawImage() <img> tag
graphics.DrawLine() Obramowania CSS
graphics.DrawRectangle() CSS border + div
new XFont() CSS font-family
XBrushes.Black CSS color
document.Save() pdf.SaveAs()
PdfReader.Open() PdfDocument.FromFile()
HtmlToPdfConverter ChromePdfRenderer
ConvertHtmlToPdf() RenderHtmlAsPdf()
ConvertUrlToPdf() RenderUrlAsPdf()
PdfMerger PdfDocument.Merge()

Typowe problemy związane z migracją i ich rozwiązania

Problem 1: Układ oparty na współrzędnych

ZetPDF: Wszystko wymaga dokładnych współrzędnych X,Y z ręcznym pozycjonowaniem.

Rozwiązanie: Zastosuj układ płynny HTML/CSS. W razie potrzeby do pozycjonowania absolutnego użyj CSS:

.positioned-element {
    position: absolute;
    top: 100px;
    left: 50px;
}

Problem 2: Zarządzanie obiektami czcionek

ZetPDF: Utwórz obiekty XFont dla każdej odmiany czcionki.

Rozwiązanie: Użyj właściwości CSS font-family — czcionki są obsługiwane automatycznie:

<style>
    body { font-family: Arial, sans-serif; }
    h1 { font-family: 'Times New Roman', serif; font-size: 24px; font-weight: bold; }
</style>
<style>
    body { font-family: Arial, sans-serif; }
    h1 { font-family: 'Times New Roman', serif; font-size: 24px; font-weight: bold; }
</style>
HTML

Problem 3: Obsługa kolorów

ZetPDF: Użyj XBrushes i obiektów kolorów.

Rozwiązanie: Użyj standardowych kolorów CSS:

.header { color: navy; background-color: #f5f5f5; }
.warning { color: rgb(255, 0, 0); }

Problem 4: Ręczne podziały stron

ZetPDF: Śledź pozycję Y i ręcznie twórz nowe strony, gdy zawartość się przepełnia.

Rozwiązanie:IronPDFobsługuje automatyczne podziały stron. Aby uzyskać precyzyjną kontrolę, użyj CSS:

.section { page-break-after: always; }
.keep-together { page-break-inside: avoid; }

Problem 5: Tworzenie tabel

ZetPDF: Wymaga ręcznego rysowania prostokątów, linii i pozycjonowania tekstu.

Rozwiązanie: Użyj standardowych tabel HTML ze stylizacją CSS:

<table style="border-collapse: collapse; width: 100%;">
    <tr>
        <th style="border: 1px solid black; padding: 8px;">Header</th>
    </tr>
    <tr>
        <td style="border: 1px solid black; padding: 8px;">Data</td>
    </tr>
</table>
<table style="border-collapse: collapse; width: 100%;">
    <tr>
        <th style="border: 1px solid black; padding: 8px;">Header</th>
    </tr>
    <tr>
        <td style="border: 1px solid black; padding: 8px;">Data</td>
    </tr>
</table>
HTML

Lista kontrolna migracji ZetPDF

Zadania przed migracją

Przeprowadź audyt kodu źródłowego, aby zidentyfikować wszystkie przypadki użycia ZetPDF:

grep -r "using ZetPDF" --include="*.cs" .
grep -r "HtmlToPdfConverter\|PdfMerger\|XGraphics" --include="*.cs" .
grep -r "using ZetPDF" --include="*.cs" .
grep -r "HtmlToPdfConverter\|PdfMerger\|XGraphics" --include="*.cs" .
SHELL

Dokument zawierający kod rysowania oparty na współrzędnych, który wymaga konwersji do formatu HTML. Zwróć uwagę na wzorce użycia czcionek i kolorów. Należy odwzorować struktury układu na odpowiedniki w HTML.

Zadania związane z aktualizacją kodu

  1. Usuń pakietZetPDFNuGet
  2. Zainstaluj pakiet IronPdf NuGet
  3. Zaktualizuj importy przestrzeni nazw z ZetPDF na IronPdf
  4. Zastąp HtmlToPdfConverter przez ChromePdfRenderer
  5. Zamień wywołania ConvertHtmlToPdf() na RenderHtmlAsPdf() + SaveAs()
  6. Zamień wywołania ConvertUrlToPdf() na RenderUrlAsPdf() + SaveAs()
  7. Zastąp PdfMerger.MergeFiles() przez PdfDocument.Merge()
  8. Zamień wywołania DrawString() na elementy tekstowe HTML
  9. Przekonwertuj XFont na CSS font-family
  10. Zastąp XBrushes kolorami CSS
  11. Dodaj inicjalizację licencjiIronPDFpodczas uruchamiania

Testy po migracji

Po migracji należy zweryfikować następujące aspekty:

  • Porównaj wygląd końcowy, aby upewnić się, że jest on zgodny z oryginałem lub lepszy
  • Sprawdź, czy czcionki wyświetlają się zgodnie z oczekiwaniami przy zastosowaniu stylów CSS
  • Sprawdź, czy podziały stron działają poprawnie przy automatycznej paginacji
  • Sprawdź, czy obrazy są prawidłowo rozmieszczone i wyświetlane
  • Testowe operacje łączenia plików PDF dają poprawny wynik
  • Sprawdź, czy wszystkie istniejące funkcje działają z nową implementacją

Kluczowe korzyści z migracji do IronPDF

Przejście zZetPDFnaIronPDFzapewnia kilka kluczowych korzyści:

Nowoczesny silnik renderujący Chromium:IronPDFwykorzystuje Chromium do konwersji HTML na PDF, zapewniając pełną obsługę CSS3 i JavaScript ES2024. Nowoczesne frameworki i responsywne projekty wyświetlają się poprawnie.

Tworzenie treści opartych na HTML: Programiści stron internetowych mogą wykorzystać swoje dotychczasowe umiejętności w zakresie HTML i CSS. Nie ma potrzeby uczenia się interfejsów API rysowania opartych na współrzędnych ani zarządzania obiektami czcionek.

Automatyczny układ i paginacja: zawijanie tekstu, podziały stron i układ przepływu odbywają się automatycznie. Nie należy ręcznie obliczać pozycji elementów.

Uproszczone API: Wywołania pojedynczych metod dla typowych operacji. PdfDocument.Merge() zastępuje złożone wzorce obsługi ścieżek plików.

Aktywny rozwój: W miarę jak do 2026 r. wzrośnie popularność .NET 10 i C# 14, regularne aktualizacjeIronPDFzapewnią zgodność z obecnymi i przyszłymi wersjami .NET.

Kompleksowy zestaw funkcji: wbudowane znakowanie wodne, podpisy cyfrowe, zgodność z PDF/A oraz zaawansowane funkcje edycji plików PDF, których brakuje w ZetPDF.

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