Comment migrer de MuPDF à IronPDF en C#
Pourquoi migrer de MuPDFà IronPDF
Les défis de MuPDF
MuPDF est un excellent moteur de rendu PDF, mais sa licence AGPL et son orientation uniquement sur le rendu créent des limitations importantes pour les développeurs .NET qui créent des applications commerciales :
-
Piège de la licence AGPL : la licence virale de MuPDFexige soit de rendre l'intégralité de votre application open source sous AGPL, soit d'acheter des licences commerciales coûteuses avec des prix opaques et basés sur le principe du contact commercial.
-
Fonctionnalité axée uniquement sur le rendu : MuPDFest un visualiseur/moteur de rendu ; il n'est pas conçu pour la création de PDF à partir de HTML, les flux de travail de génération de documents, le remplissage de formulaires ou l'ajout de filigranes et d'en-têtes/pieds de page.
-
Absence de prise en charge HTML : MuPDFne prend pas en charge la conversion directe de HTML en PDF. Vous devrez d'abord utiliser une autre bibliothèque pour convertir HTML dans un format pris en charge. Il s'agit d'une limitation fondamentale - MuPDFest avant tout un moteur de rendu/de visualisation de PDF.
-
Dépendances natives : les binaires spécifiques à la plateforme nécessitent une gestion manuelle pour Windows, Linux et macOS. Les déploiements Docker deviennent complexes avec les exigences des bibliothèques natives, et l'emballage des déploiements introduit des défis.
-
Manipulation limitée : aucune prise en charge intégrée pour la fusion/division des PDF, la rotation ou le réarrangement des pages, les filigranes ou les annotations, ou les signatures numériques.
- Complexité de l'interopérabilité C : les liaisons natives introduisent des problèmes de gestion de la mémoire, des bogues spécifiques à la plateforme et une surcharge de sérialisation.
Comparaison MuPDFvs IronPDF
| Fonction | MuPDF | IronPDF |
|---|---|---|
| Licence | AGPL (virale) ou commerciale onéreuse | Commercial avec une tarification transparente |
| Objectif principal | Rendu/visualisation | Solution PDF complète |
| HTML vers PDF | Non pris en charge | Moteur Chromium complet |
| Création de PDF | Non pris en charge | HTML, URL, images |
| Manipulation de PDF | Limité | Compléter (fusionner, diviser, éditer) |
| Dépendances | Binaires natifs | Gestion complète |
| Prise en charge de la plate-forme | Manuel par plateforme | Automatique |
| Prise en charge de l'asynchronisme | Limité | Async/await complet |
| Intégration .NET | C interop | Natif .NET |
Pour les équipes qui prévoient l'adoption de .NET 10 et C# 14 jusqu'en 2025 et 2026,IronPDFconstitue une base à l'épreuve du temps en tant que bibliothèque .NET entièrement gérée sans complexité d'interopérabilité native.
Évaluation de la complexité de la migration
Estimation de l'effort par fonctionnalité
| Fonction | Complexité de la migration |
|---|---|
| Chargement du document | Très faible |
| Extraction de texte | Très faible |
| Fusion de PDF | Faible |
| Rendu d'image | Faible |
| HTML vers PDF | N/A (Nouvelle capacité) |
| Sécurité/marques de fabrique | N/A (Nouvelle capacité) |
Changement de paradigme
Le Shift fondamental de cette migration MuPDFréside dans le passage d'une visionneuse de rendu uniquement à une solution PDF complète :
MuPDF : MuPDFContext → MuPDFDocument → Page iteration → Render/Extract only
IronPDF : PdfDocument.FromFile() → Manipulation complète → Créer/Modifier/Fusionner/Sécuriser
Avant de commencer
Prérequis
- Environnement .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
- Accès à NuGet : possibilité d'installer des packages NuGet
- Licence IronPDF : Obtenez votre clé de licence sur IronPDF
Modifications du paquet NuGet
# Remove MuPDFpackages
dotnet remove package MuPDF.NET
dotnet remove package MuPDFCore
dotnet remove package MuPDFCore.MuPDFWrapper
# Install IronPDF
dotnet add package IronPdf
# Remove MuPDFpackages
dotnet remove package MuPDF.NET
dotnet remove package MuPDFCore
dotnet remove package MuPDFCore.MuPDFWrapper
# Install IronPDF
dotnet add package IronPdf
Supprimez également les binaires MuPDF natifs de votre déploiement :
- Supprimer
mupdf.dll,libmupdf.so,libmupdf.dylib - Supprimer les dossiers spécifiques à la plateforme (
runtimes/*/native/) - Mise à jour des fichiers Docker pour supprimer l'installation de MuPDF
Configuration de la licence
// 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"
Identifier l'utilisation de MuPDF
# Find all MuPDFreferences
grep -r "MuPDF\|MuPDFCore\|MuPDFDocument" --include="*.cs" .
# Find all MuPDFreferences
grep -r "MuPDF\|MuPDFCore\|MuPDFDocument" --include="*.cs" .
Référence API complète
Chargement du document
| MuPDF | IronPDF |
|---|---|
new MuPDFDocument(path) |
PdfDocument.FromFile(path) |
new MuPDFDocument(stream) |
PdfDocument.FromStream(stream) |
document.Dispose() |
pdf.Dispose() |
Accès à la page
| MuPDF | IronPDF |
|---|---|
document.Pages.Count |
pdf.PageCount |
document.Pages[index] |
pdf.Pages[index] |
page.GetText() |
page.Text |
Extraction de texte
| MuPDF | IronPDF |
|---|---|
Bouclez sur document.Pages[i].GetText() |
pdf.ExtractAllText() |
Création de PDF (non disponible dans MuPDF)
| MuPDF | IronPDF |
|---|---|
| (non pris en charge) | ChromePdfRenderer.RenderHtmlAsPdf(html) |
| (non pris en charge) | ChromePdfRenderer.RenderUrlAsPdf(url) |
Manipulation de fichiers PDF (limitée à MuPDF)
| MuPDF | IronPDF |
|---|---|
| Boucles de copie de page de manuel | PdfDocument.Merge(pdf1, pdf2) |
| (non pris en charge)(non pris en charge)(non pris en charge)(non pris en charge) | pdf.ApplyWatermark(html) |
| (non pris en charge)(non pris en charge)(non pris en charge)(non pris en charge) | pdf.SecuritySettings |
Exemples de migration de code
Exemple 1 : Conversion de HTML en PDF (MuPDF ne peut pas faire cela)
Avant (MuPDF):
// NuGet: Install-Package MuPDF.NET
using MuPDFCore;
using System.IO;
class Program
{
static void Main()
{
// MuPDFdoesn't support HTML vers 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 vers PDFconversion");
}
}
// NuGet: Install-Package MuPDF.NET
using MuPDFCore;
using System.IO;
class Program
{
static void Main()
{
// MuPDFdoesn't support HTML vers 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 vers 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
Après (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
Cet exemple met en évidence la limite la plus importante de MuPDF: il ne peut pas du tout convertir du HTML en PDF. Le code MuPDFgénère explicitement NotSupportedException car la conversion HTML vers PDF n'est tout simplement pas une capacité fournie par MuPDF. Si vous aviez besoin de cette fonctionnalité avec MuPDF, vous deviez utiliser une bibliothèque distincte comme wkhtmltopdf ou un moteur de navigateur, puis charger le PDF résultant avec MuPDFpour l'afficher.
IronPDF utilise un moteur Chromium complet pour rendre le HTML avec une prise en charge complète des normes CSS3, JavaScript et Web modernes. La méthode RenderHtmlAsPdf() accepte directement les chaînes HTML. Voir la documentation HTML vers PDF pour des options de rendu supplémentaires, notamment le rendu d'URL et la conversion de fichiers HTML.
Exemple 2 : Extraction de texte
Avant (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
Après (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
L'approche MuPDFnécessite la création d'un bloc using avec un MuPDFDocument, l'itération manuelle à travers document.Pages.Count avec une boucle for, l'appel de document.Pages[i].GetText() pour chaque page et la construction du texte avec un StringBuilder. Il s'agit de 12 lignes de code pour une simple extraction de texte.
IronPDF réduit cela à 3 lignes : charger le document avec PdfDocument.FromFile(), appeler ExtractAllText() et imprimer le résultat. Aucune itération manuelle, aucun StringBuilder, aucune gestion explicite des ressources avec des blocs using pour cette opération simple. Apprenez-en davantage sur l'extraction de texte à partir de fichiers PDF .
Exemple 3 : fusionner plusieurs PDF
Avant (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
Après (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
L'opération de fusion de MuPDFest particulièrement verbeuse. Vous devez ouvrir les deux documents sources dans des blocs imbriqués using, créer un nouveau document vide avec MuPDFDocument.Create(), parcourir chaque page du premier document en appelant CopyPage(), parcourir chaque page du deuxième document en appelant CopyPage(), et enfin enregistrer. Il s'agit de plus de 20 lignes de code avec une imbrication complexe.
La méthode statique PdfDocument.Merge() d'IronPDF accepte plusieurs documents PDF et renvoie un seul document fusionné. L'ensemble de l'opération consiste en 4 lignes de code lisible. Pour fusionner plusieurs documents, vous pouvez passer une liste : PdfDocument.Merge(pdfList). Voir la documentation sur la fusion et le fractionnement des PDF pour des options supplémentaires.
Notes de migration essentielles
Supprimer les binaires natifs
MuPDF nécessite des bibliothèques natives spécifiques à la plateforme. Après avoir migré vers IronPDF, supprimez tous les binaires natifs de MuPDF:
# 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
IronPDF est un code .NET entièrement géré - pas de binaires natifs à gérer d'une plateforme à l'autre.
Le modèle Dispose simplifié
MuPDF nécessite un contexte explicite et une gestion des documents :
// 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
Modification du modèle d'itération de la page
MuPDF utilise l'itération basée sur l'index avec un nombre de pages explicite :
// 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
Nouvelles fonctionnalités disponibles
Après avoir migré vers IronPDF, vous bénéficiez de fonctionnalités que MuPDFne peut pas vous offrir :
// Création de PDFfrom 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}");
// Création de PDFfrom 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}");
' Création de PDFfrom 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}")
Dépannage
Édition 1 : MuPDFDocument introuvable
Problème : la classe MuPDFDocument n'existe pas dans IronPDF.
Solution : Utilisez 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")
Sujet 2 : Pages.Count introuvables
Problème : le modèle document.Pages.Count ne fonctionne pas.
Solution : Utilisez 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
Sujet 3 : GetText() introuvable
Problème : la méthode page.GetText() n'existe pas.
Solution : Utilisez la propriété page.Text ou 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()
Édition 4 : CopyPage introuvable
Problème : Modèle de copie manuelle de page pour la fusion.
Solution : Utiliser statique 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)
Liste de contrôle de la migration
Pré-migration
- Inventaire de toutes les utilisations de MuPDFdans la base de code
- Documenter toutes les opérations de rendu (DPI, facteurs d'échelle)
- Identifier les besoins en matière de création de PDF (nous utilisons actuellement des outils externes).
- Liste des exigences d'extraction de texte
- Examiner les scripts de déploiement pour la gestion des binaires natifs
- Obtenir une clé de licence IronPDF
Modifications du paquet
- Supprimer le package
MuPDF.NET - Supprimer le package
MuPDFCore - Supprimer le package
MuPDFCore.MuPDFWrapper - Installez le package NuGet
IronPdf:dotnet add package IronPdf - Mettre à jour les importations d'espace de noms
Modifications du code
- Ajouter la configuration de la clé de licence au démarrage
- Remplacez
MuPDFDocumentparPdfDocument.FromFile() - Remplacez
document.Pages.Countparpdf.PageCount - Remplacez
page.GetText()parpage.Textoupdf.ExtractAllText() - Remplacez les boucles manuelles
CopyPageparPdfDocument.Merge() - Supprimer les blocs imbriqués
usingpour la gestion du contexte - Ajouter le code de création de PDF si nécessaire (HTML vers PDF)
Après la migration
- Supprimer les binaires MuPDFnatifs du projet
- Mise à jour des fichiers Docker pour supprimer l'installation de MuPDF
- Supprimer les dossiers d'exécution spécifiques à la plateforme
- Exécuter des tests de régression comparant le rendu final
- Testé sur toutes les plateformes cibles (Windows, Linux, macOS)
- Envisagez d'ajouter de nouvelles fonctionnalités (filigranes, sécurité, en-têtes/pieds de page).

