Zum Fußzeileninhalt springen
MIGRATIONSLEITFäDEN

Migrieren von Spire.PDF zu IronPDF in C#

Durch die Migration von Spire.PDF zu IronPDF wird Ihr PDF-Generierungs-Workflow von einer Bibliothek, die Text als Bilder rendert, zu einer Bibliothek, die echten, auswählbaren und durchsuchbaren Text mit einer modernen Chromium-Rendering-Engine erzeugt. Diese Anleitung bietet einen vollständigen, schrittweisen Migrationspfad, der die kritischen HTML-Rendering-Beschränkungen von Spire.PDF und die Probleme bei der Schrifteinbettung beseitigt.

Warum von Spire.PDF zu IronPDF migrieren

Spire verstehen.PDF

Spire.PDF ist eine robuste, kommerzielle PDF-Bibliothek, die for .NET-Entwickler entwickelt wurde, um PDF-Dokumente effizient zu verarbeiten. Spire.PDF hat sich in der Programmier-Community aufgrund seiner spezifischen Fähigkeiten, insbesondere bei Legacy-Anwendungen, einen Namen gemacht und lässt sich nahtlos in andere Komponenten des E-iceblue-Toolsets integrieren.

Spire.PDF hat jedoch einige grundsätzliche Probleme, die sich auf die reale Nutzung auswirken, insbesondere im Bereich der HTML-zu-PDF-Konvertierung und der Unterstützung moderner Webstandards.

Kritische technische Fragen

Problem Auswirkungen IronPDF Lösung
Text als Bilder gerendert PDFs nicht durchsuchbar, nicht zugänglich, Text kann nicht kopiert werden Echte Textwiedergabe
Internet Explorer-Abhängigkeit Veraltetes Rendering, Sicherheitsrisiken Moderne Chromium-Engine
Fehler bei der Schrifteinbettung Dokumente sehen auf anderen Systemen falsch aus Zuverlässige Handhabung von Schriftarten
Großer Einsatzbereich Hoher Speicherverbrauch, langsames Starten Effiziente Bereitstellung
Beschränkte CSS-Unterstützung Moderne Layouts werden nicht korrekt wiedergegeben Vollständige CSS3-Unterstützung

Das Kernproblem: Bildbasierte PDFs

Ein wesentlicher Nachteil von Spire.PDF ist die Neigung, Text in HTML-Dokumenten als Bilder darzustellen. Das Ergebnis sind PDFs, in denen der Text nicht auswählbar oder durchsuchbar ist, was für Anwendungen, die eine Suchfunktion oder eine Interaktion mit dem Dokumententext erfordern, eine große Einschränkung darstellen kann.

Bei Verwendung der LoadFromHTML()-Methode von Spire.PDF wird Text häufig als Bitmap-Bild anstatt als tatsächlicher Text gerendert, was zu folgenden Problemen führt:

  • Der Text kann NICHT ausgewählt werden
  • Der Text darf NICHT durchsucht werden
  • Text darf NICHT kopiert werden
  • Bildschirmlesegeräte können sie NICHT lesen (Verstoß gegen die Zugänglichkeit)
  • Dateigröße ist VIEL größer
  • Zoomen verursacht Pixelbildung

Spire.PDF vs IronPDF Vergleich

Feature Spire.PDF IronPDF
HTML zu PDF Rendering Als Bilder gerenderter Text Echte Textwiedergabe (auswählbar und durchsuchbar)
Rendering Engine Internet Explorer auf einigen Systemen abhängig Chromium-basiert, konform mit modernen Webstandards
Schriftbehandlung Bekannte Probleme mit der Schrifteinbettung Zuverlässige und robuste Handhabung von Schriftarten
CSS3-Unterstützung Beschränkt Voll
Flexbox/Grid Nicht unterstützt Unterstützt
JavaScript Beschränkt Vollständig ES6+
PDF Barrierefreiheit Schlecht (bildbasiert) Ausgezeichnet
API-Entwurf Komplex Einfach und intuitiv
Bereitstellungsumfang Groß Mäßig
Lizenzierung Freemium/Kommerziell Kommerziell

Für Teams, die die Einführung von .NET 10 und C# 14 bis 2025 und 2026 planen, löst IronPDF kritische Probleme mit der HTML-zu-PDF-Konvertierung von Spire.PDF, indem es Text als tatsächlich auswählbaren Text und nicht als Bild rendert und so sicherstellt, dass PDFs durchsuchbar und zugänglich sind.


Bevor Sie beginnen

Voraussetzungen

  1. .NET -Umgebung: .NET Framework 4.6.2+ oder .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet -Zugriff: Möglichkeit zur Installation von NuGet -Paketen
  3. IronPDF -Lizenz: Ihren Lizenzschlüssel erhalten Sie unter IronPDF.

NuGet-Paketänderungen

# Remove Spire.PDF
dotnet remove package Spire.PDF
dotnet remove package FreeSpire.PDF  # If using free version

# Install IronPDF
dotnet add package IronPdf
# Remove Spire.PDF
dotnet remove package Spire.PDF
dotnet remove package FreeSpire.PDF  # If using free version

# Install IronPDF
dotnet add package IronPdf
SHELL

Lizenz-Konfiguration

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

Komplette API-Referenz

Namensraumänderungen

// Before: Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.HtmlConverter;

// After: IronPDF
using IronPdf;
using IronPdf.Editing;
// Before: Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.HtmlConverter;

// After: IronPDF
using IronPdf;
using IronPdf.Editing;
Imports IronPdf
Imports IronPdf.Editing
$vbLabelText   $csharpLabel

Kern-API-Zuordnungen

Spire.PDF IronPDF
new PdfDocument() new ChromePdfRenderer()
pdf.LoadFromHTML() renderer.RenderHtmlAsPdf()
pdf.LoadFromFile() PdfDocument.FromFile()
pdf.SaveToFile() pdf.SaveAs()
pdf.Close() Nicht erforderlich
pdf.Pages.Add() renderer.RenderHtmlAsPdf()
pdf.InsertPageRange() PdfDocument.Merge()
page.Canvas.DrawString() TextStamper + ApplyStamp()
PdfFont CSS-Styling in HTML
PdfBrush CSS-Styling in HTML

Beispiele für die Code-Migration

Beispiel 1: Konvertierung von HTML in PDF

Vor (Spire.PDF):

// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf = new PdfDocument();
        PdfHtmlLayoutFormat htmlLayoutFormat = new PdfHtmlLayoutFormat();

        string htmlString = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";

        pdf.LoadFromHTML(htmlString, false, true, true);
        pdf.SaveToFile("output.pdf");
        pdf.Close();
    }
}
// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf = new PdfDocument();
        PdfHtmlLayoutFormat htmlLayoutFormat = new PdfHtmlLayoutFormat();

        string htmlString = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";

        pdf.LoadFromHTML(htmlString, false, true, true);
        pdf.SaveToFile("output.pdf");
        pdf.Close();
    }
}
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System

Class Program
    Shared Sub Main()
        Dim pdf As New PdfDocument()
        Dim htmlLayoutFormat As New PdfHtmlLayoutFormat()

        Dim htmlString As String = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>"

        pdf.LoadFromHTML(htmlString, False, True, True)
        pdf.SaveToFile("output.pdf")
        pdf.Close()
    End Sub
End Class
$vbLabelText   $csharpLabel

Nach (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string htmlString = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(htmlString);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string htmlString = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(htmlString);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

        Dim htmlString As String = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>"

        Dim pdf = renderer.RenderHtmlAsPdf(htmlString)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Dieses Beispiel verdeutlicht den grundlegenden Unterschied in der HTML-Darstellung. Spire.PDF verwendet LoadFromHTML() mit einem PdfHtmlLayoutFormat Objekt, das Text oft als Bitmap-Bilder rendert. Das Ergebnis sind PDFs, in denen die Benutzer keinen Text auswählen, kopieren oder suchen können.

IronPDF verwendet einen ChromePdfRenderer mit RenderHtmlAsPdf(), wodurch echter Text erzeugt wird, der vollständig auswählbar, durchsuchbar und zugänglich ist. Es ist kein Close()-Aufruf erforderlich – IronPDF verwendet das Dispose-Muster zur automatischen Bereinigung. Ausführliche Beispiele finden Sie in der Dokumentation zur HTML-zu-PDF-Konvertierung .

Beispiel 2: Zusammenführen mehrerer PDFs

Vor (Spire.PDF):

// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf1 = new PdfDocument();
        pdf1.LoadFromFile("document1.pdf");

        PdfDocument pdf2 = new PdfDocument();
        pdf2.LoadFromFile("document2.pdf");

        pdf1.InsertPageRange(pdf2, 0, pdf2.Pages.Count - 1);

        pdf1.SaveToFile("merged.pdf");
        pdf1.Close();
        pdf2.Close();
    }
}
// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf1 = new PdfDocument();
        pdf1.LoadFromFile("document1.pdf");

        PdfDocument pdf2 = new PdfDocument();
        pdf2.LoadFromFile("document2.pdf");

        pdf1.InsertPageRange(pdf2, 0, pdf2.Pages.Count - 1);

        pdf1.SaveToFile("merged.pdf");
        pdf1.Close();
        pdf2.Close();
    }
}
Imports Spire.Pdf
Imports System

Class Program
    Shared Sub Main()
        Dim pdf1 As New PdfDocument()
        pdf1.LoadFromFile("document1.pdf")

        Dim pdf2 As New PdfDocument()
        pdf2.LoadFromFile("document2.pdf")

        pdf1.InsertPageRange(pdf2, 0, pdf2.Pages.Count - 1)

        pdf1.SaveToFile("merged.pdf")
        pdf1.Close()
        pdf2.Close()
    End Sub
End Class
$vbLabelText   $csharpLabel

Nach (IronPDF):

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

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");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

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");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim pdf1 = PdfDocument.FromFile("document1.pdf")
        Dim pdf2 = PdfDocument.FromFile("document2.pdf")

        Dim merged = PdfDocument.Merge(pdf1, pdf2)

        merged.SaveAs("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Spire.PDF erfordert das manuelle Laden jedes Dokuments mit new PdfDocument() + LoadFromFile(), anschließend die Verwendung von InsertPageRange() zur Angabe der einzufügenden Seiten und schließlich den Aufruf von Close() für jedes Dokument.

IronPDF verwendet das einfachere PdfDocument.FromFile() Muster und eine statische PdfDocument.Merge() Methode, die mehrere Dokumente akzeptiert. Es sind keine Close()-Anrufe erforderlich. Erfahren Sie mehr in unseren Tutorials.

Beispiel 3: Hinzufügen von Text zu einer PDF-Datei

Vor (Spire.PDF):

// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf = new PdfDocument();
        PdfPageBase page = pdf.Pages.Add();

        PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 20);
        PdfBrush brush = new PdfSolidBrush(Color.Black);

        page.Canvas.DrawString("Hello from Spire.PDF!", font, brush, new PointF(50, 50));

        pdf.SaveToFile("output.pdf");
        pdf.Close();
    }
}
// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf = new PdfDocument();
        PdfPageBase page = pdf.Pages.Add();

        PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 20);
        PdfBrush brush = new PdfSolidBrush(Color.Black);

        page.Canvas.DrawString("Hello from Spire.PDF!", font, brush, new PointF(50, 50));

        pdf.SaveToFile("output.pdf");
        pdf.Close();
    }
}
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Drawing
Imports System

Class Program
    Shared Sub Main()
        Dim pdf As New PdfDocument()
        Dim page As PdfPageBase = pdf.Pages.Add()

        Dim font As New PdfFont(PdfFontFamily.Helvetica, 20)
        Dim brush As PdfBrush = New PdfSolidBrush(Color.Black)

        page.Canvas.DrawString("Hello from Spire.PDF!", font, brush, New PointF(50, 50))

        pdf.SaveToFile("output.pdf")
        pdf.Close()
    End Sub
End Class
$vbLabelText   $csharpLabel

Nach (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>");

        var textStamper = new TextStamper()
        {
            Text = "Hello from IronPDF!",
            FontSize = 20,
            VerticalOffset = 50,
            HorizontalOffset = 50
        };

        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>");

        var textStamper = new TextStamper()
        {
            Text = "Hello from IronPDF!",
            FontSize = 20,
            VerticalOffset = 50,
            HorizontalOffset = 50
        };

        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Editing
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>")

        Dim textStamper = New TextStamper() With {
            .Text = "Hello from IronPDF!",
            .FontSize = 20,
            .VerticalOffset = 50,
            .HorizontalOffset = 50
        }

        pdf.ApplyStamp(textStamper)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Spire.PDF verwendet ein Canvas-basiertes Zeichenmodell mit PdfFont, PdfBrush und page.Canvas.DrawString(), um Text an bestimmten Koordinaten mit PointF zu positionieren.

IronPDF verwendet ein TextStamper-Objekt mit intuitiven Eigenschaften wie Text, FontSize, VerticalOffset und HorizontalOffset und wendet es dann mit ApplyStamp() an. Dieser Ansatz ist deklarativer und leichter zu pflegen.


Das Text-als-Bilder-Problem

Warum dies wichtig ist

Wenn Spire.PDF HTML in PDF konvertiert und dabei bildbasiertes Rendering verwendet, verlieren Ihre Dokumente wesentliche Funktionen:

1. Keine Textsuche: Benutzer können nicht mit Strg+F nach Text suchen. Dokumentenmanagementsysteme können Inhalte nicht indizieren.

2. Keine Textauswahl/Kopierfunktion: Benutzer, die ein Zitat, eine Referenz oder Daten kopieren möchten, können keinen Text auswählen – es handelt sich um ein Bild.

3. Verstöße gegen die Barrierefreiheit: Bildbasierte PDFs erfüllen nicht die Anforderungen der WCAG 2.1, des Section 508 (US-Regierung), der ADA und der Bildschirmleseprogramme.

4. Große Dateigrößen: Ein Vergleich gleicher Inhalte zeigt, dass Spire.PDF (bildbasiert) Dateien erzeugt, die bis zu 16-mal größer sind als IronPDF (textbasiert).

Erkennung: Ist Ihre PDF-Datei bildbasiert?

Öffnen Sie Ihr mit Spire.PDF erstelltes Dokument und führen Sie diese Tests durch:

  1. Textauswahl: Klicken und ziehen Sie über den Text. Wenn nichts hervorgehoben wird → IMAGE-BASED
  2. Strg+F Suche: Suche nach einem beliebigen Wort auf der Seite. Wenn "Keine Treffer gefunden" → IMAGE-BASED
  3. Kopieren/Einfügen: Text auswählen und in den Editor kopieren. Wenn sich nichts einfügt → IMAGE-BASED

Das Internet Explorer Problem

Die Rendering-Engine von Spire.PDF

Spire.PDF ist in einigen Umgebungen auf Internet Explorer/Edge Legacy für das HTML-Rendering angewiesen. Der Internet Explorer ist seit 2022 veraltet, modernes CSS funktioniert nicht, die JavaScript-Unterstützung ist begrenzt und die Darstellung ist systemübergreifend inkonsistent.

Modernes CSS, das in Spire.PDF scheitert


<div style="display: flex; justify-content: space-between; gap: 20px;">
    <div style="flex: 1;">Column 1</div>
    <div style="flex: 1;">Column 2</div>
</div>

<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;">
    <div>Item 1</div>
    <div>Item 2</div>
    <div>Item 3</div>
</div>

<style>
:root { --primary-color: #007bff; }
h1 { color: var(--primary-color); }
</style>

<div style="display: flex; justify-content: space-between; gap: 20px;">
    <div style="flex: 1;">Column 1</div>
    <div style="flex: 1;">Column 2</div>
</div>

<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;">
    <div>Item 1</div>
    <div>Item 2</div>
    <div>Item 3</div>
</div>

<style>
:root { --primary-color: #007bff; }
h1 { color: var(--primary-color); }
</style>
HTML

IronPDF verwendet modernes Chromium-Rendering, so dass alle diese CSS-Funktionen korrekt funktionieren.


Neue Funktionen nach der Migration

Nach der Migration auf IronPDF erhalten Sie Funktionen, die Spire.PDF nicht bieten kann:

Auswählbarer, durchsuchbarer Text

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Important Contract</h1>");
pdf.SaveAs("contract.pdf");

// Result:
// ✅ Text is fully selectable
// ✅ Text is searchable with Ctrl+F
// ✅ Text can be copied to clipboard
// ✅ Screen readers work perfectly
// ✅ File size is compact
// ✅ Zooming is crystal clear
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Important Contract</h1>");
pdf.SaveAs("contract.pdf");

// Result:
// ✅ Text is fully selectable
// ✅ Text is searchable with Ctrl+F
// ✅ Text can be copied to clipboard
// ✅ Screen readers work perfectly
// ✅ File size is compact
// ✅ Zooming is crystal clear
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Important Contract</h1>")
pdf.SaveAs("contract.pdf")

' Result:
' ✅ Text is fully selectable
' ✅ Text is searchable with Ctrl+F
' ✅ Text can be copied to clipboard
' ✅ Screen readers work perfectly
' ✅ File size is compact
' ✅ Zooming is crystal clear
$vbLabelText   $csharpLabel

Moderne CSS-Unterstützung

var renderer = new ChromePdfRenderer();

var html = @"
<style>
    :root { --primary: #007bff; }
    .container { display: flex; gap: 20px; }
    .grid { display: grid; grid-template-columns: repeat(3, 1fr); }
</style>
<div class='container'>
    <div style='flex: 1; color: var(--primary)'>Column 1</div>
    <div style='flex: 1'>Column 2</div>
</div>
<div class='grid'>
    <div>Item 1</div>
    <div>Item 2</div>
    <div>Item 3</div>
</div>";

var pdf = renderer.RenderHtmlAsPdf(html);
// All modern CSS features render correctly!
var renderer = new ChromePdfRenderer();

var html = @"
<style>
    :root { --primary: #007bff; }
    .container { display: flex; gap: 20px; }
    .grid { display: grid; grid-template-columns: repeat(3, 1fr); }
</style>
<div class='container'>
    <div style='flex: 1; color: var(--primary)'>Column 1</div>
    <div style='flex: 1'>Column 2</div>
</div>
<div class='grid'>
    <div>Item 1</div>
    <div>Item 2</div>
    <div>Item 3</div>
</div>";

var pdf = renderer.RenderHtmlAsPdf(html);
// All modern CSS features render correctly!
Dim renderer = New ChromePdfRenderer()

Dim html = "
<style>
    :root { --primary: #007bff; }
    .container { display: flex; gap: 20px; }
    .grid { display: grid; grid-template-columns: repeat(3, 1fr); }
</style>
<div class='container'>
    <div style='flex: 1; color: var(--primary)'>Column 1</div>
    <div style='flex: 1'>Column 2</div>
</div>
<div class='grid'>
    <div>Item 1</div>
    <div>Item 2</div>
    <div>Item 3</div>
</div>"

Dim pdf = renderer.RenderHtmlAsPdf(html)
' All modern CSS features render correctly!
$vbLabelText   $csharpLabel

HTML-basierte Wasserzeichen

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.ApplyWatermark(@"
    <div style='
        font-size: 48px;
        color: rgba(255, 0, 0, 0.5);
        transform: rotate(-45deg);
    '>DRAFT</div>");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.ApplyWatermark(@"
    <div style='
        font-size: 48px;
        color: rgba(255, 0, 0, 0.5);
        transform: rotate(-45deg);
    '>DRAFT</div>");
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.ApplyWatermark("
    <div style='
        font-size: 48px;
        color: rgba(255, 0, 0, 0.5);
        transform: rotate(-45deg);
    '>DRAFT</div>")
$vbLabelText   $csharpLabel

Migrations-Checkliste

Vor der Migration

  • Alle Verwendungen von Spire.PDF im Quellcode erfassen
  • Bestehende PDFs auf Textauswahlbarkeit prüfen (Erkennung kritischer Probleme)
  • Dokument LoadFromHTML() Anrufe (diese haben Priorität bei der Behebung)
  • Den IronPDF Lizenzschlüssel erhalten Sie unter IronPDF

Code-Aktualisierungen

  • Entfernen Sie das NuGet Paket Spire.PDF (und FreeSpire.PDF, falls Sie die kostenlose Version verwenden).
  • Installieren Sie das NuGet Paket IronPdf
  • Namespace-Importe aktualisieren (using Spire.Pdf;using IronPdf;)
  • Ersetzen Sie LoadFromHTML() durch RenderHtmlAsPdf() (WICHTIGE FEHLERBEHEBUNG)
  • Ersetzen Sie new PdfDocument() + LoadFromFile() durch PdfDocument.FromFile()
  • Ersetzen Sie InsertPageRange() durch PdfDocument.Merge()
  • Ersetzen Sie Canvas.DrawString() durch TextStamper + ApplyStamp()
  • Ersetzen Sie SaveToFile() durch SaveAs()
  • Entfernen Sie alle Close()-Aufrufe (in IronPDF nicht erforderlich)
  • Lizenzinitialisierung beim Anwendungsstart hinzufügen

Testen

  • Überprüfen, ob der Text in den generierten PDFs auswählbar ist (WICHTIGER TEST)
  • Überprüfung der Verbesserungen beim CSS-Rendering (Flexbox/Grid funktionieren jetzt)
  • Überprüfen Sie, ob die Dateigrößen kleiner sind.
  • Barrierefreiheit mit Bildschirmlesegeräten testen
  • Leistungsvergleich

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen

Iron Support Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an