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

Cómo migrar de Sumatra PDF a IronPDF en 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

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
Creación de PDF No
Edición de PDF No
Integración Limitado (independiente) Integración total en aplicaciones
Licencia GPL Comercial
Crear PDF No
Editar PDF No
HTML a PDF No
Fusionar/Dividir No
Marcas de agua No
Firmas digitales No
Relleno de formularios No
Extracción de texto No
Integración .NET Ninguno Nativo
Aplicaciones web No

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 de 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";
$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;
$vbLabelText   $csharpLabel

Mapeo de capacidades básicas

Enfoque Sumatra PDF Equivalente de IronPDF Notas
Process.Start("SumatraPDF.exe", pdfPath) <código>PdfDocument.FromFile()` Cargar PDF
Argumentos de línea de comandos Métodos API nativos No se necesita CLI
Externo pdftotext.exe <código>pdf.ExtractAllText()` Extracción de texto
Externo <código>wkhtmltopdf.exe 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()` Marcas de agua
No es posible <código>pdf.SecuritySettings 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);
    }
}
$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!");
    }
}
$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}\""
    }
}
$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 });
    }
}
$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);
    }
}
$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}");
    }
}
$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ística Sumatra PDF IronPDF
Creación
HTML a PDF No
URL a PDF No
Texto a PDF No
Imagen a PDF No
Manipulación
Fusionar PDF No
Dividir PDF No
Girar páginas No
Eliminar páginas No
Reordenar páginas No
Contenido
Añadir marcas de agua No
Añadir encabezados/pies de página No
Texto del sello No
Imágenes de sellos No
Seguridad
Protección por contraseña No
Firmas digitales No
Cifrado No
Configuración de permisos No
Extracción
Extraer texto No
Extraer imágenes No
Plataforma
Windows
Linux No
macOS No
Aplicaciones web No
Azure/AWS No

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");
$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");
$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");
$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");
$vbLabelText   $csharpLabel

Lista de comprobación de la migración

Pre-Migración

  • Identificar todos los inicios de procesos de Sumatra ( Process.Start(&quot;SumatraPDF.exe&quot;, ...) )
  • Flujos de trabajo de impresión de documentos (argumentos -print-to-default )
  • Tenga en cuenta los argumentos de la línea de comandos de Sumatra utilizados
  • Obtenga la clave de licencia deIronPDFen ironpdf.com

Actualizaciones de código

  • Instalar el paquete NuGet IronPdf
  • Eliminar el código del proceso de Sumatra
  • Reemplace Process.Start(&quot;SumatraPDF.exe&quot;, pdfPath) con PdfDocument.FromFile(pdfPath)
  • Reemplace las llamadas externas wkhtmltopdf.exe con ChromePdfRenderer.RenderHtmlAsPdf()
  • Reemplace las llamadas externas pdftotext.exe con pdf.ExtractAllText()
  • Reemplace las llamadas al proceso -print-to-default con pdf.Print()
  • Agregar inicialización de licencia al iniciar la aplicación

Pruebas

  • Probar la calidad de generación de PDF
  • Verificar la funcionalidad de impresión
  • Prueba en todas las plataformas de destino
  • Verificar que no quede ninguna dependencia de Sumatra

Limpieza

  • Eliminar Sumatra de los instaladores
  • Actualización de la documentación
  • Eliminar Sumatra de los requisitos del sistema

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