Cómo migrar de Sumatra PDF a IronPDF en C#
Migrar de Sumatra PDFa IronPDF: Guía completa de migración a C
La migración de Sumatra PDFaIronPDFtransforma su flujo de trabajo PDF de la gestión de procesos externos con una aplicación de visor de escritorio a la integración nativa de bibliotecas .NET con capacidades completas de creación, manipulación y extracción de PDF. Esta guía proporciona una ruta de migración completa, paso a paso, que elimina las dependencias externas, las restricciones de la licencia GPLy la limitación fundamental de que Sumatra PDFes un visor, no una biblioteca de desarrollo.
Por qué migrar de Sumatra PDFa IronPDF
Entendiendo Sumatra PDF
Sumatra PDF es principalmente un lector de PDF ligero y de código abierto famoso por su sencillez y velocidad. Sin embargo, Sumatra PDFno ofrece las capacidades necesarias para crear o manipular archivos PDF más allá de su visualización. Como opción gratuita y versátil para leer PDF, es adorada por muchos usuarios que buscan una experiencia sin florituras. Pero cuando se trata de desarrolladores que necesitan funcionalidades PDF más completas, como la creación y la integración de bibliotecas dentro de las aplicaciones, Sumatra PDFse queda corto debido a sus limitaciones de diseño inherentes.
Sumatra PDF es una aplicación de visor de PDF de escritorio, no una biblioteca de desarrollo. Si utiliza Sumatra PDFen su aplicación .NET, es probable que:
- Lanzarlo como un proceso externo para mostrar PDFs
- Utilización para la impresión de PDF a través de la línea de comandos
- Al depender de ellas, sus usuarios deben instalar
Problemas clave con la integración de Sumatra PDF
| Problema | Impacto |
|---|---|
| No es una biblioteca | No se pueden crear ni editar PDF mediante programación |
| Proceso externo | Requiere la generación de procesos independientes |
| Licencia GPL | Restrictivo para software comercial |
| Dependencia del usuario | Los usuarios deben instalar Sumatra por separado |
| Sin API | Limitado a argumentos de línea de comandos |
| Ver sólo | No se pueden crear, editar ni manipular archivos PDF |
| Sin soporte web | Aplicación de escritorio |
Comparación entre Sumatra PDFe IronPDF
| Característica | Sumatra PDF | IronPDF |
|---|---|---|
| Tipo | Aplicación | Biblioteca |
| Lectura de PDF | Sí | Sí |
| Creación de PDF | No | Sí |
| Edición de PDF | No | Sí |
| Integración | Limitado (independiente) | Integración total en aplicaciones |
| Licencia | GPL | Comercial |
| Crear PDF | No | Sí |
| Editar PDF | No | Sí |
| HTML a PDF | No | Sí |
| Fusionar/Dividir | No | Sí |
| Marcas de agua | No | Sí |
| Firmas digitales | No | Sí |
| Relleno de formularios | No | Sí |
| Extracción de texto | No | Sí |
| Integración .NET | Ninguno | Nativo |
| Aplicaciones web | No | Sí |
IronPDF, a diferencia de Sumatra PDF, no está vinculado a ninguna aplicación de escritorio específica ni a ningún proceso externo. Proporciona a los desarrolladores una biblioteca flexible para crear, editar y manipular dinámicamente documentos PDF directamente en C#. Esta desvinculación de procesos externos ofrece una ventaja notable: es directa y adaptable, adecuada para una amplia gama de aplicaciones que van más allá de la mera visualización.
Para los equipos que planean la adopción de .NET 10 y C# 14 hasta 2025 y 2026,IronPDFproporciona una integración de biblioteca nativa que elimina la sobrecarga de procesos externos y las restricciones de licencia GPLde Sumatra PDF.
Antes de empezar
Prerrequisitos
- <Entorno .NET: .NET Framework 4.6.2+ o .NET Core 3.1+ / .NET 5/6/7/8/9+
- Acceso a NuGet: Capacidad para instalar paquetes NuGet
- Licencia IronPDF: Obtenga su clave de licencia en ironpdf.com
Instalación
# Install IronPDF
dotnet add package IronPdf# Install IronPDF
dotnet add package IronPdfConfiguración de licencias
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";IRON VB CONVERTER ERROR developers@ironsoftware.comReferencia completa de la API
Cambios en el espacio de nombres
// 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;IRON VB CONVERTER ERROR developers@ironsoftware.comMapeo de capacidades básicas
| Enfoque Sumatra PDF | Equivalente de IronPDF | Notas |
|---|---|---|
Process.Start("SumatraPDF.exe", pdfPath) | <código>PdfDocument.FromFile()</código | Cargar PDF |
| Argumentos de línea de comandos | Métodos API nativos | No se necesita CLI |
Externo pdftotext.exe | <código>pdf.ExtractAllText()</código | Extracción de texto |
| Externo <código>wkhtmltopdf.exe</código | renderer.RenderHtmlAsPdf() | HTML a PDF |
argumento -print-to-default | pdf.Print() | Imprimir |
| No es posible | PdfDocument.Merge() | Fusionar PDF |
| No es posible | <código>pdf.ApplyWatermark()</código | Marcas de agua |
| No es posible | <código>pdf.SecuritySettings</código | Protección mediante contraseña |
Ejemplos de migración de código
Ejemplo 1: Conversión de HTML a PDF
Antes (Sumatra PDF):
// NuGet: Install-Package SumatraPDF (Note: Sumatra is primarily a viewer, not a generator)
// Sumatra PDFdoesn't have direct C# integration for HTML a 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 a 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);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comDespué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 a 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 a PDFconversion.</p>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comEste ejemplo demuestra la diferencia arquitectónica fundamental. Sumatra PDFno puede convertir directamente HTML a PDF: debe utilizar una herramienta externa como wkhtmltopdf como intermediario y, a continuación, iniciar Sumatra como un proceso independiente para ver el resultado. Esto requiere dos ejecutables externos y múltiples lanzamientos de procesos.
IronPDF utiliza un ChromePdfRenderer con RenderHtmlAsPdf() en sólo tres líneas de código. Sin herramientas externas, sin gestión de procesos, sin archivos intermedios. El PDF se crea directamente en la memoria y se guarda con SaveAs(). Consulte la documentación HTML a PDF para ver ejemplos completos.
Ejemplo 2: Apertura y visualización de archivos PDF
Antes (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}\""
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comDespué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 });
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comSumatra PDF destaca en la visualización de PDF, pero se limita a lanzar un proceso externo con argumentos de línea de comandos. No se puede acceder mediante programación al contenido del PDF, sólo visualizarlo.
IronPDF carga el PDF con PdfDocument.FromFile(), dándole acceso programático completo. Puede leer propiedades como PageCount, manipular el documento, guardar los cambios y, a continuación, abrirlo con el visor de PDF predeterminado del sistema. La diferencia clave es queIronPDFproporciona una API real, no sólo argumentos de proceso. Más información en nuestros tutoriales.
Ejemplo 3: Extracción de texto de PDF
Antes (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);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comDespué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}");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comSumatra PDF es un visor, no una biblioteca de extracción de texto. Para extraer texto, debe utilizar herramientas externas de línea de comandos como pdftotext.exe, iniciar un proceso, esperar a que se complete, leer el archivo de salida y gestionar todas las operaciones de E/S y limpieza de archivos asociadas.
IronPDF proporciona extracción de texto nativa con ExtractAllText() para todo el documento o ExtractTextFromPage(0) para páginas específicas. No se requieren procesos externos, archivos temporales ni limpieza.
Comparación de características
| Característica | Sumatra PDF | IronPDF |
|---|---|---|
| Creación | ||
| HTML a PDF | No | Sí |
| URL a PDF | No | Sí |
| Texto a PDF | No | Sí |
| Imagen a PDF | No | Sí |
| Manipulación | ||
| Fusionar PDF | No | Sí |
| Dividir PDF | No | Sí |
| Girar páginas | No | Sí |
| Eliminar páginas | No | Sí |
| Reordenar páginas | No | Sí |
| Contenido | ||
| Añadir marcas de agua | No | Sí |
| Añadir encabezados/pies de página | No | Sí |
| Texto del sello | No | Sí |
| Imágenes de sellos | No | Sí |
| Seguridad | ||
| Protección por contraseña | No | Sí |
| Firmas digitales | No | Sí |
| Cifrado | No | Sí |
| Configuración de permisos | No | Sí |
| Extracción | ||
| Extraer texto | No | Sí |
| Extraer imágenes | No | Sí |
| Plataforma | ||
| Windows | Sí | Sí |
| Linux | No | Sí |
| macOS | No | Sí |
| Aplicaciones web | No | Sí |
| Azure/AWS | No | Sí |
Nuevas capacidades tras la migración
Tras migrar a IronPDF, obtendrá funciones que Sumatra PDFno puede ofrecerle:
Creación de PDF a 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");IRON VB CONVERTER ERROR developers@ironsoftware.comFusión de 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");IRON VB CONVERTER ERROR developers@ironsoftware.comMarcas de agua
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");IRON VB CONVERTER ERROR developers@ironsoftware.comProtección con contraseña
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");IRON VB CONVERTER ERROR developers@ironsoftware.comLista de comprobación de la migración
Pre-Migración
- [ ] Identificar todos los lanzamientos de procesos de Sumatra (
Process.Start("SumatraPDF.exe", ...)) - [Flujos de trabajo de impresión de documentos (argumentos
-print-to-default) - [ ] Tenga en cuenta los argumentos de línea de comandos de Sumatra utilizados
- [ ] Obtenga la clave de licencia deIronPDFen ironpdf.com
Actualizaciones de código
- [ ] Instalar
IronPdfpaquete NuGet - [ ] Eliminar el código de proceso de Sumatra
- [Reemplace
Process.Start("SumatraPDF.exe", pdfPath)porPdfDocument.FromFile(pdfPath) - [Reemplace las llamadas externas a
wkhtmltopdf.exeporChromePdfRenderer.RenderHtmlAsPdf() - [ ] Sustituir las llamadas externas a
pdftotext.exeporpdf.ExtractAllText() - [ ] Sustituir las llamadas a procesos
-print-to-defaultporpdf.Print() - [ ] Añadir inicialización de licencia al inicio de la aplicación
Pruebas
- [ ] Comprobar la calidad de la generación de PDF
- [ ] Verificar la funcionalidad de impresión
- [Prueba en todas las plataformas de destino
- [ ] Verificar que no queda ninguna dependencia de Sumatra
Limpieza
- [ ] Eliminar Sumatra de los instaladores
- [ ] Actualización de la documentación
- [ ] Eliminar Sumatra de los requisitos del sistema
Conclusión
En resumen, la elección entre Sumatra PDFeIronPDFdepende en gran medida de sus necesidades. Para los usuarios finales que necesitan un lector de PDF rápido y sencillo, Sumatra PDFofrece una experiencia excelente. Sin embargo, para los desarrolladores y las empresas que necesitan capacidades avanzadas de manipulación e integración de PDF,IronPDFdestaca como una opción superior. Su diseño de biblioteca, sus completas funcionalidades PDF y su licencia comercial la convierten en una potente herramienta para elevar las aplicaciones C# a nuevas cotas.
Los cambios clave en esta migración son:
- Arquitectura: Aplicación externa de escritorio → Librería nativa .NET
- Creación de PDF: No es posible →
ChromePdfRenderer.RenderHtmlAsPdf() - Carga de PDF:
Process.Start("SumatraPDF.exe", ruta)→PdfDocument.FromFile(ruta) - Extracción de texto:
pdftotext.exeexterno → <código>pdf.ExtractAllText()</códigoypdf.ExtractTextFromPage() - Impresión:
-print-to-defaultargumento CLI →pdf.Print() - Fusión: No es posible →
PdfDocument.Merge() - Marcas de agua: No es posible →
pdf.ApplyWatermark() - Seguridad: No es posible →
pdf.SecuritySettings - Licencia: GPL(restrictiva) → Comercial (flexible)
- Dependencias: Los usuarios deben instalar Sumatra → Biblioteca incluida con la app
Explore la documentación completa de IronPDF, tutoriales y referencia de API para acelerar su migración a Sumatra PDF.






