Zum Fußzeileninhalt springen
MIGRATIONSLEITFäDEN

Wie man von Pdfium zu IronPDF in C# migriert

Der Wechsel von einem PDFium .NET-Wrapper zu IronPDF verschiebt Ihren .NET-PDF-Workflow von einer rendering-fokussierten Engine mit nativen Binärabhängigkeiten zu einer umfassenden PDF-Lösung, die Erstellung, Manipulation und Rendering ohne plattformspezifische Komplexität behandelt. Diese Anleitung bietet einen schrittweisen Migrationspfad, der das Management nativer Abhängigkeiten eliminiert, während Fähigkeiten hinzugefügt werden, die PDFium selbst nicht bietet.

Warum von einem PDFium-Wrapper zu IronPDF wechseln

Verständnis der PDFium .NET-Wrapper

PDFium ist Googles BSD-3-Clause C++ PDF-Rendering- und -Parsing-Engine - die gleiche Engine, die den in Chrome integrierten PDF-Viewer antreibt. Es gibt keine offizielle Google-gelieferte .NET-Bindung; stattdessen konsumiert das .NET-Ökosystem PDFium durch Community-Wrapper. Die vier am häufigsten zitierten NuGet-Pakete sind PdfiumViewer (pvginkel; Apache 2.0; archiviert im August 2019, letzte Veröffentlichung 2.13.0 im November 2017, .NET Framework 2.0+), PdfiumViewer.Updated (ein gepflegter Fork, der auf .NET Core / .NET 6 portiert wurde), PDFiumCore (Dtronix; .NET Standard 2.1 P/Invoke bindings), and Pdfium.Net.SDK (Patagames; kommerzielles, unbefristetes Lizenz-SDK).

Ihre APIs unterscheiden sich, aber sie teilen ein Merkmal: PDFium selbst ist eine Render- und Parsing-Engine, keine HTML-zu-PDF- oder Dokument-Erzeugungs-Engine. PDFium hat keinen HTML-Parser, daher kann kein Wrapper HTML eigenständig in PDF umwandeln. Dieser Leitfaden verwendet PdfiumViewer als repräsentative Hülle für "vorher"-Snippets, da seine API am häufigsten zitiert wird; der Migrationsansatz ist für alle vier der gleiche.

Kritische PDFium-Wrapper-Beschränkungen

  1. Rendering-First: PDFium hat keinen HTML-Parser, daher kann kein Wrapper PDFs aus HTML, URLs oder beliebigen Bildern erstellen.

  2. Begrenzte Manipulation in Open-Source-Wrappern: PdfiumViewer/PDFiumCore ermöglicht die Ansicht und Textextraktion pro Seite; Zusammenführen / Teilen / Formularbearbeitung ist in Patagames Pdfium.Net.SDK teilweise vorhanden und in den freien Wrappern weitgehend nicht verfügbar.

  3. Natives Binärabhängigkeiten: Erfordert plattformspezifische PDFium-Binärdateien (pdfium.dll / .so / .dylib) pro RID.

  4. Bereitstellungskomplexität: Muss native Binaries pro Plattform mit x86-, x64- und Laufzeitordnern bündeln und verwalten.

  5. Einfache Textextraktion: PdfiumViewerstellt pro Seite Rohtext über GetPdfText(int) zur Verfügung; Layout- / Formatmetadaten werden nicht freigegeben.

  6. Kein HTML zu PDF: PDFium hat keinen HTML-Parser; Webinhalte können nicht direkt konvertiert werden.

  7. Keine eingebauten Header/Footer: Keine hochrangige Seitenüberlagerungs-API.

  8. Keine eingebauten Wasserzeichen: Keine Stempelprimitive.

  9. Formulare: Nur schreibgeschützt oder in den kostenlosen Wrappern nicht vorhanden; verfügbar in Patagames Pdfium.Net.SDK.

  10. Sicherheit: Verschlüsselung / Berechtigungen werden von den kostenlosen Wrappern nicht freigegeben; verfügbar in Patagames Pdfium.Net.SDK.

PDFium-Wrapper im Vergleich zu IronPDF

Aspekt PDFium .NET-Wrapper IronPDF
Primärer Schwerpunkt Rendering/Betrachtung Vollständige PDF-Lösung
Wiedergabetreue Naturgetreues Rendering Hoch, insbesondere für HTML/CSS/JS
PDF-Erstellung aus HTML None Ja (HTML, URL, Bilder)
PDF-Bearbeitung Kostenlose Wrapper: keine; Patagames: teilweise Ja (zusammenführen, auftrennen, bearbeiten)
HTML zu PDF None Ja (Chromium-Engine)
Wasserzeichen Nicht eingebaut Ja
Kopf-/Fußzeilen Nicht eingebaut Ja
Formularausfüllen Kostenlose Wrapper: keine; Patagames: ja Ja
Sicherheit Kostenlose Wrapper: keine; Patagames: ja Ja
Native Abhängigkeiten Erforderlich Gebündelt / NuGet-verwaltet
Plattformübergreifend Manuelle native Binärverwaltungs Automatisch
Benutzerfreundlichkeit Kompliziert durch native Abhängigkeiten Einfacher; weniger Komplikationen durch Abhängigkeiten

Für Teams, die moderne .NET-Frameworks anstreben, bietet IronPDF eine vollständig verwaltete Basis, die die native Binärverwaltung eliminiert und umfassende PDF-Erstellungs- und Manipulationsfähigkeiten hinzufügt.


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 whichever PDFium wrapper you used:
#   PdfiumViewer           (Apache 2.0 - archived 2019, .NET Framework only)
#   PdfiumViewer.Updated    (community fork, .NET Core / .NET 6)
#   PDFiumCore              (Dtronix - .NET Standard 2.1 P/Invoke bindings)
#   Pdfium.Net.SDK          (Patagames - commercial, perpetual license)
dotnet remove package PdfiumViewer
dotnet remove package PdfiumViewer.Updated
dotnet remove package PDFiumCore
dotnet remove package Pdfium.Net.SDK

# Install IronPDF
dotnet add package IronPdf
# Remove whichever PDFium wrapper you used:
#   PdfiumViewer           (Apache 2.0 - archived 2019, .NET Framework only)
#   PdfiumViewer.Updated    (community fork, .NET Core / .NET 6)
#   PDFiumCore              (Dtronix - .NET Standard 2.1 P/Invoke bindings)
#   Pdfium.Net.SDK          (Patagames - commercial, perpetual license)
dotnet remove package PdfiumViewer
dotnet remove package PdfiumViewer.Updated
dotnet remove package PDFiumCore
dotnet remove package Pdfium.Net.SDK

# Install IronPDF
dotnet add package IronPdf
SHELL

Lizenz-Konfiguration

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

PDFium Wrapper Nutzung identifizieren

# Find PDFium wrapper usage
grep -rE "PdfiumViewer|PDFiumCore|Patagames\.Pdf|PdfDocument\.Load|\.Render\(" --include="*.cs" .

# Find native binary references
grep -rE "pdfium\.dll|libpdfium\.(so|dylib)" --include="*.csproj" --include="*.config" .

# Find platform-specific code
grep -rE "#if.*64|WIN32|WIN64|LINUX|OSX" --include="*.cs" .
# Find PDFium wrapper usage
grep -rE "PdfiumViewer|PDFiumCore|Patagames\.Pdf|PdfDocument\.Load|\.Render\(" --include="*.cs" .

# Find native binary references
grep -rE "pdfium\.dll|libpdfium\.(so|dylib)" --include="*.csproj" --include="*.config" .

# Find platform-specific code
grep -rE "#if.*64|WIN32|WIN64|LINUX|OSX" --include="*.cs" .
SHELL

Komplette API-Referenz

Namensraumänderungen

// PDFium wrappers (use the one you installed)
using PdfiumViewer;             // PdfiumViewer/PdfiumViewer.Updated
using PDFiumCore;               // Dtronix PDFiumCore (P/Invoke bindings)
using Patagames.Pdf;            // Patagames Pdfium.Net.SDK
using Patagames.Pdf.Net;        // Patagames Pdfium.Net.SDK

// IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;
// PDFium wrappers (use the one you installed)
using PdfiumViewer;             // PdfiumViewer/PdfiumViewer.Updated
using PDFiumCore;               // Dtronix PDFiumCore (P/Invoke bindings)
using Patagames.Pdf;            // Patagames Pdfium.Net.SDK
using Patagames.Pdf.Net;        // Patagames Pdfium.Net.SDK

// IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;
Imports PdfiumViewer ' PdfiumViewer/PdfiumViewer.Updated
Imports PDFiumCore ' Dtronix PDFiumCore (P/Invoke bindings)
Imports Patagames.Pdf ' Patagames Pdfium.Net.SDK
Imports Patagames.Pdf.Net ' Patagames Pdfium.Net.SDK

' IronPDF
Imports IronPdf
Imports IronPdf.Rendering
Imports IronPdf.Editing
$vbLabelText   $csharpLabel

Kernklassen-Zuordnungen

PdfiumViewer IronPDF Notizen
PdfiumViewer.PdfDocument IronPdf.PdfDocument Gleicher einfacher Name in verschiedenen Namespaces
PdfRenderer (WinForms-Steuerelement) (nicht anwendbar) PdfiumViewerliefert auch UI-Steuerelemente;IronPDF ist kopflos
(nicht verfügbar) ChromePdfRenderer HTML / URL → PDF
(nicht verfügbar) HtmlHeaderFooter Kopfzeilen/Fußzeilen

Zuordnungen beim Laden von Dokumenten

PdfiumViewer IronPDF Notizen
PdfDocument.Load(path) PdfDocument.FromFile(path) Aus Datei laden
PdfDocument.Load(stream) PdfDocument.FromStream(stream) Vom Stream laden
(umfassen Bytes in MemoryStream) PdfDocument.FromBinaryData(bytes) Aus Bytes laden

Zuordnungen von Dokumenteigenschaften

PdfiumViewer IronPDF Notizen
document.PageCount document.PageCount Gleiche
document.PageSizes (IList<SizeF>) document.Pages[index].Width / Height PdfiumViewerbietet Größen; pages are not first-class objects
document.PageSizes[i].Width document.Pages[i].Width Breite pro Seite in Punkten

Textextraktions-Zuordnungen

PdfiumViewer IronPDF Notizen
document.GetPdfText(pageIndex) document.Pages[index].Text Pro Seite
(manuelle Schleife)_ document.ExtractAllText() Alle Seiten

Zuordnungen von Dokumenten speichern

PdfiumViewer IronPDF Notizen
document.Save(stream) document.SaveAs(path) PdfiumViewererfordert einen Stream;IronPDF erfordert einen Pfad
(nicht verfügbar) document.Stream Zugriff auf den Rohstrom
(nicht verfügbar) document.BinaryData Bytes erhalten

Seiten-Rendering-Zuordnungen

PdfiumViewer IronPDF Notizen
document.Render(page, width, height, dpiX, dpiY, flags) pdf.RasterizeToImageFiles(path, DPI) Rasterisieren
Manuelle Schleife über document.Render(i, ...) pdf.RasterizeToImageFiles("page_*.png") Stapelverarbeitung über alle Seiten
Manuelle Skalierungsberechnung DPI = 72 * scale Skalierung-zu-DPI-Umwandlung

Neue Funktionen, die in PDFium-Wrappern nicht verfügbar sind

IronPDF Merkmal Beschreibung
ChromePdfRenderer.RenderHtmlAsPdf() Aus HTML erstellen
ChromePdfRenderer.RenderUrlAsPdf() Von URL erstellen
ChromePdfRenderer.RenderHtmlFileAsPdf() Aus HTML-Datei erstellen
PdfDocument.Merge() PDFs kombinieren
pdf.CopyPages() Seiten extrahieren
pdf.RemovePages() Seiten löschen
pdf.InsertPdf() PDF an dieser Stelle einfügen
pdf.ApplyWatermark() Wasserzeichen hinzufügen
pdf.AddHtmlHeaders() Kopfzeilen hinzufügen
pdf.AddHtmlFooters() Fußzeilen hinzufügen
pdf.SecuritySettings Passwortschutz
pdf.SignWithDigitalSignature() Digitale Signaturen
pdf.Form Ausfüllen von Formularen

Beispiele für die Code-Migration

Beispiel 1: Textextraktion aus PDF

Vor (PdfiumViewer):

// NuGet: Install-Package PdfiumViewer (Apache 2.0; archived Aug 2019, .NET Framework 2.0+)
//        or Install-Package PdfiumViewer.Updated  (maintained fork, .NET Core / .NET 6)
//        or Install-Package PDFiumCore             (Dtronix, .NET Standard 2.1 P/Invoke)
//        or Install-Package Pdfium.Net.SDK         (Patagames, commercial perpetual license)
using PdfiumViewer;
using System;
using System.IO;
using System.Text;

class Program
{
    static void Main()
    {
        string pdfPath = "document.pdf";

        using (var document = PdfDocument.Load(pdfPath))
        {
            StringBuilder text = new StringBuilder();

            for (int i = 0; i < document.PageCount; i++)
            {
                // PdfiumViewer's text extraction is per-page raw text via GetPdfText(int).
                // No layout / format metadata is exposed.
                string pageText = document.GetPdfText(i);
                text.AppendLine(pageText);
            }

            Console.WriteLine(text.ToString());
        }
    }
}
// NuGet: Install-Package PdfiumViewer (Apache 2.0; archived Aug 2019, .NET Framework 2.0+)
//        or Install-Package PdfiumViewer.Updated  (maintained fork, .NET Core / .NET 6)
//        or Install-Package PDFiumCore             (Dtronix, .NET Standard 2.1 P/Invoke)
//        or Install-Package Pdfium.Net.SDK         (Patagames, commercial perpetual license)
using PdfiumViewer;
using System;
using System.IO;
using System.Text;

class Program
{
    static void Main()
    {
        string pdfPath = "document.pdf";

        using (var document = PdfDocument.Load(pdfPath))
        {
            StringBuilder text = new StringBuilder();

            for (int i = 0; i < document.PageCount; i++)
            {
                // PdfiumViewer's text extraction is per-page raw text via GetPdfText(int).
                // No layout / format metadata is exposed.
                string pageText = document.GetPdfText(i);
                text.AppendLine(pageText);
            }

            Console.WriteLine(text.ToString());
        }
    }
}
Imports PdfiumViewer
Imports System
Imports System.IO
Imports System.Text

Module Program
    Sub Main()
        Dim pdfPath As String = "document.pdf"

        Using document = PdfDocument.Load(pdfPath)
            Dim text As New StringBuilder()

            For i As Integer = 0 To document.PageCount - 1
                ' PdfiumViewer's text extraction is per-page raw text via GetPdfText(int).
                ' No layout / format metadata is exposed.
                Dim pageText As String = document.GetPdfText(i)
                text.AppendLine(pageText)
            Next

            Console.WriteLine(text.ToString())
        End Using
    End Sub
End Module
$vbLabelText   $csharpLabel

Nach (IronPDF):

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

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        string pdfPath = "document.pdf";

        var pdf = PdfDocument.FromFile(pdfPath);
        string text = pdf.ExtractAllText();

        Console.WriteLine(text);
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        string pdfPath = "document.pdf";

        var pdf = PdfDocument.FromFile(pdfPath);
        string text = pdf.ExtractAllText();

        Console.WriteLine(text);
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

        Dim pdfPath As String = "document.pdf"

        Dim pdf = PdfDocument.FromFile(pdfPath)
        Dim text As String = pdf.ExtractAllText()

        Console.WriteLine(text)
    End Sub
End Class
$vbLabelText   $csharpLabel

Der Unterschied ist hier signifikant. PdfiumViewererfordert eine manuelle Schleife durch jede Seite mit GetPdfText(int), das Erstellen eines StringBuilder und die Verwaltung der using Anweisung zur ordnungsgemäßen Entsorgung—und der zurückgegebene Text ist Rohtext pro Seite ohne Layout- / Format-Metadaten.

IronPDF vereinfacht dies auf ein paar Zeilen: Laden mit PdfDocument.FromFile(), extrahieren mit ExtractAllText() und ausgeben. Die ExtractAllText() Methode bearbeitet alle Seiten automatisch. Wenn Sie eine pro Seite Extraktion benötigen, können Sie pdf.Pages[index].Text verwenden. Weitere Optionen finden Sie in der Dokumentation zur Textextraktion .

Beispiel 2: PDF-Zusammenführung

Vor (PdfiumViewer):

// NuGet: Install-Package PdfiumViewer (representative open-source PDFium wrapper)
// PdfiumViewerand PDFiumCore do not expose PDF merge APIs - PDFium itself
// is a rendering / parsing engine, not a document-authoring engine.
// (Patagames Pdfium.Net.SDK exposes some document-edit operations but is commercial.)
using PdfiumViewer;
using System;
using System.IO;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<string> pdfFiles = new List<string>
        {
            "document1.pdf",
            "document2.pdf",
            "document3.pdf"
        };

        // To merge PDFs from a PDFium wrapper you must reach for another library
        // (PdfSharp, iText, IronPDF) or, with Patagames Pdfium.Net.SDK, use its
        // document-edit APIs.

        Console.WriteLine("PDF merging is not supported by PdfiumViewer/PDFiumCore.");
    }
}
// NuGet: Install-Package PdfiumViewer (representative open-source PDFium wrapper)
// PdfiumViewerand PDFiumCore do not expose PDF merge APIs - PDFium itself
// is a rendering / parsing engine, not a document-authoring engine.
// (Patagames Pdfium.Net.SDK exposes some document-edit operations but is commercial.)
using PdfiumViewer;
using System;
using System.IO;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<string> pdfFiles = new List<string>
        {
            "document1.pdf",
            "document2.pdf",
            "document3.pdf"
        };

        // To merge PDFs from a PDFium wrapper you must reach for another library
        // (PdfSharp, iText, IronPDF) or, with Patagames Pdfium.Net.SDK, use its
        // document-edit APIs.

        Console.WriteLine("PDF merging is not supported by PdfiumViewer/PDFiumCore.");
    }
}
Imports PdfiumViewer
Imports System
Imports System.IO
Imports System.Collections.Generic

Module Program
    Sub Main()
        Dim pdfFiles As New List(Of String) From {
            "document1.pdf",
            "document2.pdf",
            "document3.pdf"
        }

        ' To merge PDFs from a PDFium wrapper you must reach for another library
        ' (PdfSharp, iText, IronPDF) or, with Patagames Pdfium.Net.SDK, use its
        ' document-edit APIs.

        Console.WriteLine("PDF merging is not supported by PdfiumViewer/PDFiumCore.")
    End Sub
End Module
$vbLabelText   $csharpLabel

Nach (IronPDF):

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

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        List<string> pdfFiles = new List<string>
        {
            "document1.pdf",
            "document2.pdf",
            "document3.pdf"
        };

        // PdfDocument.Merge accepts an IEnumerable<PdfDocument>, so load each file first.
        var docs = pdfFiles.Select(path => PdfDocument.FromFile(path)).ToList();
        var merged = PdfDocument.Merge(docs);
        merged.SaveAs("merged.pdf");

        Console.WriteLine("PDFs merged successfully");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        List<string> pdfFiles = new List<string>
        {
            "document1.pdf",
            "document2.pdf",
            "document3.pdf"
        };

        // PdfDocument.Merge accepts an IEnumerable<PdfDocument>, so load each file first.
        var docs = pdfFiles.Select(path => PdfDocument.FromFile(path)).ToList();
        var merged = PdfDocument.Merge(docs);
        merged.SaveAs("merged.pdf");

        Console.WriteLine("PDFs merged successfully");
    }
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Imports System.Linq

Module Program
    Sub Main()
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

        Dim pdfFiles As New List(Of String) From {
            "document1.pdf",
            "document2.pdf",
            "document3.pdf"
        }

        ' PdfDocument.Merge accepts an IEnumerable(Of PdfDocument), so load each file first.
        Dim docs = pdfFiles.Select(Function(path) PdfDocument.FromFile(path)).ToList()
        Dim merged = PdfDocument.Merge(docs)
        merged.SaveAs("merged.pdf")

        Console.WriteLine("PDFs merged successfully")
    End Sub
End Module
$vbLabelText   $csharpLabel

Dieses Beispiel hebt eine Fähigkeitslücke hervor. Kostenlose PDFium-Wrapper (PdfiumViewer, PDFiumCore) veröffentlichen keine Zusammenführungs-APIs; Patagames Pdfium.Net.SDK bietet einige Dokumentbearbeitungsoperationen an, ist jedoch kommerziell.

IronPDF bietet natives Zusammenführen mit der statischen PdfDocument.Merge() Methode an, die ein IEnumerable<PdfDocument> benötigt—laden Sie jede Eingabedatei zuerst mit PdfDocument.FromFile(), dann die resultierenden Dokumente zusammenführen. Das Ergebnis ist ein neues PdfDocument, das Sie mit SaveAs() speichern. Erfahren Sie mehr über das Zusammenführen und Aufteilen von PDFs.

Beispiel 3: Konvertierung von HTML in PDF

Vor (PdfiumViewer):

// NuGet: Install-Package PdfiumViewer (representative PDFium wrapper)
// PDFium is a PDF rendering / parsing engine. It has NO HTML parser, so no
// PDFium .NET wrapper (PdfiumViewer, PdfiumViewer.Updated, PDFiumCore,
// Pdfium.Net.SDK) can convert HTML to PDF on its own.
using PdfiumViewer;
using System;
using System.IO;
using System.Drawing.Printing;

class Program
{
    static void Main()
    {
        // PDFium has no native HTML-to-PDF capability.
        // Produce the PDF with another engine (wkhtmltopdf, headless Chromium,
        // IronPDF, etc.) and then load it with PdfDocument.Load(...) for rendering.
        string htmlContent = "<h1>Hello World</h1>";

        Console.WriteLine("HTML to PDF conversion is not supported by PDFium.");
    }
}
// NuGet: Install-Package PdfiumViewer (representative PDFium wrapper)
// PDFium is a PDF rendering / parsing engine. It has NO HTML parser, so no
// PDFium .NET wrapper (PdfiumViewer, PdfiumViewer.Updated, PDFiumCore,
// Pdfium.Net.SDK) can convert HTML to PDF on its own.
using PdfiumViewer;
using System;
using System.IO;
using System.Drawing.Printing;

class Program
{
    static void Main()
    {
        // PDFium has no native HTML-to-PDF capability.
        // Produce the PDF with another engine (wkhtmltopdf, headless Chromium,
        // IronPDF, etc.) and then load it with PdfDocument.Load(...) for rendering.
        string htmlContent = "<h1>Hello World</h1>";

        Console.WriteLine("HTML to PDF conversion is not supported by PDFium.");
    }
}
Imports PdfiumViewer
Imports System
Imports System.IO
Imports System.Drawing.Printing

Class Program
    Shared Sub Main()
        ' PDFium has no native HTML-to-PDF capability.
        ' Produce the PDF with another engine (wkhtmltopdf, headless Chromium,
        ' IronPDF, etc.) and then load it with PdfDocument.Load(...) for rendering.
        Dim htmlContent As String = "<h1>Hello World</h1>"

        Console.WriteLine("HTML to PDF conversion is not supported by PDFium.")
    End Sub
End Class
$vbLabelText   $csharpLabel

Nach (IronPDF):

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

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        var renderer = new ChromePdfRenderer();
        string htmlContent = "<h1>Hello World</h1>";

        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()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        var renderer = new ChromePdfRenderer();
        string htmlContent = "<h1>Hello World</h1>";

        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully");
    }
}
Imports IronPdf
Imports System

Module Program
    Sub Main()
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

        Dim renderer As New ChromePdfRenderer()
        Dim htmlContent As String = "<h1>Hello World</h1>"

        Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
        pdf.SaveAs("output.pdf")

        Console.WriteLine("PDF created successfully")
    End Sub
End Module
$vbLabelText   $csharpLabel

Dieses Beispiel verdeutlicht den größten Unterschied in den Fähigkeiten. PDFium hat keinen HTML-Parser, daher kann kein .NET-Wrapper darum HTML eigenständig in PDF umwandeln.

IronPDF bietet eine native HTML zu PDF-Konvertierung über ChromePdfRenderer an, das intern eine Chromium-Engine verwendet für eine genaue Darstellung von HTML, CSS und JavaScript. Die RenderHtmlAsPdf() Methode konvertiert HTML-Strings direkt in PDF-Dokumente.IronPDF kann auch URLs mit RenderUrlAsPdf() und HTML-Dateien mit RenderHtmlFileAsPdf() rendern. Umfassende Beispiele finden Sie in der HTML to PDF Dokumentation.


Natives Entfernen von Abhängigkeiten

Einer der wesentlichen Vorteile der Migration von einem PDFium-Wrapper zu IronPDF ist die Beseitigung der nativen Binärverwaltung.

Bevor (PDFium-Wrapper) - Komplexe Bereitstellung

MyApp/
├── bin/
│ ├── MyApp.dll
│   ├── PdfiumViewer.dll      # or PDFiumCore.dll / Patagames.Pdf.dll
│ ├── x86/
│ │ └── pdfium.dll
│ └── x64/
│ └── pdfium.dll
├── Laufzeiten/
│ ├── win-x86/native/
│ │ └── pdfium.dll
│   ├── win-x64/native/
│ │ └── pdfium.dll
│   ├── linux-x64/native/
│   │   └── libpdfium.so
│   └── osx-x64/native/
│       └── libpdfium.dylib

Nach (IronPDF) - Saubere Bereitstellung

MyApp/
├── bin/
│ ├── MyApp.dll
│ └── IronPDF.dll # Alles enthalten

Native binäre Referenzen entfernen

# Delete native PDFium binaries
rm -rf x86/x64/runtimes/

# Remove from .csproj
# Delete any <Content Include="pdfium.dll" /> entries
# Delete any <None Include="x86/pdfium.dll" /> entries
# Delete native PDFium binaries
rm -rf x86/x64/runtimes/

# Remove from .csproj
# Delete any <Content Include="pdfium.dll" /> entries
# Delete any <None Include="x86/pdfium.dll" /> entries
SHELL

Kritische Hinweise zur Migration

Umwandlung von Skala in DPI

PdfiumViewer's Render(...) nimmt explizit dpiX/dpiY und das zugrunde liegende Rendering von PDFium ist maßstabgetrieben (1.0 = 72 DPI).IronPDF verwendet DPI direkt:

// Formula:IronPDF DPI = 72 × PDFium scale
// PDFium scale 2.0 →IronPDF DPI 144
pdf.RasterizeToImageFiles("*.png", DPI: 144);
// Formula:IronPDF DPI = 72 × PDFium scale
// PDFium scale 2.0 →IronPDF DPI 144
pdf.RasterizeToImageFiles("*.png", DPI: 144);
' Formula: IronPDF DPI = 72 × PDFium scale
' PDFium scale 2.0 → IronPDF DPI 144
pdf.RasterizeToImageFiles("*.png", DPI:=144)
$vbLabelText   $csharpLabel

Änderung der Methode zum Laden von Dokumenten

// PdfiumViewer
PdfDocument.Load(path)

// IronPDF
PdfDocument.FromFile(path)
// PdfiumViewer
PdfDocument.Load(path)

// IronPDF
PdfDocument.FromFile(path)
' PdfiumViewer
PdfDocument.Load(path)

' IronPDF
PdfDocument.FromFile(path)
$vbLabelText   $csharpLabel

Methodenänderung speichern

// PdfiumViewer(takes a Stream)
document.Save(stream)

//IronPDF(takes a path)
pdf.SaveAs(path)
// PdfiumViewer(takes a Stream)
document.Save(stream)

//IronPDF(takes a path)
pdf.SaveAs(path)
' PdfiumViewer(takes a Stream)
document.Save(stream)

' IronPDF(takes a path)
pdf.SaveAs(path)
$vbLabelText   $csharpLabel

Vereinfachung von Entsorgungsmustern

// PdfiumViewer: explicit disposal of document and the rendered Image
using (var document = PdfDocument.Load(path))
using (var bitmap = document.Render(0, 1024, 768, 96, 96, PdfRenderFlags.None))
{
    bitmap.Save("output.png");
}

// IronPDF: Simplified
var pdf = PdfDocument.FromFile(path);
pdf.RasterizeToImageFiles("output.png");
// PdfiumViewer: explicit disposal of document and the rendered Image
using (var document = PdfDocument.Load(path))
using (var bitmap = document.Render(0, 1024, 768, 96, 96, PdfRenderFlags.None))
{
    bitmap.Save("output.png");
}

// IronPDF: Simplified
var pdf = PdfDocument.FromFile(path);
pdf.RasterizeToImageFiles("output.png");
Imports PdfiumViewer

' PdfiumViewer: explicit disposal of document and the rendered Image
Using document = PdfDocument.Load(path)
    Using bitmap = document.Render(0, 1024, 768, 96, 96, PdfRenderFlags.None)
        bitmap.Save("output.png")
    End Using
End Using

' IronPDF: Simplified
Dim pdf = PdfDocument.FromFile(path)
pdf.RasterizeToImageFiles("output.png")
$vbLabelText   $csharpLabel

Plattformspezifische Code-Entfernung

// PDFium wrapper: required platform detection / RID-specific binaries
#if WIN64
    // Load x64 pdfium.dll
#else
    // Load x86 pdfium.dll
#endif

// IronPDF: Remove all platform-specific code
// Just use the API directly
// PDFium wrapper: required platform detection / RID-specific binaries
#if WIN64
    // Load x64 pdfium.dll
#else
    // Load x86 pdfium.dll
#endif

// IronPDF: Remove all platform-specific code
// Just use the API directly
$vbLabelText   $csharpLabel

Zusammenfassung des Funktionsvergleichs

Feature PDFium .NET-Wrapper IronPDF
PDF laden Ja Ja
Ins Bild rendern Ja Ja
Text extrahieren Ja (grundlegend, pro Seite) Ja (logische / visuelle Reihenfolge)
Seite Info Ja Ja
Aus HTML erstellen None Ja
Von URL erstellen None Ja
PDFs zusammenführen Kostenlose Wrapper: nein; Patagames: teilweise Ja
PDFs teilen Kostenlose Wrapper: nein; Patagames: teilweise Ja
Wasserzeichen hinzufügen Nicht eingebaut Ja
Kopf-/Fußzeilen Nicht eingebaut Ja
Formular ausfüllen Kostenlose Wrapper: nein; Patagames: ja Ja
Digitale Signaturen Kostenlose Wrapper: nein; Patagames: ja Ja
Passwortschutz Kostenlose Wrapper: nein; Patagames: ja Ja
Native Abhängigkeiten Erforderlich Gebündelt / NuGet-verwaltet
Plattformübergreifend Komplex (native Binärdateien pro RID) Automatisch
Speicherverwaltung Handbuch Entsorgung Vereinfacht

Migrations-Checkliste

Vor der Migration

  • Identifizieren Sie, welcher PDFium-Wrapper verwendet wird (PdfiumViewer / PdfiumViewer.Updated / PDFiumCore / Pdfium.Net.SDK)
  • Dokumentieren Sie aktuelle Renderabmessungen / DPI / Skalierungen, die verwendet werden
  • Listen Sie native Binärdateispeicherorte im Projekt auf (pro RID)
  • Prüfen Sie auf plattformspezifischen Ladecode
  • Bedarf an PDF-Erstellung ermitteln (werden derzeit separate Tools verwendet?)
  • Entsorgungsmuster im Hinblick auf die Umwandlung prüfen -IronPDF-Lizenzschlüssel erhalten

Paketänderungen

  • Entfernen Sie das PDFium-Wrapper-NuGet-Paket(e): PdfiumViewer, PdfiumViewer.Updated, PDFiumCore, oder Pdfium.Net.SDK
  • Löschen Sie die nativen pdfium.dll / .so / .dylib Binärdateien aus den x86/, x64/, runtimes/ Ordnern
  • Plattformspezifische bedingte Kompilierung entfernen
  • Aktualisieren Sie die .csproj-Datei, um native Binärreferenzen zu entfernen.
  • Installieren Sie das IronPdf NuGet-Paket: dotnet add package IronPdf

Code-Änderungen

  • Lizenzschlüsselkonfiguration beim Start hinzufügen
  • Ersetzen Sie PdfDocument.Load() durch PdfDocument.FromFile()
  • Ersetzen Sie document.Save() durch pdf.SaveAs()
  • Ersetzen Sie document.GetPdfText(i) Schleifen durch pdf.ExtractAllText()
  • Skalierungsfaktoren in DPI-Werte umrechnen (DPI = 72 × Skalierung)
  • Vereinfachung der Entsorgungsmuster (Entfernen verschachtelter using-Anweisungen)
  • Plattformspezifischen Code entfernen

Nach der Migration

  • Test der Ausgabequalität des Renderings
  • Vergleichen Sie die Ergebnisse der Textextraktion
  • Test der plattformübergreifenden Bereitstellung
  • Neue Funktionen hinzufügen (HTML zu PDF, Zusammenführen, Wasserzeichen, Sicherheit)
  • Dokumentation aktualisieren

Hinweis:PDFium ist ein Projekt von Google LLC, veröffentlicht unter BSD-3-Klausel. PdfiumViewer, PDFiumCore und Pdfium.Net.SDK sind Marken ihrer jeweiligen Besitzer (pvginkel, Dtronix und Patagames Software Ltd, jeweils). Diese Website ist nicht mit Google, dem Chromium-Projekt oder einem der Wrapper-Autoren assoziiert, 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