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:
-
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.
-
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.
-
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.
-
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.
-
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.
- 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
- Środowisko .NET: .NET Framework 4.6.2+ lub .NET Core 3.1+ / .NET 5/6/7/8/9+
- Dostęp do NuGet: Możliwość instalowania pakietów NuGet
- 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
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"
Zidentyfikuj zastosowanie MuPDF
# Find allMuPDFreferences
grep -r "MuPDF\|MuPDFCore\|MuPDFDocument" --include="*.cs" .
# Find allMuPDFreferences
grep -r "MuPDF\|MuPDFCore\|MuPDFDocument" --include="*.cs" .
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
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
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
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
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
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
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
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
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
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}")
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")
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
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()
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)
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
MuPDFDocumentprzezPdfDocument.FromFile() - Zastąp
document.Pages.Countprzezpdf.PageCount - Zastąp
page.GetText()przezpage.Textlubpdf.ExtractAllText() - Zastąp ręczne pętle
CopyPageprzezPdfDocument.Merge() - Usuń zagnieżdżone bloki
usingsł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)

