Comment migrer de Sumatra PDF à IronPDF en C#
La migration de Sumatra PDFversIronPDFtransforme votre flux de travail PDF d'une gestion de processus externe avec une application de visualisation de bureau à une intégration de bibliothèque .NET native avec des capacités complètes de création, de manipulation et d'extraction de PDF. Ce guide fournit un chemin de migration complet, étape par étape, qui élimine les dépendances externes, les restrictions de la licence GPLet la limitation fondamentale que Sumatra PDFest une visionneuse et non une bibliothèque de développement.
Pourquoi migrer de Sumatra PDFvers IronPDF
Compréhension de Sumatra PDF
Sumatra PDF est avant tout un lecteur de PDF léger et open-source, réputé pour sa simplicité et sa rapidité. Cependant, Sumatra PDFne permet pas de créer ou de manipuler des fichiers PDF au-delà de leur visualisation. En tant qu'option gratuite et polyvalente pour la lecture des PDF, il est adoré par de nombreux utilisateurs à la recherche d'une expérience sans fioritures. Mais lorsqu'il s'agit de développeurs ayant besoin de fonctionnalités PDF plus complètes, telles que la création et l'intégration de bibliothèques dans des applications, Sumatra PDFn'est pas à la hauteur en raison de ses limites de conception inhérentes.
Sumatra PDF est une application de visualisation PDF de bureau, et non une bibliothèque de développement. Si vous utilisez Sumatra PDFdans votre application .NET, vous êtes probablement.. :
- Le lancer en tant que processus externe pour afficher des PDF
- L'utiliser pour imprimer des PDF via la ligne de commande
- Il s'agit d'une dépendance que vos utilisateurs doivent installer
Principaux problèmes liés à l'intégration de Sumatra PDF
| Problématique | Impact |
|---|---|
| Pas une bibliothèque | Impossible de créer ou d'éditer des PDF de manière programmatique |
| Processus externe | Nécessite la création de processus distincts |
| Licence GPL | Restriction pour les logiciels commerciaux |
| Dépendance de l'utilisateur | Les utilisateurs doivent installer Sumatra séparément |
| Pas d'API | Limité aux arguments de ligne de commande |
| Voir uniquement | Impossibilité de créer, d'éditer ou de manipuler des PDF |
| Pas de support web | Application de bureau uniquement |
Comparaison Sumatra PDFvs IronPDF
| Fonction | Sumatra PDF | IronPDF |
|---|---|---|
| Type | Application | Bibliothèque |
| Lecture de PDF | Oui | Oui |
| Création de PDF | Non | Oui |
| Édition de PDF | Non | Oui |
| Intégration | Limité (autonome) | Intégration complète dans les applications |
| Licence | GPL | Commercial |
| Créer des PDF | Non | Oui |
| Éditer des PDF | Non | Oui |
| HTML à PDF | Non | Oui |
| Fusion/Fractionnement | Non | Oui |
| Marqueurs d'eau | Non | Oui |
| Signatures numériques | Non | Oui |
| Remplissage de formulaires | Non | Oui |
| Extraction de texte | Non | Oui |
| Intégration .NET | Aucun | Natif |
| Applications web | Non | Oui |
IronPDF, contrairement à Sumatra PDF, n'est pas lié à une application de bureau spécifique ou à un processus externe. Il fournit aux développeurs une bibliothèque flexible pour créer, éditer et manipuler dynamiquement des documents PDF directement en C#. Ce découplage des processus externes présente un avantage notable : il est simple et adaptable, et convient à un large éventail d'applications au-delà de la simple visualisation.
Pour les équipes qui prévoient d'adopter .NET 10 et C# 14 d'ici 2025 et 2026,IronPDFoffre une intégration de bibliothèque native qui élimine la surcharge de processus externe et les restrictions de licence GPLde Sumatra PDF.
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
Installation
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
Configuration de la licence
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Référence API complète
Modifications de l'espace de nommage
// Before: Sumatra PDF(external process)
using System.Diagnostics;
using System.IO;
// After: IronPDF
using IronPdf;
// Before: Sumatra PDF(external process)
using System.Diagnostics;
using System.IO;
// After: IronPDF
using IronPdf;
Imports System.Diagnostics
Imports System.IO
Imports IronPdf
Mappages des capacités de base
| Sumatra PDFApproche | Équivalent d'IronPDF | Notes |
|---|---|---|
Process.Start("SumatraPDF.exe", pdfPath) |
PdfDocument.FromFile() |
Charger le PDF |
| Arguments de la ligne de commande | Méthodes API natives | Pas de CLI nécessaire |
Externe pdftotext.exe |
pdf.ExtractAllText() |
Extraction de texte |
Externe wkhtmltopdf.exe |
renderer.RenderHtmlAsPdf() |
HTML vers PDF |
-print-to-default argument |
pdf.Print() |
Impression |
| Pas possible | PdfDocument.Merge() |
Fusionner des PDF |
| Pas possible | pdf.ApplyWatermark() |
Filigranes |
| Pas possible | pdf.SecuritySettings |
Protection par mot de passe |
Exemples de migration de code
Exemple 1 : Conversion HTML vers PDF
Avant (Sumatra PDF):
// NuGet: Install-Package SumatraPDF (Note: Sumatra is primarily a viewer, not a generator)
// Sumatra PDFdoesn't have direct C# integration for HTML vers PDFconversion
// You would need to use external tools or libraries and then open with Sumatra
using System.Diagnostics;
using System.IO;
class Program
{
static void Main()
{
// Sumatra PDFcannot directly convert HTML to PDF
// You'd need to use wkhtmltopdf or similar, then view in Sumatra
string htmlFile = "input.html";
string pdfFile = "output.pdf";
// Using wkhtmltopdf as intermediary
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = "wkhtmltopdf.exe",
Arguments = $"{htmlFile} {pdfFile}",
UseShellExecute = false
};
Process.Start(psi)?.WaitForExit();
// Then open with Sumatra
Process.Start("SumatraPDF.exe", pdfFile);
}
}
// NuGet: Install-Package SumatraPDF (Note: Sumatra is primarily a viewer, not a generator)
// Sumatra PDFdoesn't have direct C# integration for HTML vers PDFconversion
// You would need to use external tools or libraries and then open with Sumatra
using System.Diagnostics;
using System.IO;
class Program
{
static void Main()
{
// Sumatra PDFcannot directly convert HTML to PDF
// You'd need to use wkhtmltopdf or similar, then view in Sumatra
string htmlFile = "input.html";
string pdfFile = "output.pdf";
// Using wkhtmltopdf as intermediary
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = "wkhtmltopdf.exe",
Arguments = $"{htmlFile} {pdfFile}",
UseShellExecute = false
};
Process.Start(psi)?.WaitForExit();
// Then open with Sumatra
Process.Start("SumatraPDF.exe", pdfFile);
}
}
Imports System.Diagnostics
Imports System.IO
Module Program
Sub Main()
' Sumatra PDF cannot directly convert HTML to PDF
' You'd need to use wkhtmltopdf or similar, then view in Sumatra
Dim htmlFile As String = "input.html"
Dim pdfFile As String = "output.pdf"
' Using wkhtmltopdf as intermediary
Dim psi As New ProcessStartInfo With {
.FileName = "wkhtmltopdf.exe",
.Arguments = $"{htmlFile} {pdfFile}",
.UseShellExecute = False
}
Process.Start(psi)?.WaitForExit()
' Then open with Sumatra
Process.Start("SumatraPDF.exe", pdfFile)
End Sub
End Module
Après (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string htmlContent = "<h1>Hello World</h1><p>This is HTML vers PDFconversion.</p>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string htmlContent = "<h1>Hello World</h1><p>This is HTML vers PDFconversion.</p>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim htmlContent As String = "<h1>Hello World</h1><p>This is HTML vers PDFconversion.</p>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully!")
End Sub
End Class
Cet exemple illustre la différence architecturale fondamentale. Sumatra PDFne peut pas convertir directement HTML en PDF. Vous devez utiliser un outil externe comme wkhtmltopdf en tant qu'intermédiaire, puis lancer Sumatra en tant que processus séparé pour voir le résultat. Cela nécessite deux exécutables externes et plusieurs lancements de processus.
IronPDF utilise un ChromePdfRenderer avec RenderHtmlAsPdf() en seulement trois lignes de code. Pas d'outils externes, pas de gestion de processus, pas de fichiers intermédiaires. Le PDF est créé directement en mémoire et enregistré avec SaveAs(). Consultez la documentation HTML vers PDF pour des exemples complets.
Exemple 2 : Ouverture et affichage de fichiers PDF
Avant (Sumatra PDF):
// NuGet: Install-Package SumatraPDF.CommandLine (or direct executable)
using System.Diagnostics;
using System.IO;
class Program
{
static void Main()
{
string pdfPath = "document.pdf";
// Sumatra PDFexcels at viewing PDFs
ProcessStartInfo startInfo = new ProcessStartInfo
{
FileName = "SumatraPDF.exe",
Arguments = $"\"{pdfPath}\"",
UseShellExecute = true
};
Process.Start(startInfo);
// Optional: Open specific page
// Arguments = $"-page 5 \"{pdfPath}\""
}
}
// NuGet: Install-Package SumatraPDF.CommandLine (or direct executable)
using System.Diagnostics;
using System.IO;
class Program
{
static void Main()
{
string pdfPath = "document.pdf";
// Sumatra PDFexcels at viewing PDFs
ProcessStartInfo startInfo = new ProcessStartInfo
{
FileName = "SumatraPDF.exe",
Arguments = $"\"{pdfPath}\"",
UseShellExecute = true
};
Process.Start(startInfo);
// Optional: Open specific page
// Arguments = $"-page 5 \"{pdfPath}\""
}
}
Imports System.Diagnostics
Imports System.IO
Class Program
Shared Sub Main()
Dim pdfPath As String = "document.pdf"
' Sumatra PDF excels at viewing PDFs
Dim startInfo As New ProcessStartInfo With {
.FileName = "SumatraPDF.exe",
.Arguments = $"""{pdfPath}""",
.UseShellExecute = True
}
Process.Start(startInfo)
' Optional: Open specific page
' .Arguments = $"-page 5 ""{pdfPath}"""
End Sub
End Class
Après (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Diagnostics;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("document.pdf");
// Extract information
Console.WriteLine($"Page Count: {pdf.PageCount}");
//IronPDFcan manipulate and save, then open with default viewer
pdf.SaveAs("modified.pdf");
// Open with default PDF viewer
Process.Start(new ProcessStartInfo("modified.pdf") { UseShellExecute = true });
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Diagnostics;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("document.pdf");
// Extract information
Console.WriteLine($"Page Count: {pdf.PageCount}");
//IronPDFcan manipulate and save, then open with default viewer
pdf.SaveAs("modified.pdf");
// Open with default PDF viewer
Process.Start(new ProcessStartInfo("modified.pdf") { UseShellExecute = true });
}
}
Imports IronPdf
Imports System
Imports System.Diagnostics
Class Program
Shared Sub Main()
Dim pdf = PdfDocument.FromFile("document.pdf")
' Extract information
Console.WriteLine($"Page Count: {pdf.PageCount}")
' IronPDF can manipulate and save, then open with default viewer
pdf.SaveAs("modified.pdf")
' Open with default PDF viewer
Process.Start(New ProcessStartInfo("modified.pdf") With {.UseShellExecute = True})
End Sub
End Class
Sumatra PDF excelle dans la visualisation des PDF, mais il est limité au lancement d'un processus externe avec des arguments de ligne de commande. Vous ne pouvez pas accéder par programme au contenu du PDF, mais seulement l'afficher.
IronPDF charge le PDF avec PdfDocument.FromFile(), vous donnant un accès programmatique complet. Vous pouvez lire les propriétés telles que PageCount, manipuler le document, enregistrer les modifications, puis l'ouvrir avec la visionneuse PDF par défaut du système. La principale différence réside dans le fait qu'IronPDF fournit une véritable API, et pas seulement des arguments de processus. Pour en savoir plus, consultez nos tutoriels.
Exemple 3 : Extraction de texte à partir de PDF
Avant (Sumatra PDF):
// Sumatra PDFdoesn't provide C# API for text extraction
// You would need to use command-line tools or other libraries
using System.Diagnostics;
using System.IO;
class Program
{
static void Main()
{
// Sumatra PDFis a viewer, not a text extraction library
// You'd need to use PDFBox, iTextSharp, or similar for extraction
string pdfFile = "document.pdf";
// This would require external tools like pdftotext
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = "pdftotext.exe",
Arguments = $"{pdfFile} output.txt",
UseShellExecute = false
};
Process.Start(psi)?.WaitForExit();
string extractedText = File.ReadAllText("output.txt");
Console.WriteLine(extractedText);
}
}
// Sumatra PDFdoesn't provide C# API for text extraction
// You would need to use command-line tools or other libraries
using System.Diagnostics;
using System.IO;
class Program
{
static void Main()
{
// Sumatra PDFis a viewer, not a text extraction library
// You'd need to use PDFBox, iTextSharp, or similar for extraction
string pdfFile = "document.pdf";
// This would require external tools like pdftotext
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = "pdftotext.exe",
Arguments = $"{pdfFile} output.txt",
UseShellExecute = false
};
Process.Start(psi)?.WaitForExit();
string extractedText = File.ReadAllText("output.txt");
Console.WriteLine(extractedText);
}
}
Imports System.Diagnostics
Imports System.IO
Class Program
Shared Sub Main()
' Sumatra PDF is a viewer, not a text extraction library
' You'd need to use PDFBox, iTextSharp, or similar for extraction
Dim pdfFile As String = "document.pdf"
' This would require external tools like pdftotext
Dim psi As New ProcessStartInfo With {
.FileName = "pdftotext.exe",
.Arguments = $"{pdfFile} output.txt",
.UseShellExecute = False
}
Process.Start(psi)?.WaitForExit()
Dim extractedText As String = File.ReadAllText("output.txt")
Console.WriteLine(extractedText)
End Sub
End Class
Après (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("document.pdf");
// Extract text from all pages
string allText = pdf.ExtractAllText();
Console.WriteLine("Extracted Text:");
Console.WriteLine(allText);
// Extract text from specific page
string pageText = pdf.ExtractTextFromPage(0);
Console.WriteLine($"\nFirst Page Text:\n{pageText}");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("document.pdf");
// Extract text from all pages
string allText = pdf.ExtractAllText();
Console.WriteLine("Extracted Text:");
Console.WriteLine(allText);
// Extract text from specific page
string pageText = pdf.ExtractTextFromPage(0);
Console.WriteLine($"\nFirst Page Text:\n{pageText}");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim pdf = PdfDocument.FromFile("document.pdf")
' Extract text from all pages
Dim allText As String = pdf.ExtractAllText()
Console.WriteLine("Extracted Text:")
Console.WriteLine(allText)
' Extract text from specific page
Dim pageText As String = pdf.ExtractTextFromPage(0)
Console.WriteLine(vbCrLf & "First Page Text:" & vbCrLf & pageText)
End Sub
End Class
Sumatra PDF est une visionneuse et non une bibliothèque d'extraction de texte. Pour extraire du texte, vous devez utiliser des outils de ligne de commande externes comme pdftotext.exe, lancer un processus, attendre qu'il se termine, lire le fichier de sortie et gérer toutes les E/S de fichiers associées et le nettoyage.
IronPDF fournit une extraction de texte native avec ExtractAllText() pour l'ensemble du document ou ExtractTextFromPage(0) pour des pages spécifiques. Aucun processus externe, aucun fichier temporaire, aucun nettoyage n'est nécessaire.
Comparaison des fonctionnalités
| Fonction | Sumatra PDF | IronPDF | |||
|---|---|---|---|---|---|
| : Création : | HTML vers PDF | Non | Oui | ||
| URL vers PDF | Non | Oui | |||
| Texte au format PDF | Non | Oui | |||
| De l'image au PDF | Non | Oui | |||
| : Manipulation : | Fusionner des PDF | Non | Oui | ||
| Diviser les PDF | Non | Oui | |||
| Rotation des pages | Non | Oui | |||
| Supprimer des pages | Non | Oui | |||
| Réorganiser les pages | Non | Oui | |||
| : Contenu : | Ajouter des filigranes | Non | Oui | ||
| Ajouter des en-têtes/pieds de page | Non | Oui | |||
| Texte du timbre | Non | Oui | |||
| Images du timbre | Non | Oui | |||
| : Sécurité : | Protection par mot de passe | Non | Oui | ||
| Signatures numériques | Non | Oui | |||
| Chiffrement | Non | Oui | |||
| Paramètres de permission | Non | Oui | |||
| Extraction : | Extraire le texte | Non | Oui | ||
| Extraire des images | Non | Oui | |||
| : Plate-forme : | Fenêtres | Oui | Oui | ||
| Linux | Non | Oui | |||
| macOS | Non | Oui | |||
| Applications Web | Non | Oui | |||
| Azure/AWS | Non | Oui |
Nouvelles capacités après la migration
Après avoir migré vers IronPDF, vous bénéficiez de fonctionnalités que Sumatra PDFne peut pas vous offrir :
Création de PDF à partir de HTML
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(@"
<html>
<head><style>body { font-family: Arial; }</style></head>
<body>
<h1>Invoice #12345</h1>
<p>Thank you for your purchase.</p>
</body>
</html>");
pdf.SaveAs("invoice.pdf");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(@"
<html>
<head><style>body { font-family: Arial; }</style></head>
<body>
<h1>Invoice #12345</h1>
<p>Thank you for your purchase.</p>
</body>
</html>");
pdf.SaveAs("invoice.pdf");
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("
<html>
<head><style>body { font-family: Arial; }</style></head>
<body>
<h1>Invoice #12345</h1>
<p>Thank you for your purchase.</p>
</body>
</html>")
pdf.SaveAs("invoice.pdf")
Fusion de fichiers PDF
var pdf1 = PdfDocument.FromFile("chapter1.pdf");
var pdf2 = PdfDocument.FromFile("chapter2.pdf");
var pdf3 = PdfDocument.FromFile("chapter3.pdf");
var book = PdfDocument.Merge(pdf1, pdf2, pdf3);
book.SaveAs("complete_book.pdf");
var pdf1 = PdfDocument.FromFile("chapter1.pdf");
var pdf2 = PdfDocument.FromFile("chapter2.pdf");
var pdf3 = PdfDocument.FromFile("chapter3.pdf");
var book = PdfDocument.Merge(pdf1, pdf2, pdf3);
book.SaveAs("complete_book.pdf");
Dim pdf1 = PdfDocument.FromFile("chapter1.pdf")
Dim pdf2 = PdfDocument.FromFile("chapter2.pdf")
Dim pdf3 = PdfDocument.FromFile("chapter3.pdf")
Dim book = PdfDocument.Merge(pdf1, pdf2, pdf3)
book.SaveAs("complete_book.pdf")
Marques de fond
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark(@"
<div style='
font-size: 60pt;
color: rgba(255, 0, 0, 0.3);
transform: rotate(-45deg);
'>
CONFIDENTIAL
</div>");
pdf.SaveAs("watermarked.pdf");
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark(@"
<div style='
font-size: 60pt;
color: rgba(255, 0, 0, 0.3);
transform: rotate(-45deg);
'>
CONFIDENTIAL
</div>");
pdf.SaveAs("watermarked.pdf");
Dim pdf = PdfDocument.FromFile("document.pdf")
pdf.ApplyWatermark("
<div style='
font-size: 60pt;
color: rgba(255, 0, 0, 0.3);
transform: rotate(-45deg);
'>
CONFIDENTIAL
</div>")
pdf.SaveAs("watermarked.pdf")
Protection par mot de passe
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Sensitive Data</h1>");
pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SaveAs("protected.pdf");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Sensitive Data</h1>");
pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SaveAs("protected.pdf");
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Sensitive Data</h1>")
pdf.SecuritySettings.OwnerPassword = "owner123"
pdf.SecuritySettings.UserPassword = "user456"
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint
pdf.SaveAs("protected.pdf")
Liste de contrôle de la migration
Pré-migration
- Identifier tous les lancements de processus Sumatra (
Process.Start("SumatraPDF.exe", ...)) - Flux de travail d'impression de documents (
-print-to-defaultarguments) - Notez les arguments de ligne de commande Sumatra utilisés.
- Obtenez votre clé de licenceIronPDFsur IronPDF
Mises à jour du code
- Installer le package NuGet
IronPdf - Supprimer le code de traitement Sumatra
- Remplacez
Process.Start("SumatraPDF.exe", pdfPath)parPdfDocument.FromFile(pdfPath) - Remplacez les appels externes
wkhtmltopdf.exeparChromePdfRenderer.RenderHtmlAsPdf() - Remplacez les appels externes
pdftotext.exeparpdf.ExtractAllText() - Remplacez les appels de processus
-print-to-defaultparpdf.Print() - Ajouter l'initialisation de la licence au démarrage de l'application
Essai
- Tester la qualité de génération des PDF
- Vérifier la fonctionnalité d'impression
- Test sur toutes les plateformes cibles
- Vérifiez qu'il ne reste aucune dépendance à Sumatra
Nettoyage
- Supprimer Sumatra des programmes d'installation
- Mise à jour de la documentation
- Supprimer Sumatra des exigences système

