Saltar al pie de página
GUíAS DE MIGRACIóN

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:

  1. Lanzarlo como un proceso externo para mostrar PDFs
  2. Utilización para la impresión de PDF a través de la línea de comandos
  3. Al depender de ellas, sus usuarios deben instalar

Problemas clave con la integración de Sumatra PDF

ProblemaImpacto
No es una bibliotecaNo se pueden crear ni editar PDF mediante programación
Proceso externoRequiere la generación de procesos independientes
Licencia GPLRestrictivo para software comercial
Dependencia del usuarioLos usuarios deben instalar Sumatra por separado
Sin APILimitado a argumentos de línea de comandos
Ver sóloNo se pueden crear, editar ni manipular archivos PDF
Sin soporte webAplicación de escritorio

Comparación entre Sumatra PDFe IronPDF

CaracterísticaSumatra PDFIronPDF
TipoAplicaciónBiblioteca
Lectura de PDF
Creación de PDFNo
Edición de PDFNo
IntegraciónLimitado (independiente)Integración total en aplicaciones
LicenciaGPLComercial
Crear PDFNo
Editar PDFNo
HTML a PDFNo
Fusionar/DividirNo
Marcas de aguaNo
Firmas digitalesNo
Relleno de formulariosNo
Extracción de textoNo
Integración .NETNingunoNativo
Aplicaciones webNo

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

  1. <Entorno .NET: .NET Framework 4.6.2+ o .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Acceso a NuGet: Capacidad para instalar paquetes NuGet
  3. Licencia IronPDF: Obtenga su clave de licencia en ironpdf.com

Instalación

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

Configuració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.com
$vbLabelText   $csharpLabel

Referencia 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.com
$vbLabelText   $csharpLabel

Mapeo de capacidades básicas

Enfoque Sumatra PDFEquivalente de IronPDFNotas
Process.Start("SumatraPDF.exe", pdfPath)<código>PdfDocument.FromFile()</códigoCargar PDF
Argumentos de línea de comandosMétodos API nativosNo se necesita CLI
Externo pdftotext.exe<código>pdf.ExtractAllText()</códigoExtracción de texto
Externo <código>wkhtmltopdf.exe</códigorenderer.RenderHtmlAsPdf()HTML a PDF
argumento -print-to-defaultpdf.Print()Imprimir
No es posiblePdfDocument.Merge()Fusionar PDF
No es posible<código>pdf.ApplyWatermark()</códigoMarcas de agua
No es posible<código>pdf.SecuritySettings</códigoProtecció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.com
$vbLabelText   $csharpLabel

Despué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.com
$vbLabelText   $csharpLabel

Este 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.com
$vbLabelText   $csharpLabel

Despué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.com
$vbLabelText   $csharpLabel

Sumatra 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.com
$vbLabelText   $csharpLabel

Despué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.com
$vbLabelText   $csharpLabel

Sumatra 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ísticaSumatra PDFIronPDF
Creación
HTML a PDFNo
URL a PDFNo
Texto a PDFNo
Imagen a PDFNo
Manipulación
Fusionar PDFNo
Dividir PDFNo
Girar páginasNo
Eliminar páginasNo
Reordenar páginasNo
Contenido
Añadir marcas de aguaNo
Añadir encabezados/pies de páginaNo
Texto del selloNo
Imágenes de sellosNo
Seguridad
Protección por contraseñaNo
Firmas digitalesNo
CifradoNo
Configuración de permisosNo
Extracción
Extraer textoNo
Extraer imágenesNo
Plataforma
Windows
LinuxNo
macOSNo
Aplicaciones webNo
Azure/AWSNo

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.com
$vbLabelText   $csharpLabel

Fusió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.com
$vbLabelText   $csharpLabel

Marcas 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.com
$vbLabelText   $csharpLabel

Protecció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.com
$vbLabelText   $csharpLabel

Lista 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 IronPdf paquete NuGet
  • [ ] Eliminar el código de proceso de Sumatra
  • [Reemplace Process.Start("SumatraPDF.exe", pdfPath)por PdfDocument.FromFile(pdfPath)
  • [Reemplace las llamadas externas a wkhtmltopdf.exe por ChromePdfRenderer.RenderHtmlAsPdf()
  • [ ] Sustituir las llamadas externas a pdftotext.exe por pdf.ExtractAllText()
  • [ ] Sustituir las llamadas a procesos -print-to-default por pdf.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:

  1. Arquitectura: Aplicación externa de escritorio → Librería nativa .NET
  2. Creación de PDF: No es posible → ChromePdfRenderer.RenderHtmlAsPdf()
  3. Carga de PDF: Process.Start("SumatraPDF.exe", ruta)PdfDocument.FromFile(ruta)
  4. Extracción de texto: pdftotext.exe externo → <código>pdf.ExtractAllText()</códigoy pdf.ExtractTextFromPage()
  5. Impresión: -print-to-default argumento CLI → pdf.Print()
  6. Fusión: No es posible → PdfDocument.Merge()
  7. Marcas de agua: No es posible → pdf.ApplyWatermark()
  8. Seguridad: No es posible → pdf.SecuritySettings
  9. Licencia: GPL(restrictiva) → Comercial (flexible)
  10. 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.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más