Zum Fußzeileninhalt springen
VIDEOS

Wie man XAML zu PDF in NET MAUI konvertiert | IronPDF

Der Wechsel von Spire.PDF zu IronPDF verlagert Ihre PDF-Generierung von einem veralteten HTML-Pfad, der häufig textbasierte Bilder erzeugt, zu einem Chromium-Pipeline, der echten, wählbaren, durchsuchbaren Text erzeugt. Diese Anleitung bietet einen vollständigen schrittweisen Migrationspfad, der die HTML-Rendering-Trad-offs von Spire.PDF und die berichteten Einbettungsprobleme bei Schriftarten abdeckt.

Warum von Spire.PDF zu IronPDF migrieren

Spire verstehen.PDF

Spire.PDF ist eine robuste, kommerzielle PDF-Bibliothek, die für .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 wird auf dem veralteten HTML-Pfad oft als Bilder gerendert PDFs nicht durchsuchbar, nicht zugänglich, Text kann nicht kopiert werden Echte Textwiedergabe
IE/Edge Legacy oder QtWebKit-Abhängigkeit auf dem veralteten Pfad Veraltetes Rendering, moderne CSS-Probleme Gebündeltes modernes Chromium
Berichtete Schriftarten-Einbettungsprobleme Dokumente sehen auf anderen Systemen falsch aus Zuverlässige Handhabung von Schriftarten
Großer Einsatzbereich Höherer Speicherverbrauch Gebündeltes Chromium-Laufzeit
Begrenztes CSS auf dem veralteten Pfad Moderne Layouts werden nicht korrekt wiedergegeben Vollständige CSS3-Unterstützung

Das Kernproblem: Bildbasierte PDFs

Ein gemeldetes Manko des veralteten HTML-Pfads von Spire.PDF ist seine Neigung, Text innerhalb von HTML-Dokumenten als Bilder zu rendern. Dies erzeugt PDFs, in denen Text nicht wählbar oder durchsuchbar ist — eine Einschränkung für Anwendungen, die Suche oder Textinteraktion benötigen.

Wenn Sie die Methode LoadFromHTML() von Spire.PDF auf der älteren Engine verwenden, wird Text häufig als Bitmap-Bilder gerendert, anstatt als tatsächlicher Text, was diese Probleme verursacht:

  • 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 Veraltetes IE/QtWebKit standardmäßig; Opt-in ChromeHtmlConverter (erfordert Chrome-System) seit v10.7.21 Gebündeltes Chromium (modern, keine zusätzliche Installation)
Textausgabe (HTML-Pfad) Wird häufig als Bilder auf dem veralteten Pfad gerendert Echter Text (wählbar und durchsuchbar)
Schriftbehandlung Probleme auf dem veralteten Pfad gemeldet Zuverlässige Handhabung von Schriftarten
CSS3-Unterstützung Auf dem veralteten Pfad begrenzt Voll
Flexbox/Grid Auf dem veralteten Pfad nicht unterstützt Unterstützt
JavaScript Auf dem veralteten Pfad begrenzt Vollständig ES6+
PDF Barrierefreiheit Schlecht auf dem veralteten Pfad (bildbasierte Ausgabe) Markierte Textausgabe
API-Entwurf Viele Overloads, manuelle Seiteneinstellungen Einzelner fließender Renderer
Lizenzierung Freemium/Kommerziell Kommerziell

Unter modernem .NET,IronPDF adressiert die HTML-zu-PDF-Trad-offs von Spire.PDF, indem es Text als tatsächlichen wählbaren Text anstatt als Bilder rendert, sodass die resultierenden 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, was oft dazu führt, dass Text als Bitmap-Bilder gerendert wird. Das Ergebnis sind PDFs, in denen die Benutzer keinen Text auswählen, kopieren oder suchen können.

IronPDF verwendet einen ChromePdfRenderer mit RenderHtmlAsPdf() und erzeugt wahren Text, der vollständig auswählbar, durchsuchbar und zugänglich ist. Kein Close()-Aufruf erforderlich—IronPDF verwendet das Dispose-Muster für die automatische Bereinigung. Siehe die HTML zu PDF-Dokumentation für umfassende Beispiele.

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(), dann die Verwendung von InsertPageRange(), um festzulegen, welche Seiten eingefügt werden sollen, 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. Keine Close()-Aufrufe 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 zeichenflächenbasiertes Modell mit PdfFont, PdfBrush und page.Canvas.DrawString(), um Text mit PointF an bestimmten Koordinaten 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: Bildbasierte Ausgaben aus dem veralteten HTML-Pfad können Dateien erzeugen, die eine Größenordnung größer sind als die textbasierte Ausgabe, die IronPDF für denselben Inhalt erzeugt.

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 Problem des Veralteten HTML-Engines

Spire.PDF's Rendering Engines

Spire.PDFs LoadFromHTML(...) bot historisch zwei Wege: einen nicht-Plugin-Weg, unterstützt durch das Windows Internet Explorer/Edge Legacy WebBrowser-Steuerelement, und einen separat heruntergeladenen QT/WebKit-Plugin-Weg. Spire.PDF 10.7.21 (Mitte 2024) fügte eine dritte Option hinzu, ChromeHtmlConverter, die ein lokal installiertes Google Chrome verwendet — aber es ist opt-in und die ursprüngliche LoadFromHTML-API standardmäßig auf den Legacy-Engines bleibt. IE/Edge Legacy wurde von Microsoft 2022 eingestellt, modernes CSS ist auf dem veralteten Pfad unzuverlässig, JavaScript-Support ist teilweise und das Rendering kann zwischen Systemen variieren.

Modernes CSS, das in Spire scheitert.PDF


<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()-Aufrufe (diese haben die höchste Priorität zum Beheben)
  • Den IronPDF Lizenzschlüssel erhalten Sie unter IronPDF

Code-Aktualisierungen

  • Entfernen Sie das Spire.PDF NuGet-Paket (und FreeSpire.PDF, wenn Sie die kostenlose Version verwenden)
  • Installieren Sie das IronPdf NuGet-Paket
  • Aktualisieren Sie die Namespace-Importe (using Spire.Pdf;using IronPdf;)
  • Ersetzen Sie LoadFromHTML() durch RenderHtmlAsPdf() (KRITISCHE BEHEBUNG)
  • 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 (nicht erforderlich in IronPDF)
  • 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

Hinweis:Spire ist ein eingetragenes Warenzeichen seines jeweiligen Eigentümers. Diese Seite ist nicht mit e-iceblue verbunden, genehmigt oder gesponsert. Alle Produktnamen, Logos und Marken sind Eigentum ihrer jeweiligen Eigentümer. Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich zugängliche Informationen zum Zeitpunkt des Schreibens wider.

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