Zum Fußzeileninhalt springen
VIDEOS

Wie man Text in PDFs mit C# dreht

Warum von MuPDFzu IronPDF migrieren

Die MuPDF-Herausforderungen

MuPDF ist ein fähiges PDF-Toolkit, aber seine duale AGPL-/kommerzielle Lizenz (von Artifex) und das render-zuerst-Design schaffen echte Reibung for .NET-Entwickler, die kommerzielle, HTML-gesteuerte Anwendungen bauen. Zwei Haupt-.NET-Wrapper existieren: MuPDFCore (Community, von arklumpus, AGPL-3.0) und MuPDF.NET (Artifex' offizielle C#-Bindings, spiegeln PyMuPDF).

  1. AGPL-Lizenzfalle: Sowohl MuPDFals auch die Wrapper werden standardmäßig unter AGPL-3.0 ausgeliefert. Die Verteilung eines Closed-Source-Produkts auf AGPL-Code erfordert entweder eine Open-Sourcing unter AGPL oder den Kauf einer kommerziellen Lizenz von Artifex (die Preisgestaltung basiert auf Angeboten, nicht veröffentlicht).

  2. Rendering-Zuerst-Fokus: Während MuPDF.NET kann zusammenführen, schwärzen, signieren und Wasserzeichen einfügen (spiegelt PyMuPDF), ist der Großteil der API und der Tools auf das Betrachten und Strukturierter Text Extraktion zugeschnitten, statt auf HTML-getriebene Dokumentenerstellung.

  3. Kein HTML-zu-PDF-Engine: Weder MuPDF.NET noch MuPDFCore liefern eine HTML/CSS-Engine. Das Erzeugen von PDFs aus HTML erfordert das Auslagern an eine separate Browser-Engine (Chromium, wkhtmltopdf, PrinceXML) und nur das Ergebnis mit MuPDFladen.

  4. Natives Abhängigkeiten: Beide Wrapper liefern MuPDFCore.NativeAssets / MuPDF.NativeAssets Pakete mit binären Dateien pro RID (win-x64, linux-x64, osx-x64). Die plattformübergreifende Bereitstellung funktioniert, aber Docker-Images benötigen das passende native Paket und Basis-Image (glibc vs. musl).

  5. Kein HTML-Wasserzeichen / Kopf- / Fußzeilen: Das Stempeln basiert auf Bild und Text pro Seite; es gibt keine {page}/{total-pages} Vorlagen-Engine, so wie es Chromium-basierte Renderer anbieten.

  6. C-Interop-Oberfläche: Wrapper stellen Kontext/Dokument-Lebensdauern offen, die auf die zugrunde liegende C-Bibliothek abgebildet werden — die Anordnung der Entsorgung ist wichtig, native Abstürze können den gesamten Prozess lahmlegen und das Marshalling ist kostspielig für große Dokumente.

MuPDFvs IronPDF Vergleich

Feature MuPDF IronPDF
Lizenz AGPL-3.0 oder angebotsbasierte kommerzielle (Artifex) Kommerziell mit veröffentlichter Preisgestaltung
Primäres Ziel Rendering, strukturierter Text, Low-Level-Toolkit HTML-gesteuerte Erzeugung + Bearbeitung
HTML zu PDF Nicht unterstützt (keine HTML-Engine) Vollständige Chromium-Engine
PDF-Erstellung Nur auf Seitenebene (Text/Bilder/Vektoren einfügen) HTML, URL, Bilder
PDF-Bearbeitung Unterstützt in MuPDF.NET (InsertPdf, Select, DeletePage) Unterstützt (Merge, CopyPages, RemovePages)
Abhängigkeiten Native MuPDF+ RID NativeAssets Verwalteter Wrapper + gebündeltes Chromium
Plattform-Unterstützung Win/Linux/macOS via NativeAssets Win/Linux/macOS/Docker
Async-Unterstützung Meist synchron; einige async in MuPDFCore Async-APIs über Renderer und Dokument
.NET-Integration P/Invoke-Wrapper um die C-Bibliothek .NET wrapper + native Chromium

IronPDF läuft als verwaltete .NET-Bibliothek über moderne .NET-Versionen hinweg ohne die Komplexität der nativen Interoperabilität.


Migrationskomplexitätsbewertung

Geschätzter Aufwand nach Merkmalen

Feature Komplexität der Migration
Dokument laden Sehr niedrig
Textextraktion Sehr niedrig
PDF-Zusammenführung Niedrig
Bild-Rendering Niedrig
HTML zu PDF N/A (Neue Fähigkeit)
Sicherheit/Wassermarken N/A (Neue Fähigkeit)

Paradigmen-Verschiebung

Der grundlegende Shift bei dieser MuPDF-Migration besteht in der Umstellung von einem reinen Rendering-Viewer hin zu einer vollständigen PDF-Lösung:

MuPDF.NET:  Document → doc[i] → GetText / GetPixmap / InsertPdf
MuPDFCore:  MuPDFContext → MuPDFDocument → Pages[i] → Render / SaveImage
IronPDF:    PdfDocument.FromFile() → Vollständige Bearbeitung → Erstellen/Editieren/Verknüpfen/Sichern

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 MuPDFpackages (whichever wrapper you used)
dotnet remove package MuPDF.NET
dotnet remove package MuPDFCore
dotnet remove package MuPDFCore.NativeAssets.Linux
dotnet remove package MuPDFCore.NativeAssets.MacOS
dotnet remove package MuPDFCore.NativeAssets.Windows
dotnet remove package MuPDF.NativeAssets

# Install IronPDF
dotnet add package IronPdf
# Remove MuPDFpackages (whichever wrapper you used)
dotnet remove package MuPDF.NET
dotnet remove package MuPDFCore
dotnet remove package MuPDFCore.NativeAssets.Linux
dotnet remove package MuPDFCore.NativeAssets.MacOS
dotnet remove package MuPDFCore.NativeAssets.Windows
dotnet remove package MuPDF.NativeAssets

# Install IronPDF
dotnet add package IronPdf
SHELL

Entferne auch die nativen MuPDF-Binärdateien aus deinem Einsatz:

  • Löschen mupdf.dll, libmupdf.so, libmupdf.dylib
  • Plattform-spezifische Ordner entfernen (runtimes/*/native/)
  • Docker-Dateien aktualisieren, um die MuPDF-Installation zu entfernen

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

MuPDF-Verwendung identifizieren

# Find all MuPDFreferences
grep -r "MuPDF\|MuPDFCore\|MuPDFDocument" --include="*.cs" .
# Find all MuPDFreferences
grep -r "MuPDF\|MuPDFCore\|MuPDFDocument" --include="*.cs" .
SHELL

Komplette API-Referenz

Dokument laden

MuPDF IronPDF
new Document(path) (MuPDF.NET) / new MuPDFDocument(ctx, path) (MuPDFCore) PdfDocument.FromFile(path)
new Document("pdf", stream) (MuPDF.NET) PdfDocument.FromStream(stream)
doc.Close() / Dispose() pdf.Dispose()

Seitenzugang

MuPDF IronPDF
doc.PageCount (MuPDF.NET) / document.Pages.Count (MuPDFCore) pdf.PageCount
doc[index] (MuPDF.NET) / document.Pages[index] (MuPDFCore) pdf.Pages[index]
doc[i].GetText() / strukturierter Text-Iteration (MuPDFCore) page.Text

Textextraktion

MuPDF IronPDF
Schleife über doc[i].GetText() pdf.ExtractAllText()

PDF-Erstellung (nicht in MuPDFverfügbar)

MuPDF IronPDF
(keine HTML-Engine) ChromePdfRenderer.RenderHtmlAsPdf(html)
(keine HTML-Engine) ChromePdfRenderer.RenderUrlAsPdf(url)

PDF-Manipulation

MuPDF IronPDF
docA.InsertPdf(docB) (MuPDF.NET) PdfDocument.Merge(pdf1, pdf2)
page.InsertImage(...) pro Seite (nur Bild/Text-Stempel) pdf.ApplyWatermark(html)
doc.Save(path, encryption: ..., ownerPw: ..., userPw: ...) pdf.SecuritySettings

Beispiele für die Code-Migration

Beispiel 1: Konvertierung von HTML in PDF (MuPDF kann das nicht)

Vor (MuPDF):

// NuGet: Install-Package MuPDF.NET
using MuPDFCore;
using System.IO;

class Program
{
    static void Main()
    {
        // MuPDFdoesn't support HTML zu PDFconversion directly
        // You would need to use another library to convert HTML to a supported format first
        // This is a limitation - MuPDFis primarily a PDF renderer/viewer

        // Alternative: Use a browser engine or intermediate conversion
        string html = "<html><body><h1>Hello World</h1></body></html>";

        // Not natively supported in MuPDF
        throw new NotSupportedException("MuPDF does not support direct HTML zu PDFconversion");
    }
}
// NuGet: Install-Package MuPDF.NET
using MuPDFCore;
using System.IO;

class Program
{
    static void Main()
    {
        // MuPDFdoesn't support HTML zu PDFconversion directly
        // You would need to use another library to convert HTML to a supported format first
        // This is a limitation - MuPDFis primarily a PDF renderer/viewer

        // Alternative: Use a browser engine or intermediate conversion
        string html = "<html><body><h1>Hello World</h1></body></html>";

        // Not natively supported in MuPDF
        throw new NotSupportedException("MuPDF does not support direct HTML zu PDFconversion");
    }
}
Imports MuPDFCore
Imports System.IO

Class Program
    Shared Sub Main()
        ' MuPDF doesn't support HTML to PDF conversion directly
        ' You would need to use another library to convert HTML to a supported format first
        ' This is a limitation - MuPDF is primarily a PDF renderer/viewer

        ' Alternative: Use a browser engine or intermediate conversion
        Dim html As String = "<html><body><h1>Hello World</h1></body></html>"

        ' Not natively supported in MuPDF
        Throw New NotSupportedException("MuPDF does not support direct HTML to PDF conversion")
    End Sub
End Class
$vbLabelText   $csharpLabel

Nach (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<html><body><h1>Hello World</h1></body></html>";

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<html><body><h1>Hello World</h1></body></html>";

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

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim html As String = "<html><body><h1>Hello World</h1></body></html>"

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

Dieses Beispiel verdeutlicht die größte Einschränkung von MuPDF: Es kann HTML überhaupt nicht in PDF umwandeln. Der MuPDF-Code wirft explizit NotSupportedException, da HTML-zu-PDF-Konvertierung einfach keine Fähigkeit ist, die MuPDFbietet. Wenn man diese Funktionalität mit MuPDFbenötigte, musste man eine separate Bibliothek wie wkhtmltopdf oder eine Browser-Engine verwenden und dann das resultierende PDF mit MuPDFzur Ansicht laden.

IronPDF's ChromePdfRenderer verwendet eine vollständige Chromium-Engine, um HTML mit vollständiger Unterstützung für CSS3, JavaScript und moderne Webstandards zu rendern. Die RenderHtmlAsPdf() Methode akzeptiert HTML-Strings direkt. In der HTML to PDF-Dokumentation finden Sie zusätzliche Rendering-Optionen wie URL-Rendering und HTML-Dateikonvertierung.

Beispiel 2: Textextraktion

Vor (MuPDF):

// NuGet: Install-Package MuPDF.NET
using MuPDF.NET;
using System;
using System.Text;

class Program
{
    static void Main()
    {
        Document doc = new Document("input.pdf");

        StringBuilder allText = new StringBuilder();

        for (int i = 0; i < doc.PageCount; i++)
        {
            string pageText = doc[i].GetText();
            allText.AppendLine(pageText);
        }

        Console.WriteLine(allText.ToString());
    }
}
// NuGet: Install-Package MuPDF.NET
using MuPDF.NET;
using System;
using System.Text;

class Program
{
    static void Main()
    {
        Document doc = new Document("input.pdf");

        StringBuilder allText = new StringBuilder();

        for (int i = 0; i < doc.PageCount; i++)
        {
            string pageText = doc[i].GetText();
            allText.AppendLine(pageText);
        }

        Console.WriteLine(allText.ToString());
    }
}
Imports MuPDF.NET
Imports System
Imports System.Text

Module Program
    Sub Main()
        Dim doc As New Document("input.pdf")

        Dim allText As New StringBuilder()

        For i As Integer = 0 To doc.PageCount - 1
            Dim pageText As String = doc(i).GetText()
            allText.AppendLine(pageText)
        Next

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

Nach (IronPDF):

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

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");
        string text = pdf.ExtractAllText();

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

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");
        string text = pdf.ExtractAllText();

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

Class Program
    Shared Sub Main()
        Dim pdf = PdfDocument.FromFile("input.pdf")
        Dim text As String = pdf.ExtractAllText()

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

Der MuPDF.NET-Ansatz öffnet eine Document, iteriert doc.PageCount mit einer for-Schleife, ruft doc[i].GetText() für jede Seite auf und baut den Text mit einer StringBuilder auf.

IronPDF reduziert dies auf drei Zeilen: Laden Sie das Dokument mit PdfDocument.FromFile(), rufen Sie ExtractAllText() auf, und drucken Sie das Ergebnis. Keine manuelle Iteration, kein StringBuilder. Erfahren Sie mehr über die Textextraktion aus PDFs .

Beispiel 3: Zusammenführen mehrerer PDFs

Vor (MuPDF):

// NuGet: Install-Package MuPDF.NET
using MuPDF.NET;

class Program
{
    static void Main()
    {
        Document doc1 = new Document("file1.pdf");
        Document doc2 = new Document("file2.pdf");

        // Append every page of doc2 to the end of doc1.
        doc1.InsertPdf(doc2);

        doc1.Save("merged.pdf");
    }
}
// NuGet: Install-Package MuPDF.NET
using MuPDF.NET;

class Program
{
    static void Main()
    {
        Document doc1 = new Document("file1.pdf");
        Document doc2 = new Document("file2.pdf");

        // Append every page of doc2 to the end of doc1.
        doc1.InsertPdf(doc2);

        doc1.Save("merged.pdf");
    }
}
Imports MuPDF.NET

Class Program
    Shared Sub Main()
        Dim doc1 As New Document("file1.pdf")
        Dim doc2 As New Document("file2.pdf")

        ' Append every page of doc2 to the end of doc1.
        doc1.InsertPdf(doc2)

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

Nach (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("file1.pdf");
        var pdf2 = PdfDocument.FromFile("file2.pdf");

        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("file1.pdf");
        var pdf2 = PdfDocument.FromFile("file2.pdf");

        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}
Imports IronPdf

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

        Dim merged = PdfDocument.Merge(pdf1, pdf2)
        merged.SaveAs("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

MuPDF.NET unterstützt das Zusammenführen über Document.InsertPdf, welches das insert_pdf() von PyMuPDF widerspiegelt und jede Seite eines Dokuments an ein anderes Dokument anhängt. MuPDFCore bietet keine gleichwertige hochrangige Zusammenführungs-API.

Die statische PdfDocument.Merge() Methode von IronPDF akzeptiert mehrere PDF-Dokumente und gibt ein einzelnes, zusammengeführtes Dokument zurück, wobei die Eingaben unberührt bleiben. Zum Zusammenführen vieler Dokumente übergeben Sie eine Liste: PdfDocument.Merge(pdfList). Weitere Optionen finden Sie in der Dokumentation zum Zusammenführen und Teilen von PDFs.


Kritische Hinweise zur Migration

Entfernen nativer Binärdateien

MuPDF erfordert plattformspezifische native Bibliotheken. Nach der Migration zu IronPDF müssen alle nativen MuPDF-Binärdateien entfernt werden:

# Delete native libraries
rm -f mupdf*.dll libmupdf*.so libmupdf*.dylib

# Remove runtime folders
rm -rf runtimes/*/native/

# Update Docker files to remove MuPDFinstallation
# Delete native libraries
rm -f mupdf*.dll libmupdf*.so libmupdf*.dylib

# Remove runtime folders
rm -rf runtimes/*/native/

# Update Docker files to remove MuPDFinstallation
SHELL

IronPDF ist vollständig verwalteter .NET-Code - es müssen keine nativen Binärdateien für verschiedene Plattformen verwaltet werden.

Dispose-Muster vereinfacht

MuPDFCore erfordert eine explizite MuPDFContext; MuPDF.NET versteckt es, benötigt aber dennoch Close() / Dispose():

// MuPDFCore: explicit context required
using (var context = new MuPDFContext())
using (var document = new MuPDFDocument(context, "input.pdf"))
{
    // Work with document
}

// MuPDF.NET: implicit context, manual close
Document doc = new Document("input.pdf");
try { /* work */ } finally { doc.Close(); }

// IronPDF: simpler pattern
var pdf = PdfDocument.FromFile("input.pdf");
// Work with pdf
// MuPDFCore: explicit context required
using (var context = new MuPDFContext())
using (var document = new MuPDFDocument(context, "input.pdf"))
{
    // Work with document
}

// MuPDF.NET: implicit context, manual close
Document doc = new Document("input.pdf");
try { /* work */ } finally { doc.Close(); }

// IronPDF: simpler pattern
var pdf = PdfDocument.FromFile("input.pdf");
// Work with pdf
Imports MuPDFCore
Imports MuPDF.NET
Imports IronPDF

' MuPDFCore: explicit context required
Using context As New MuPDFContext()
    Using document As New MuPDFDocument(context, "input.pdf")
        ' Work with document
    End Using
End Using

' MuPDF.NET: implicit context, manual close
Dim doc As New Document("input.pdf")
Try
    ' work
Finally
    doc.Close()
End Try

' IronPDF: simpler pattern
Dim pdf = PdfDocument.FromFile("input.pdf")
' Work with pdf
$vbLabelText   $csharpLabel

Seite Iterationsmuster ändern

MuPDF verwendet eine indexbasierte Iteration mit expliziter Seitenzählung:

// MuPDF.NET
for (int i = 0; i < doc.PageCount; i++)
{
    var pageText = doc[i].GetText();
}

// MuPDFCore
for (int i = 0; i < document.Pages.Count; i++)
{
    var pageText = document.Pages[i].GetText();
}

//IronPDF(foreach supported)
foreach (var page in pdf.Pages)
{
    var pageText = page.Text;
}
// MuPDF.NET
for (int i = 0; i < doc.PageCount; i++)
{
    var pageText = doc[i].GetText();
}

// MuPDFCore
for (int i = 0; i < document.Pages.Count; i++)
{
    var pageText = document.Pages[i].GetText();
}

//IronPDF(foreach supported)
foreach (var page in pdf.Pages)
{
    var pageText = page.Text;
}
Imports MuPDF.NET
Imports MuPDFCore
Imports IronPDF

' MuPDF.NET
For i As Integer = 0 To doc.PageCount - 1
    Dim pageText = doc(i).GetText()
Next

' MuPDFCore
For i As Integer = 0 To document.Pages.Count - 1
    Dim pageText = document.Pages(i).GetText()
Next

' IronPDF (foreach supported)
For Each page In pdf.Pages
    Dim pageText = page.Text
Next
$vbLabelText   $csharpLabel

Neue Funktionen verfügbar

Nach der Umstellung auf IronPDF erhalten Sie Funktionen, die MuPDFnicht bieten kann:

// PDF-Erstellungfrom HTML (not possible in MuPDF)
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>");

// Watermarks (not possible in MuPDF)
pdf.ApplyWatermark("<div style='color:red;opacity:0.3;'>DRAFT</div>");

// Password Protection (not possible in MuPDF)
pdf.SecuritySettings.OwnerPassword = "admin";
pdf.SecuritySettings.UserPassword = "user";

// Headers and Footers (no HTML header/footer template in MuPDF)
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center;'>Document Title</div>",
    MaxHeight = 25
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>",
    MaxHeight = 25
};
// PDF-Erstellungfrom HTML (not possible in MuPDF)
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>");

// Watermarks (not possible in MuPDF)
pdf.ApplyWatermark("<div style='color:red;opacity:0.3;'>DRAFT</div>");

// Password Protection (not possible in MuPDF)
pdf.SecuritySettings.OwnerPassword = "admin";
pdf.SecuritySettings.UserPassword = "user";

// Headers and Footers (no HTML header/footer template in MuPDF)
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center;'>Document Title</div>",
    MaxHeight = 25
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>",
    MaxHeight = 25
};
' PDF-Erstellungfrom HTML (not possible in MuPDF)
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>")

' Watermarks (not possible in MuPDF)
pdf.ApplyWatermark("<div style='color:red;opacity:0.3;'>DRAFT</div>")

' Password Protection (not possible in MuPDF)
pdf.SecuritySettings.OwnerPassword = "admin"
pdf.SecuritySettings.UserPassword = "user"

' Headers and Footers (no HTML header/footer template in MuPDF)
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align:center;'>Document Title</div>",
    .MaxHeight = 25
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>",
    .MaxHeight = 25
}
$vbLabelText   $csharpLabel

Fehlerbehebung

Ausgabe 1: MuPDFDocument nicht gefunden

Problem: MuPDFDocument Klasse existiert nicht in IronPDF.

Lösung: Verwenden Sie PdfDocument.FromFile():

// MuPDF
using (MuPDFDocument document = new MuPDFDocument("input.pdf"))

// IronPDF
var pdf = PdfDocument.FromFile("input.pdf");
// MuPDF
using (MuPDFDocument document = new MuPDFDocument("input.pdf"))

// IronPDF
var pdf = PdfDocument.FromFile("input.pdf");
Imports MuPDF
Imports IronPDF

Using document As New MuPDFDocument("input.pdf")
End Using

Dim pdf = PdfDocument.FromFile("input.pdf")
$vbLabelText   $csharpLabel

Ausgabe 2: Pages.Count Not Found

Problem: document.Pages.Count Muster funktioniert nicht.

Lösung: Verwenden Sie pdf.PageCount:

// MuPDF
for (int i = 0; i < document.Pages.Count; i++)

// IronPDF
for (int i = 0; i < pdf.PageCount; i++)
// Or use: foreach (var page in pdf.Pages)
// MuPDF
for (int i = 0; i < document.Pages.Count; i++)

// IronPDF
for (int i = 0; i < pdf.PageCount; i++)
// Or use: foreach (var page in pdf.Pages)
' MuPDF
For i As Integer = 0 To document.Pages.Count - 1

' IronPDF
For i As Integer = 0 To pdf.PageCount - 1
' Or use: For Each page In pdf.Pages
$vbLabelText   $csharpLabel

Ausgabe 3: GetText() nicht gefunden

Problem: page.GetText() Methode existiert nicht.

Lösung: Verwenden Sie die page.Text Eigenschaft oder pdf.ExtractAllText():

// MuPDF
string pageText = document.Pages[i].GetText();

// IronPDF
string pageText = pdf.Pages[i].Text;
// Or for all text:
string allText = pdf.ExtractAllText();
// MuPDF
string pageText = document.Pages[i].GetText();

// IronPDF
string pageText = pdf.Pages[i].Text;
// Or for all text:
string allText = pdf.ExtractAllText();
' MuPDF
Dim pageText As String = document.Pages(i).GetText()

' IronPDF
Dim pageText As String = pdf.Pages(i).Text
' Or for all text:
Dim allText As String = pdf.ExtractAllText()
$vbLabelText   $csharpLabel

Problem 4: InsertPdf nicht gefunden

Problem: MuPDF.NET's Document.InsertPdf (entspricht PyMuPDF's insert_pdf) hat keinen direkten Äquivalentnamen in IronPDF, und MuPDFCore bietet überhaupt kein hochrangiges Zusammenführen an.

Lösung: Verwenden Sie statisch PdfDocument.Merge():

// MuPDF.NET
docA.InsertPdf(docB);

// IronPDF
var merged = PdfDocument.Merge(pdf1, pdf2);
// MuPDF.NET
docA.InsertPdf(docB);

// IronPDF
var merged = PdfDocument.Merge(pdf1, pdf2);
$vbLabelText   $csharpLabel

Migrations-Checkliste

Vor der Migration

  • Inventarisieren Sie alle MuPDF-Verwendungen in der Codebasis
  • Alle Rendering-Operationen dokumentieren (DPI, Skalierungsfaktoren)
  • Ermitteln Sie den Bedarf an PDF-Erstellung (derzeit werden externe Tools verwendet)
  • Anforderungen an die Listentextextraktion
  • Überprüfung der Bereitstellungsskripte hinsichtlich der nativen Binärverarbeitung -IronPDF-Lizenzschlüssel erhalten

Paketänderungen

  • Entfernen MuPDF.NET Paket
  • Entfernen MuPDFCore Paket
  • Entfernen MuPDFCore.NativeAssets.* / MuPDF.NativeAssets Pakete
  • Installieren IronPdf NuGet-Paket: dotnet add package IronPdf
  • Namespace-Importe aktualisieren

Code-Änderungen

  • Lizenzschlüsselkonfiguration beim Start hinzufügen
  • Ersetzen Document (MuPDF.NET) / MuPDFDocument (MuPDFCore) mit PdfDocument.FromFile()
  • Ersetzen doc.PageCount / document.Pages.Count mit pdf.PageCount
  • Ersetzen doc[i].GetText() mit page.Text oder pdf.ExtractAllText()
  • Ersetzen Document.InsertPdf Aufrufe mit PdfDocument.Merge()
  • Entfernen Sie das explizite Kontext/Entsorgungs-Übergepäck
  • Fügen Sie bei Bedarf Code zur PDF-Erstellung hinzu (HTML zu PDF)

Nach der Migration

  • Native MuPDF-Binärdateien aus dem Projekt entfernen
  • Docker-Dateien aktualisieren, um die MuPDF-Installation zu entfernen
  • Plattformspezifische Laufzeitordner entfernen
  • Führe Regressionstests durch, um die gerenderte Ausgabe zu vergleichen
  • Test auf allen Zielplattformen (Windows, Linux, macOS)
  • Erwägen Sie die Hinzufügung neuer Funktionen (Wasserzeichen, Sicherheit, Kopf-/Fußzeilen)

Hinweis:MuPDF, MuPDF.NET und wkhtmltopdf sind eingetragene Marken ihrer jeweiligen Eigentümer. Diese Website ist nicht mit Artifex Software oder wkhtmltopdf verbunden, wird nicht von ihnen unterstützt 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