Przejdź do treści stopki
PRZEWODNIKI MIGRACJI

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

Dlaczego warto przejść zMuPDFna IronPDF

Wyzwania związane z MuPDF

MuPDF to doskonały renderer plików PDF, ale jego licencja AGPL oraz skupienie wyłącznie na renderowaniu stwarzają znaczne ograniczenia dla programistów .NET tworzących aplikacje komercyjne:

  1. Pułapka licencji AGPL: Wirusowa licencjaMuPDFwymaga albo udostępnienia całej aplikacji na licencji AGPL, albo zakupu drogich licencji komercyjnych, których ceny są nieprzejrzyste i ustalane indywidualnie przez dział sprzedaży.

  2. Skupienie wyłącznie na renderowaniu:MuPDFjest przeglądarką/rendererem — nie jest przeznaczony do tworzenia plików PDF z HTML, generowania dokumentów, wypełniania formularzy ani dodawania znaków wodnych i nagłówków/stopek.

  3. Brak obsługi HTML:MuPDFnie obsługuje bezpośredniej konwersji HTML do PDF. Najpierw musiałbyś użyć innej biblioteki, aby przekonwertować HTML na obsługiwany format. Jest to podstawowe ograniczenie —MuPDFto przede wszystkim renderer/przeglądarka plików PDF.

  4. Zależności natywne: Pliki binarne specyficzne dla platformy wymagają ręcznego zarządzania w systemach Windows, Linux i macOS. Wdrożenia Docker stają się złożone ze względu na wymagania bibliotek natywnych, a pakowanie wdrożeń stwarza wyzwania.

  5. Ograniczone możliwości edycji: Brak wbudowanej obsługi łączenia/dzielenia plików PDF, obracania lub zmiany kolejności stron, znaków wodnych lub adnotacji, ani podpisów cyfrowych.

  6. Złożoność współdziałania z językiem C: Natywne powiązania powodują problemy z zarządzaniem pamięcią, błędy specyficzne dla platformy oraz obciążenie związane z marshallingiem.

PorównanieMuPDFi IronPDF

Funkcja MuPDF IronPDF
Licencja AGPL (wirusowa) lub kosztowna licencja komercyjna Reklama z przejrzystymi cenami
Główny cel Renderowanie/wyświetlanie Kompletne rozwiązanie PDF
HTML do PDF Nieobsługiwane Pełny silnik Chromium
Tworzenie plików PDF Nieobsługiwane HTML, adresy URL, obrazy
Manipulacja plikami PDF Ograniczone Ukończ (połącz, podziel, edytuj)
Zależności Natywne pliki binarne W pełni zarządzane
Obsługa platform Podręcznik dla poszczególnych platform Automatyczne
Obsługa asynchroniczna Ograniczone Pełna obsługa async/await
Integracja z platformą .NET Współpraca z językiem C Natywny .NET

Dla zespołów planujących wdrożenie .NET 10 i C# 14 w latach 2025 i 2026,IronPDFzapewnia przyszłościową podstawę jako w pełni zarządzana biblioteka .NET bez złożoności związanej z natywną interoperacyjnością.


Ocena złożoności migracji

Szacowany nakład pracy według funkcji

Funkcja Złożoność migracji
Ładowanie dokumentu Bardzo niski
Ekstrakcja tekstu Bardzo niski
Łączenie plików PDF Low
Renderowanie obrazów Low
HTML do PDF N/A (Nowa funkcja)
Bezpieczeństwo/Znaki wodne N/A (Nowa funkcja)

Zmiana paradygmatu

Podstawową zmianą w migracjiMuPDFjest przejście od przeglądarki służącej wyłącznie do renderowania do kompletnego rozwiązania PDF:

MuPDF:   MuPDFContext → MuPDFDocument → Iteracja stron → Tylko renderowanie/wyodrębnianie
IronPDF: PdfDocument.FromFile() → Pełna obsługa → Tworzenie/edycja/scalanie/zabezpieczanie

Zanim zaczniesz

Wymagania wstępne

  1. Środowisko .NET: .NET Framework 4.6.2+ lub .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Dostęp do NuGet: Możliwość instalowania pakietów NuGet
  3. Licencja IronPDF: Uzyskaj klucz licencyjny na stronie ironpdf.com

Zmiany w pakiecie NuGet

# RemoveMuPDFpackages
dotnet remove package MuPDF.NET
dotnet remove package MuPDFCore
dotnet remove package MuPDFCore.MuPDFWrapper

# Install IronPDF
dotnet add package IronPdf
# RemoveMuPDFpackages
dotnet remove package MuPDF.NET
dotnet remove package MuPDFCore
dotnet remove package MuPDFCore.MuPDFWrapper

# Install IronPDF
dotnet add package IronPdf
SHELL

Należy również usunąć natywne pliki binarne MuPDF z wdrożenia:

  • Usuń mupdf.dll, libmupdf.so, libmupdf.dylib
  • Usuń foldery specyficzne dla platformy (runtimes/*/native/)
  • Zaktualizuj pliki Docker, aby usunąć instalację MuPDF

Konfiguracja licencji

// 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

Zidentyfikuj zastosowanie MuPDF

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

Kompletna dokumentacija API

Ładowanie dokumentów

MuPDF IronPDF
new MuPDFDocument(path) PdfDocument.FromFile(path)
new MuPDFDocument(stream) PdfDocument.FromStream(stream)
document.Dispose() pdf.Dispose()

Dostęp do strony

MuPDF IronPDF
document.Pages.Count pdf.PageCount
document.Pages[index] pdf.Pages[index]
page.GetText() page.Text

Wyodrębnianie tekstu

MuPDF IronPDF
Przejrzyj document.Pages[i].GetText() pdf.ExtractAllText()

Tworzenie plików PDF (niedostępne w MuPDF)

MuPDF IronPDF
(nieobsługiwane) ChromePdfRenderer.RenderHtmlAsPdf(html)
(nieobsługiwane) ChromePdfRenderer.RenderUrlAsPdf(url)

Manipulacja plikami PDF (ograniczona w MuPDF)

MuPDF IronPDF
Pętle w treści stron podręcznika PdfDocument.Merge(pdf1, pdf2)
(nieobsługiwane) pdf.ApplyWatermark(html)
(nieobsługiwane) pdf.SecuritySettings

Przykłady migracji kodu

Przykład 1: Konwersja HTML do PDF (MuPDF nie potrafi tego zrobić)

Przed (MuPDF):

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

class Program
{
    static void Main()
    {
        //MuPDFdoesn't support HTML do PDF conversion 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 do PDF conversion");
    }
}
// NuGet: Install-Package MuPDF.NET
using MuPDFCore;
using System.IO;

class Program
{
    static void Main()
    {
        //MuPDFdoesn't support HTML do PDF conversion 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 do PDF conversion");
    }
}
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

Po (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

Ten przykład podkreśla najważniejsze ograniczenie MuPDF: nie może on w ogóle konwertować HTML na PDF. KodMuPDFwyraźnie generuje błąd NotSupportedException, ponieważ konwersja HTML do PDF po prostu nie jest funkcją oferowaną przez MuPDF. Jeśli potrzebna była ta funkcjonalność w MuPDF, należało użyć oddzielnej biblioteki, takiej jak wkhtmltopdf lub silnika przeglądarki, a następnie załadować wynikowy plik PDF doMuPDFw celu wyświetlenia.

ChromePdfRenderer firmyIronPDFwykorzystuje pełny silnik Chromium do renderowania HTML z pełną obsługą CSS3, JavaScript i nowoczesnych standardów internetowych. Metoda RenderHtmlAsPdf() akceptuje bezpośrednio ciągi znaków HTML. Zobacz dokumentację HTML do PDF, aby uzyskać informacje o dodatkowych opcjach renderowania, w tym renderowaniu adresów URL i konwersji plików HTML.

Przykład 2: Wyodrębnianie tekstu

Przed (MuPDF):

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

class Program
{
    static void Main()
    {
        using (MuPDFDocument document = new MuPDFDocument("input.pdf"))
        {
            StringBuilder allText = new StringBuilder();

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

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

class Program
{
    static void Main()
    {
        using (MuPDFDocument document = new MuPDFDocument("input.pdf"))
        {
            StringBuilder allText = new StringBuilder();

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

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

Class Program
    Shared Sub Main()
        Using document As New MuPDFDocument("input.pdf")
            Dim allText As New StringBuilder()

            For i As Integer = 0 To document.Pages.Count - 1
                Dim pageText As String = document.Pages(i).GetText()
                allText.AppendLine(pageText)
            Next

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

Po (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

PodejścieMuPDFwymaga utworzenia bloku using z MuPDFDocument, ręcznego przechodzenia przez document.Pages.Count za pomocą pętli for, wywołania document.Pages[i].GetText() dla każdej strony oraz budowanie tekstu za pomocą StringBuilder. To 12 linii kodu służących do prostego wyodrębniania tekstu.

IronPDF sprowadza to do trzech wierszy: załaduj dokument za pomocą PdfDocument.FromFile(), wywołaj ExtractAllText() i wydrukuj wynik. Żadnych ręcznych iteracji, żadnego StringBuildera, żadnego jawnego zarządzania zasobami za pomocą bloków using dla tej prostej operacji. Dowiedz się więcej o wyciąganiu tekstu z plików PDF.

Przykład 3: Łączenie wielu plików PDF

Przed (MuPDF):

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

class Program
{
    static void Main()
    {
        using (MuPDFDocument doc1 = new MuPDFDocument("file1.pdf"))
        using (MuPDFDocument doc2 = new MuPDFDocument("file2.pdf"))
        {
            // Create a new document
            using (MuPDFDocument mergedDoc = MuPDFDocument.Create())
            {
                // Copy pages from first document
                for (int i = 0; i < doc1.Pages.Count; i++)
                {
                    mergedDoc.CopyPage(doc1, i);
                }

                // Copy pages from second document
                for (int i = 0; i < doc2.Pages.Count; i++)
                {
                    mergedDoc.CopyPage(doc2, i);
                }

                mergedDoc.Save("merged.pdf");
            }
        }
    }
}
// NuGet: Install-Package MuPDF.NET
using MuPDFCore;
using System.IO;

class Program
{
    static void Main()
    {
        using (MuPDFDocument doc1 = new MuPDFDocument("file1.pdf"))
        using (MuPDFDocument doc2 = new MuPDFDocument("file2.pdf"))
        {
            // Create a new document
            using (MuPDFDocument mergedDoc = MuPDFDocument.Create())
            {
                // Copy pages from first document
                for (int i = 0; i < doc1.Pages.Count; i++)
                {
                    mergedDoc.CopyPage(doc1, i);
                }

                // Copy pages from second document
                for (int i = 0; i < doc2.Pages.Count; i++)
                {
                    mergedDoc.CopyPage(doc2, i);
                }

                mergedDoc.Save("merged.pdf");
            }
        }
    }
}
Imports MuPDFCore
Imports System.IO

Class Program
    Shared Sub Main()
        Using doc1 As New MuPDFDocument("file1.pdf"),
              doc2 As New MuPDFDocument("file2.pdf")

            ' Create a new document
            Using mergedDoc As MuPDFDocument = MuPDFDocument.Create()
                ' Copy pages from first document
                For i As Integer = 0 To doc1.Pages.Count - 1
                    mergedDoc.CopyPage(doc1, i)
                Next

                ' Copy pages from second document
                For i As Integer = 0 To doc2.Pages.Count - 1
                    mergedDoc.CopyPage(doc2, i)
                Next

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

Po (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

Operacja scalania wMuPDFjest szczególnie rozbudowana. Należy otworzyć oba dokumenty źródłowe w zagnieżdżonych blokach using, utworzyć nowy pusty dokument za pomocą MuPDFDocument.Create(), przejść przez każdą stronę pierwszego dokumentu, wywołując CopyPage(), przejść przez każdą stronę drugiego dokumentu, wywołując CopyPage(), a na koniec zapisać. To ponad 20 wierszy kodu ze złożonym zagnieżdżeniem.

Metoda statyczna PdfDocument.Merge() bibliotekiIronPDFprzyjmuje wiele dokumentów PDF i zwraca jeden scalony dokument. Cała operacja to 4 linijki czytelnego kodu. Aby połączyć wiele dokumentów, można przekazać listę: PdfDocument.Merge(pdfList). Dodatkowe opcje można znaleźć w dokumentacji dotyczącej scalania i dzielenia plików PDF.


Ważne uwagi dotyczące migracji

Usuń pliki binarne

MuPDF wymaga bibliotek natywnych dla danej platformy. Po migracji doIronPDFusuń wszystkie natywne pliki binarne MuPDF:

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

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

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

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

# Update Docker files to removeMuPDFinstallation
SHELL

IronPDF to w pełni zarządzany kod .NET — nie ma potrzeby zarządzania natywnymi plikami binarnymi na różnych platformach.

Uproszczony wzorzec Dispose

MuPDF wymaga wyraźnego kontekstu i zarządzania dokumentami:

// MuPDF: Nested using blocks required
using (MuPDFDocument document = new MuPDFDocument("input.pdf"))
{
    // Work with document
}

// IronPDF: Simpler pattern
var pdf = PdfDocument.FromFile("input.pdf");
// Work with pdf
// MuPDF: Nested using blocks required
using (MuPDFDocument document = new MuPDFDocument("input.pdf"))
{
    // Work with document
}

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

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

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

Zmiana wzorca iteracji strony

MuPDF wykorzystuje iterację opartą na indeksie z jawną liczbą stron:

// MuPDF
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
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
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

Nowe dostępne funkcje

Po migracji doIronPDFzyskujesz możliwości, których nie zapewnia MuPDF:

// Tworzenie plików PDF from 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 (not possible in MuPDF)
pdf.AddTextHeader("Document Title");
pdf.AddTextFooter("Page {page} of {total-pages}");
// Tworzenie plików PDF from 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 (not possible in MuPDF)
pdf.AddTextHeader("Document Title");
pdf.AddTextFooter("Page {page} of {total-pages}");
' Tworzenie plików PDF from 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 (not possible in MuPDF)
pdf.AddTextHeader("Document Title")
pdf.AddTextFooter("Page {page} of {total-pages}")
$vbLabelText   $csharpLabel

Rozwiązywanie problemów

Problem 1: Nie znaleziono MuPDFDocument

Problem: Klasa MuPDFDocument nie istnieje w IronPDF.

Rozwiązanie: Użyj 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

Problem 2: Nie znaleziono Pages.Count

Problem: wzorzec document.Pages.Count nie działa.

Rozwiązanie: Użyj 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

Problem 3: Nie znaleziono funkcji GetText()

Problem: metoda page.GetText() nie istnieje.

Rozwiązanie: Użyj właściwości page.Text lub 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: Nie znaleziono strony CopyPage

Problem: Ręczne kopiowanie stron w celu scalania.

Rozwiązanie: Użyj statycznego PdfDocument.Merge():

// MuPDF
mergedDoc.CopyPage(doc1, i);

// IronPDF
var merged = PdfDocument.Merge(pdf1, pdf2);
// MuPDF
mergedDoc.CopyPage(doc1, i);

// IronPDF
var merged = PdfDocument.Merge(pdf1, pdf2);
' MuPDF
mergedDoc.CopyPage(doc1, i)

' IronPDF
Dim merged = PdfDocument.Merge(pdf1, pdf2)
$vbLabelText   $csharpLabel

Lista kontrolna migracji

Przed migracją

  • Sporządź spis wszystkich miejsc użyciaMuPDFw kodzie źródłowym
  • Dokumentuj wszystkie operacje renderowania (DPI, współczynniki skalowania)
  • Określ wszelkie potrzeby związane z tworzeniem plików PDF (obecnie korzystasz z narzędzi zewnętrznych)
  • Wymagania dotyczące ekstrakcji tekstu z listy
  • Przejrzyj skrypty wdrażania dotyczące obsługi natywnych plików binarnych
  • Uzyskaj klucz licencyjny IronPDF

Zmiany w pakiecie

  • Usuń pakiet MuPDF.NET
  • Usuń pakiet MuPDFCore
  • Usuń pakiet MuPDFCore.MuPDFWrapper
  • Zainstaluj pakiet NuGet IronPdf: dotnet add package IronPdf
  • Zaktualizuj importy przestrzeni nazw

Zmiany w kodzie

  • Dodaj konfigurację klucza licencyjnego podczas uruchamiania
  • Zastąp MuPDFDocument przez PdfDocument.FromFile()
  • Zastąp document.Pages.Count przez pdf.PageCount
  • Zastąp page.GetText() przez page.Text lub pdf.ExtractAllText()
  • Zastąp ręczne pętle CopyPage przez PdfDocument.Merge()
  • Usuń zagnieżdżone bloki using służące do zarządzania kontekstem
  • W razie potrzeby dodaj kod do tworzenia plików PDF (HTML do PDF)

Po migracji

  • Usuń natywne pliki binarneMuPDFz projektu
  • Zaktualizuj pliki Docker, aby usunąć instalację MuPDF
  • Usuń foldery środowiska uruchomieniowego specyficzne dla platformy
  • Przeprowadź testy regresji, porównując wygenerowane wyniki
  • Przetestuj na wszystkich platformach docelowych (Windows, Linux, macOS)
  • Rozważ dodanie nowych funkcji (znaki wodne, zabezpieczenia, nagłówki/stopki)

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie