IRONSOFTWAREHOME
USANDO IRONPDF

Cómo comparar dos archivos PDF en C# usando IronPDF

Curtis Chau
Curtis Chau
Updated: 12 de julio de 2026

Para mostrar archivos PDF de una base de datos en ASP.NET, recupere los datos binarios almacenados y representelos utilizando la clase PdfDocument de IronPDF , que maneja de manera eficiente matrices de bytes y brinda una salida compatible con el navegador con opciones de personalización.

¿Qué es la visualización de bases de datos PDF en ASP.NET?

La gestión de documentos PDF en aplicaciones ASP.NET a menudo implica almacenar archivos PDF directamente en una base de datos en lugar de en el sistema de archivos. Este método ofrece mayor seguridad, copia de seguridad centralizada e implementación simplificada. Sin embargo, recuperar y mostrar documentos PDF desde una base de datos puede ser desafiante sin las herramientas adecuadas.

Almacenar archivos PDF como datos binarios en una tabla de base de datos permite un mejor control sobre el acceso y la versión del documento. Cuando necesitas mostrar documentos PDF a los usuarios, debes recuperar eficientemente el arreglo de bytes desde la base de datos y renderizarlo en el navegador. IronPDF simplifica todo este proceso con una API eficaz para manejar documentos PDF en aplicaciones ASP.NET .

Este tutorial demuestra la funcionalidad de visualización de PDF ASP.NET desde una base de datos utilizando las características probadas de IronPDF. Aprenderá a crear una solución completa para cargar, almacenar y visualizar archivos PDF con un rendimiento y seguridad óptimos. La biblioteca admite varias opciones de renderizado y capacidades avanzadas de manipulación de PDF que facilitan la creación de sistemas de gestión de documentos de nivel de producción.

¿Cómo instalar la biblioteca PDF en su proyecto ASP.NET ?

Antes de implementar la funcionalidad de visualización de PDF, asegúrate de que tu proyecto ASP.NET tenga IronPDF instalado. Abra la Consola del Administrador de paquetes en Visual Studio y ejecute uno de los siguientes comandos según su preferencia de herramientas:

PM > Install-Package IronPdf

También puede instalar IronPDF a través de la interfaz de usuario NuGet Package Manager buscando IronPdf en la pestaña Examinar de su proyecto. Después de la instalación, configure su clave de licencia al iniciar la aplicación:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";

Una licencia de prueba gratuita le brinda acceso completo a todas las funciones durante la evaluación. Para implementaciones de producción, revise los niveles de licencia disponibles para encontrar una opción que se ajuste a la escala de su proyecto.

¿Qué estructura de base de datos se requiere?

La estructura de su tabla de base de datos necesita una columna varbinary(max) para almacenar archivos PDF como datos binarios. La tabla debe incluir campos de metadatos como nombre del archivo, fecha de carga y tamaño del archivo para una mejor gestión de documentos. El siguiente SQL crea una tabla adecuada para este escenario:

using IronPdf;
using System.Data.SqlClient;
using System.IO;
using System.Configuration;

Configure su cadena de conexión en el archivo web.config para establecer la conectividad con la base de datos. La implementación del visor de PDF utilizará esta conexión para recuperar archivos cargados desde la base de datos y mostrar el contenido PDF sin problemas.

¿Qué espacios de nombres requiere la solución?

La solución utiliza espacios de nombres ADO .NET estándar junto con el espacio de nombres IronPDF . No necesita ningún ORM de terceros: el enfoque directo de ADO .NET mantiene las dependencias mínimas y le brinda control total sobre la ejecución de las consultas. Asegúrese de que la cadena de conexión apunte a una instancia de SQL Server donde se encuentra su tabla de almacenamiento de PDF.

¿Cómo se crea una tabla de base de datos para archivos PDF?

Comienza creando una tabla de base de datos diseñada específicamente para almacenar documentos PDF. La estructura de la tabla debe acomodar tanto los datos binarios como los metadatos esenciales para administrar documentos PDF:

CREATE TABLE PdfDocuments (
    Id INT PRIMARY KEY IDENTITY(1,1),
    FileName NVARCHAR(255) NOT NULL,
    FileData VARBINARY(MAX) NOT NULL,
    ContentType NVARCHAR(100) DEFAULT 'application/pdf',
    FileSize INT,
    UploadDate DATETIME DEFAULT GETDATE(),
    CreatedBy NVARCHAR(100),
    LastModified DATETIME,
    DocumentVersion INT DEFAULT 1
);
Text

Esta tabla almacena cada archivo PDF como una matriz de bytes en la columna FileData. El tipo de datos varbinary(max) puede contener archivos de hasta 2 GB, suficiente para la mayoría de los documentos PDF. El campo FileName conserva el nombre original del archivo a efectos de visualización y descarga.

¿Cómo se puede mejorar el rendimiento de la base de datos para la recuperación de PDF?

Considera agregar índices en columnas consultadas con frecuencia para un mejor rendimiento al recuperar documentos PDF. El siguiente SQL crea índices en las columnas que tienen más probabilidades de aparecer en las cláusulas WHERE y ORDER BY:

CREATE INDEX IX_PdfDocuments_UploadDate
ON PdfDocuments(UploadDate DESC);

CREATE INDEX IX_PdfDocuments_FileName
ON PdfDocuments(FileName);
Text

Esta estructura asegura un almacenamiento y recuperación eficientes de los archivos cargados mientras mantiene la flexibilidad para agregar campos de metadatos adicionales según sea necesario. Para archivos PDF muy grandes, considere si el almacenamiento de base de datos es adecuado para su arquitectura o si un enfoque híbrido (almacenar archivos en disco o en almacenamiento de objetos y mantener solo los metadatos en la base de datos) funcionaría mejor a escala.

Comparación de estrategias de almacenamiento de PDF
EstrategiaMejor paraVentajasConsideraciones
Base de datos (VARBINARY)Archivos pequeños a medianos, alta seguridadConsistencia transaccional, respaldo centralizadoPuede aumentar el tamaño de la base de datos rápidamente
Sistema de archivosArchivos grandes, alto rendimientoE/S de archivos rápida, baja sobrecarga de base de datosRequiere una estrategia de respaldo independiente
Almacenamiento de objetos (Azure Blob/S3)Implementaciones en la nube, escala ilimitadaRentable y de alta disponibilidadDependencia adicional del SDK

¿Cómo cargar archivos PDF a una base de datos?

Implemente la funcionalidad de carga utilizando el control FileUpload de ASP.NET. Agregue este marcado HTML a su página .aspx dentro de un elemento de formulario con la validación adecuada:

<div class="pdf-upload-container">
    <asp:FileUpload ID="FileUpload1" runat="server" accept=".pdf" />
    <asp:Button ID="btnUpload" Text="Upload PDF"
                OnClick="btnUpload_Click" runat="server" CssClass="btn-primary" />
    <asp:Label ID="lblMessage" runat="server" CssClass="status-message" />
    <div class="file-info">
        <asp:Label ID="lblFileInfo" runat="server" />
    </div>
</div>
HTML

Ejemplo de interfaz de usuario

Interfaz de aplicación web ASP.NET que muestra un formulario de carga de PDF con el botón "Elegir archivo" y el botón "Cargar PDF", además de una sección vacía de Lista de documentos PDF debajo para la gestión de documentos

¿Cómo gestionar los eventos de carga de archivos?

El botón de carga activa el controlador de eventos del lado del servidor. Aquí está la implementación completa de la función de carga que convierte los archivos cargados en una matriz de bytes y los almacena con un manejo de errores adecuado:

protected void btnUpload_Click(object sender, EventArgs e)
{
    if (FileUpload1.HasFile && FileUpload1.PostedFile.ContentType == "application/pdf")
    {
        try
        {
            string fileName = FileUpload1.FileName;
            byte[] fileBytes = FileUpload1.FileBytes;
            int maxFileSize = 10 * 1024 * 1024; // 10MB limit

            if (fileBytes.Length > maxFileSize)
            {
                lblMessage.Text = "File size exceeds 10MB limit.";
                return;
            }

            // Validate PDF using IronPDF
            using (var stream = new MemoryStream(fileBytes))
            {
                var testPdf = new IronPdf.PdfDocument(stream);
                if (testPdf.PageCount == 0)
                {
                    lblMessage.Text = "Invalid PDF file.";
                    return;
                }
            }

            string constr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
            using (SqlConnection conn = new SqlConnection(constr))
            {
                string query = "INSERT INTO PdfDocuments (FileName, FileData, FileSize, CreatedBy) " +
                               "VALUES (@FileName, @FileData, @FileSize, @CreatedBy)";
                using (SqlCommand cmd = new SqlCommand(query, conn))
                {
                    cmd.Parameters.AddWithValue("@FileName", fileName);
                    cmd.Parameters.AddWithValue("@FileData", fileBytes);
                    cmd.Parameters.AddWithValue("@FileSize", fileBytes.Length);
                    cmd.Parameters.AddWithValue("@CreatedBy", User.Identity.Name ?? "Anonymous");

                    conn.Open();
                    cmd.ExecuteNonQuery();
                }
            }
            lblMessage.Text = "PDF document uploaded successfully!";
            lblFileInfo.Text = $"File: {fileName} ({fileBytes.Length / 1024}KB)";
            LoadPdfList();
        }
        catch (Exception ex)
        {
            lblMessage.Text = "Error uploading file: " + ex.Message;
        }
    }
    else
    {
        lblMessage.Text = "Please select a valid PDF file.";
    }
}

Este código valida el tipo de archivo antes de cargarlo, garantizando que solo se almacenen archivos PDF válidos en la base de datos. La conversión de matrices de bytes se realiza automáticamente a través de la propiedad FileBytes. La validación adicional incluye la verificación de la integridad del PDF y los límites de tamaño de archivo. Al usar IronPDF para abrir la matriz de bytes antes de guardar, se confirma que el archivo es un documento PDF genuino y analizable, no solo un archivo con una extensión renombrada.

UI con archivos cargados

Interfaz de aplicación web ASP.NET que muestra la funcionalidad de carga de PDF con un formulario de carga de archivos y una tabla que enumera los documentos PDF cargados con botones de acción de visualización y descarga para la gestión completa de documentos

¿Cómo recuperar y visualizar archivos PDF de la base de datos?

IronPDF sobresale en la representación de documentos PDF recuperados de una base de datos. La biblioteca proporciona múltiples opciones para mostrar contenido PDF en navegadores con capacidades de renderizado avanzadas. Primero, recupere los datos binarios de su tabla de base de datos, luego páselos a IronPDF para su procesamiento antes de transmitirlos de regreso al cliente:

private void LoadPdfList()
{
    string constr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
    using (SqlConnection conn = new SqlConnection(constr))
    {
        string query = @"SELECT Id, FileName, FileSize, UploadDate, CreatedBy
                        FROM PdfDocuments
                        ORDER BY UploadDate DESC";
        using (SqlCommand cmd = new SqlCommand(query, conn))
        {
            conn.Open();
            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            adapter.Fill(dt);

            foreach (DataRow row in dt.Rows)
            {
                int fileSize = Convert.ToInt32(row["FileSize"]);
                row["FileSize"] = FormatFileSize(fileSize);
            }

            GridView1.DataSource = dt;
            GridView1.DataBind();
        }
    }
}

private string FormatFileSize(int bytes)
{
    if (bytes < 1024) return bytes + " B";
    if (bytes < 1048576) return (bytes / 1024) + " KB";
    return (bytes / 1048576) + " MB";
}

private PdfData GetPdfFromDatabase(int id)
{
    byte[] pdfBytes = null;
    string filename = "";
    string constr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
    using (SqlConnection conn = new SqlConnection(constr))
    {
        string query = "SELECT FileData, FileName FROM PdfDocuments WHERE Id = @Id";
        using (SqlCommand cmd = new SqlCommand(query, conn))
        {
            cmd.Parameters.AddWithValue("@Id", id);
            conn.Open();
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                if (reader.Read())
                {
                    pdfBytes = (byte[])reader["FileData"];
                    filename = reader["FileName"].ToString();
                }
            }
        }
    }
    if (pdfBytes != null)
    {
        return new PdfData { Bytes = pdfBytes, FileName = filename };
    }
    return null;
}

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "ViewPdf")
    {
        int documentId = Convert.ToInt32(e.CommandArgument);
        ViewPdfDocument(documentId);
    }
    else if (e.CommandName == "DownloadPdf")
    {
        int documentId = Convert.ToInt32(e.CommandArgument);
        DownloadPdfDocument(documentId);
    }
}

private void ViewPdfDocument(int id)
{
    var pdfData = GetPdfFromDatabase(id);
    if (pdfData != null)
    {
        IronPdf.PdfDocument pdf;
        using (var stream = new System.IO.MemoryStream(pdfData.Bytes))
        {
            pdf = new IronPdf.PdfDocument(stream);
        }

        // Apply security settings
        pdf.SecuritySettings.AllowUserPrinting = true;
        pdf.SecuritySettings.AllowUserCopyPasteContent = false;

        Response.Clear();
        Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition", $"inline; filename={pdfData.FileName}");
        Response.AddHeader("content-length", pdf.BinaryData.Length.ToString());
        Response.BinaryWrite(pdf.BinaryData);
        Response.End();
    }
}

El método ViewPdfDocument envía el documento al cliente con la configuración de seguridad adecuada. La disposición de contenido inline indica al navegador que muestre el PDF en lugar de solicitar una descarga. Puede ajustar la configuración de seguridad, como los permisos de impresión y las restricciones de copiar y pegar, para que coincidan con los requisitos de su política de documentos.

¿Cómo se gestionan los parámetros de renderizado de PDF?

Los parámetros del comando SQL son cruciales para recuperar de forma segura un PDF específico mediante su clave principal. Las consultas parametrizadas evitan ataques de inyección SQL y garantizan una correcta vinculación de datos. Después de recuperar los datos binarios, IronPDF los carga desde un MemoryStream, dándole acceso completo al objeto documento para su posterior manipulación antes de enviarlo al navegador.

Ver un archivo PDF cargado

Interfaz de visor de PDF que muestra un documento titulado "¿Qué es un PDF?" con texto explicativo sobre el formato de documento portátil, mostrado al 100% de zoom con controles de navegación e indicadores de soporte multipágina

¿Qué funciones avanzadas puedes agregar a los archivos PDF antes de mostrarlos?

Las capacidades de manipulación de PDF de IronPDF se extienden más allá de la simple visualización. Puede manipular el documento PDF antes de renderizarlo con marcas de agua , encabezados y pies de página y firmas digitales :

// Add a confidentiality watermark before displaying
pdf.ApplyWatermark("<h2 style='color:red; font-family:Arial'>CONFIDENTIAL</h2>",
                   rotation: 30,
                   opacity: 50);

// Add page numbers in the footer
pdf.AddTextHeaders("{page} of {total-pages}",
                  IronPdf.Editing.TextHeaderFooter.DisplayLocation.BottomCenter);

// Add document metadata
pdf.MetaData.Author = "Your Application";
pdf.MetaData.ModifiedDate = DateTime.Now;

Visualización de PDF con marca de agua

Visor de PDF que muestra un documento sobre "¿Qué es un PDF?" con contenido de texto detallado y una marca de agua diagonal "CONFIDENCIAL" que demuestra las capacidades de marca de agua de IronPDF para la seguridad de los documentos

La marca de agua es especialmente útil cuando se muestran documentos que los usuarios deben ver pero no reproducir textualmente. También puede extraer texto del PDF antes de mostrarlo para crear índices de búsqueda o convertir páginas específicas en imágenes para generar miniaturas.

¿Por qué este enfoque funciona bien para aplicaciones de producción?

La combinación de ADO .NET con IronPDF proporciona un patrón sencillo que se adapta desde pequeñas herramientas internas a sistemas de gestión de documentos empresariales. El enfoque es completamente del lado del servidor: no se requiere una biblioteca de renderizado de PDF del lado del cliente y el visor de PDF integrado del navegador maneja la visualización una vez que se devuelve el tipo MIME correcto.

Los puntos fuertes de este patrón son:

  • Validación en el momento de la carga : IronPDF abre el archivo antes de que llegue a la base de datos, rechazando inmediatamente los archivos corruptos o que no son PDF.
  • Control de seguridad en el momento de la visualización : IronPDF aplica permisos como imprimir y copiar y pegar antes de que los bytes lleguen al navegador.
  • Código mínimo del lado del cliente : el navegador maneja la representación de forma nativa, lo que reduce la complejidad de JavaScript .
  • Preprocesamiento flexible : puede aplicar cadenas HTML a la conversión de PDF , fusionar documentos con operaciones de fusión y división , o agregar marcas de agua personalizadas antes de la transmisión, todo dentro del mismo método del lado del servidor.

¿Cómo gestiona la integración del navegador y las opciones de descarga?

Para una mejor integración web, utilice JavaScript para abrir documentos en una nueva pestaña en lugar de reemplazar la página actual. Esto ofrece a los usuarios una mejor experiencia al explorar una lista de documentos:

function openPdfInNewTab(documentId) {
    window.open('/PdfHandler.ashx?id=' + documentId, '_blank');
}

function openPdfInModal(documentId) {
    var modal = document.getElementById('pdfModal');
    var iframe = document.getElementById('pdfFrame');
    iframe.src = '/PdfHandler.ashx?id=' + documentId;
    modal.style.display = 'block';
}
JavaScript

La ruta de descarga sigue la misma lógica de recuperación de la base de datos, pero utiliza attachment en lugar de inline como disposición del contenido. Esto obliga al navegador a guardar el archivo en lugar de mostrarlo. Ambas rutas comparten el mismo GetPdfFromDatabase helper, manteniendo el código de acceso a datos DRY.

Para flujos de trabajo de documentos basados ​​en formularios, explore las capacidades de llenado de formularios PDF de IronPDF: puede completar previamente los campos del formulario antes de mostrar o descargar un documento, lo que resulta útil para la generación de facturas y escenarios de gestión de contratos.

¿Cuáles son las consideraciones de seguridad para la entrega de PDF?

Siempre valide que el usuario solicitante tenga permiso para acceder al ID del documento solicitado antes de servir los bytes. Un ID entero simple en una cadena de consulta es fácil de enumerar: sin verificaciones de autorización, cualquier usuario autenticado podría ver cualquier documento adivinando los ID.

Las mejores prácticas incluyen:

  • Almacene una columna CreatedBy o OwnerId y verifíquela con la identidad del usuario actual antes de consultar FileData.
  • Utilice GUID en lugar de números enteros secuenciales como identificadores de documentos para que la enumeración no sea práctica.
  • Aplique protección con contraseña de PDF en el momento de cargar documentos altamente confidenciales, de modo que el archivo en sí esté protegido incluso si se accede a él fuera de su aplicación.
  • Registra todos los eventos de visualización y descarga para registros de auditoría.

Para referencias externas sobre patrones de seguridad de ASP.NET , la Hoja de referencia de seguridad de ASP.NET de OWASP y las pautas de codificación segura de Microsoft para ASP.NET brindan orientación autorizada. La entrada de la galería NuGet para IronPDF también documenta el historial de versiones y las dependencias.

¿Cómo empezar a utilizar la visualización de bases de datos PDF?

Para implementar esta solución en su propio proyecto:

  1. Instale IronPDF a través de NuGet (Install-Package IronPdf o dotnet add package IronPdf).
  2. Cree la tabla PdfDocuments utilizando el esquema SQL anterior.
  3. Agregue el controlador de carga a su código subyacente .aspx.
  4. Agregue los controladores de vista y descarga que transmiten bytes a través de IronPDF.
  5. Conecte GridView con comandos de fila que apunten a los controladores.

Puede explorar el conjunto completo de funciones de IronPDF para descubrir capacidades adicionales como la conversión de HTML a PDF y la fusión y división de PDF que se adaptan naturalmente a los flujos de trabajo de gestión de documentos. Comience una prueba gratuita para probar la API completa antes de comprometerse con una licencia .

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 estructurados y visualmente atractivos.

...
Leer más

Artículos Relacionados

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Reserve su Demostración en Vivo gratuita
Booking Badge

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta