Abrir un archivo PDF en C#

Syed Hassan Sabeeh Kazmi 12 octubre 2023
  1. Utilice el método Process.Start() para abrir un archivo PDF en C#
  2. Utilice el visor DynamicPDF para abrir un archivo PDF en C#
  3. Utilice el PdfDocument para abrir un archivo PDF en C#
  4. Utilice la instancia System.IO.Stream para abrir un archivo PDF en C#
  5. Utilice el paquete NuGet iTextSharp para abrir un archivo PDF en C#
  6. Utilice el PdfViewer de la caja de herramientas para abrir un archivo PDF en C#
Abrir un archivo PDF en C#

Este tutorial le enseñará cómo abrir un archivo PDF dentro de Windows Form usando C#. Hay seis formas posibles de acceder a un archivo de formato de documento portátil con programación C# para sus aplicaciones de Windows.

Cada método está organizado en función del conocimiento básico del usuario sobre programación C# y controles GUI. Puede comprender y aprender estas diferentes formas sin ningún conocimiento previo de programación con los ejemplos ejecutables de C#.

Debe saber que no hay soporte directo para generar un archivo PDF en C#; en su lugar, puede usar bibliotecas o herramientas de terceros para generar un archivo. El PDFSharp es un ejemplo que permite que sus aplicaciones de Windows utilicen rutinas de dibujo conocidas de GDI+ publicadas bajo la licencia MIT.

Utilice el método Process.Start() para abrir un archivo PDF en C#

El método System.Diagnostics.Process.Start() en C# funciona como un archivo PDF predeterminado del sistema u otro visor de documentos. Un problema común que tienen muchos principiantes con este enfoque es la ruta del archivo.

Si necesita una ruta relativa del archivo .exe del programa a una carpeta con recursos, agregue Recursos\ o ...\Recursos\ a la ruta de su archivo. De lo contrario, puede agregar sus archivos PDF a un proyecto de C# como un recurso incrustado usando Path.GetTempPath() guardándolo en alguna ubicación temporal y abriéndolo.

using System;
using System.Diagnostics;  // essential namespace
using System.Windows.Forms;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      /* alternative approach

      ProcessStartInfo file_info = new ProcessStartInfo();
      file_info.FileName = "report.pdf";
      string _path = @"C:\Users\DELL"; // file path
      file_info.Arguments = _path;
      Process.Start(file_info);

       */

      Process.Start(@"C:\Users\DELL\report.pdf");
    }
  }
}

Producción:

Inicio del proceso

Pertenece al espacio de nombres System.Diagnostics, que también contiene la definición de ProcessStartInfo. Tiene diferentes parámetros, que incluyen: nombre de archivo, argumentos, nombre de usuario, contraseña y dominio para acceder a los archivos, incluidos los PDF.

Utilice el visor DynamicPDF para abrir un archivo PDF en C#

El visor DynamicPDF es una poderosa herramienta para .NET dentro de las aplicaciones de Windows para acceder a un PDF usando un archivo, una matriz de bytes o un archivo protegido con contraseña o abrir un PDF usando un Stream. Los ejemplos de este método explicarán cómo puede utilizar el visor DynamicPDF para acceder o abrir archivos .pdf.

Instale este visor utilizando el instalador MSI proporcionado por DynamicPDF y agregue el control DynamicPDFViewer a su caja de herramientas de Visual Studio después de una instalación exitosa. Ahora, es una opción válida acceder a la caja de herramientas para agregar un control DynamicPDFViewer a sus Windows Forms.

Es una herramienta premium con funciones personalizables para mejorar el rendimiento de sus aplicaciones C#. Puede integrar completamente este visor en cualquier aplicación WinForm .NET para que ya no dependa de un visor externo para mostrar o interactuar con sus documentos y pueda aprovechar su alta eficiencia, confiabilidad y compatibilidad.

using System;
using System.Windows.Forms;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      pdfViewer1.Open(@"C:\Users\DELL\report.pdf");
    }

    private void pdfViewer1_Click(object sender, EventArgs e) {}
  }
}

Producción:

PDF dinámico

Puede instalarlo como un paquete NuGet en Visual Studio con el nombre ceTe.DynamicPDF.Viewer.NET. Las versiones x64 y x86 de esta herramienta están disponibles, instálela y ponga su referencia a su proyecto C# para abrir archivos PDF de manera más eficiente.

Utilice el PdfDocument para abrir un archivo PDF en C#

El método Abrir es extremadamente simple y famoso cuando se trata de abrir un archivo PDF en C# con algo como pdfViewer.Open(pdf_path); y en caso de que desee abrir un PDF directamente desde una matriz de bytes que requiera que cree una instancia de pdfDocument para pasar la matriz de bytes a un constructor, puede usar el método Abrir.

Pase la instancia de pdfDocument al control Viewer que creó usando el método Open como pdfDocument pdf_doc = new pdfDocument(pdf_file); y puede ejecutarlo utilizando el método Abrir pdfViewer.Open(pdf_doc);.

Lo que es más importante, para los archivos PDF protegidos con contraseña, debe pasar la contraseña junto con la ruta del archivo al constructor como pdfDocument pdf_doc = new pdfDocument(pdf_path, "my_password123"); y use el método Abrir para pasar esta instancia a su control de visor DynamicPDF.

using System;
using System.Windows.Forms;
using ceTe.DynamicPDF.Viewer;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      PdfDocument file_pdf =
          new PdfDocument(data_pdf);  // `data_pdf` contains the byte array info of pdf file
      pdfViewer1.Open(file_pdf);
    }

    private void pdfViewer1_Click(object sender, EventArgs e) {}
  }
}

Cuando hace clic en el botón Abrir, el archivo PDF se abre desde la matriz de bytes en el Visor DynamicPDF incrustado en Windows Form.

Abrir un archivo PDF protegido con contraseña es tan simple como abrir un archivo PDF desde la matriz de bytes creando una instancia de PdfDocument y pasando la ruta del archivo y la contraseña al constructor.

Como el PDF está encriptado y protegido con contraseña, pasará la instancia de PdfDocument a su pdfViewer1 utilizando el método Open().

using System;
using System.Windows.Forms;
using ceTe.DynamicPDF.Viewer;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      PdfDocument file_pdf = new PdfDocument(
          @"C:\Users\DELL\report.pdf", "password");  // first string is the path, and the second
                                                     // string is the password on that pdf file
      pdfViewer1.Open(file_pdf);
    }

    private void pdfViewer1_Click(object sender, EventArgs e) {}
  }
}

Producción:

PdfDocumento contraseña

Utilice la instancia System.IO.Stream para abrir un archivo PDF en C#

Es posible usar la instancia System.IO.Stream directamente para realizar esta tarea con el método Open. Requiere crear una instancia de pdfDocument desde Stream, algo así como pdfDocument pdf_doc = new pdfDocument(pdf_stream);.

using System;
using System.Windows.Forms;
using ceTe.DynamicPDF.Viewer;
using System.IO;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      /* perform some stream operation to get `pdf_stream`

      string dictionary_start = @"C:\Users\DELL\";
      string dictionary_end = @"C:\Users\DELL\edvdd";

      foreach (string info_file in Directory.EnumerateFiles(dictionary_start))
      {
          using (FileStream SourceStream = File.Open(info_file, FileMode.Open))
          {
              using (FileStream DestinationStream = File.Create(dictionary_end +
      info_file.Substring(info_file.LastIndexOf('\\'))))
              {
                  await SourceStream.CopyToAsync(DestinationStream);
              }
          }
      }

      */

      PdfDocument file_pdf =
          new PdfDocument(pdf_stream);  // `pdf_stream` contains the pdf path directly from the
                                        // `System.IO.Strem` instance
      pdfViewer1.Open(file_pdf);
    }

    private void pdfViewer1_Click(object sender, EventArgs e) {}
  }
}

Cuando hace clic en el botón Abrir, el archivo PDF se abre desde la transmisión en el visor pdfViewer1 DynamicPDF incrustado en Windows Form.

Utilice el paquete NuGet iTextSharp para abrir un archivo PDF en C#

Cree un nuevo proyecto C# (aplicación Windows Form C#) en Visual Studio e instale la versión del paquete NuGet iTextSharp v5.5.11 o la versión actualizada.

Es una biblioteca importante porque ofrece funciones como CREAR, INSERTAR, ADAPTAR y MANTENER documentos en PDF, lo que le permite agregar todas las funciones posibles de .pdf a su proyecto C#.

Diseñe su formulario con un botón y use el espacio de nombres iTextSharp.text.pdf.parser para manejar su formulario. Como biblioteca de herramientas avanzadas, lo ayudará a crear informes PDF complejos y mejorar su aplicación con la funcionalidad PDF.

using System;
using System.Windows.Forms;
using iTextSharp.text.pdf.parser;  // essential namespace
using System.Text;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      using (OpenFileDialog dialog_pdffile =
                 new OpenFileDialog() { Filter = "PDF files|*.pdf", ValidateNames = true,
                                        Multiselect = false }) {
        if (dialog_pdffile.ShowDialog() == DialogResult.OK) {
          try {
            iTextSharp.text.pdf.PdfReader file_proc =
                new iTextSharp.text.pdf.PdfReader(dialog_pdffile.FileName);
            StringBuilder build_string = new StringBuilder();
            for (int i = 1; i <= file_proc.NumberOfPages; i++) {
              // read the pdf document
              build_string.Append(PdfTextExtractor.GetTextFromPage(file_proc, i));
            }
            richTextBox1.Text = build_string.ToString();
            file_proc.Close();
          } catch (Exception ex) {
            MessageBox.Show(ex.Message, "Caution, Error occurs!", MessageBoxButtons.OK,
                            MessageBoxIcon.Error);
          }
        }
      }
    }

    private void richTextBox1_TextChanged(object sender, EventArgs e) {}
  }
}

Producción:

iTextSharp

Utilice el PdfViewer de la caja de herramientas para abrir un archivo PDF en C#

En este método, aprenderá cómo abrir un archivo PDF usando WinForms PDF Viewer en C# y qué ensamblajes se requieren para crear una aplicación de C# de visor de PDF simple.

El Patagames.pdf es un ensamblaje principal que contiene una biblioteca de clases para crear, editar y cargar archivos PDF, también el motor de procesamiento de PDF.

El ensamblado Patagames.Pdf.WinForms contiene el PdfViewer UserControl y otros controles de interfaz de usuario para el visor de PDF, y estos son los únicos dos ensamblados necesarios para este visor WinForms .pdf.

Crear el control manualmente a partir del código es un proceso complejo con muchos beneficios. Le permite crear un visor de PDF simplemente arrastrando el control desde la caja de herramientas de VS y soltándolo en la ventana del diseñador de su formulario C#. Navegue por la pestaña SDK Patagames Pdf.Net y arrastre el elemento de la caja de herramientas PdfViewer a la ventana del Diseñador.

Recuerde, pdfViewer no contiene ningún elemento de interfaz de usuario y todas las funcionalidades cruciales están disponibles a través de métodos públicos.

Después de agregar la instancia al diseñador, puede cargar el documento en pdfViewerControl con algo como pdfViewer1.LoadDocument("file_name.pdf");.

using System;
using System.Windows.Forms;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      pdfViewer1.LoadDocument(@"C:\Users\DELL\Resumed.pdf");
    }

    private void pdfViewer1_Load(object sender, EventArgs e) {}
  }
}

Producción:

visor de pdf

Otro enfoque que puede usar con la ayuda de esta pestaña SDK es abrir un documento PDF usando las propiedades navegando en la pestaña Patagames Pdf.Net SDK y arrastrando el elemento de la caja de herramientas PdfToolStripMain a la ventana del diseñador para agregar su instancia al diseñador. archivo .cs.

Luego, haga clic en la propiedad PdfViewer en la cuadrícula de propiedades y seleccione pdfViewer1 de la lista desplegable. Ahora puede cargar o agregar documentos PDF haciendo clic en el icono Abrir.

Como estamos discutiendo eventos de clic de botón, puede agregar manualmente los controles desde el código C# agregando referencias de espacios de nombres de ensamblajes, creando una instancia de pdfViewer y cargando el archivo PDF. En el evento de clic del botón, inicialice el PdfViewerControl, cargue el documento y agréguelo al formulario.

El visor de PDF Spire es una alternativa válida al visor de PDF Patagames para simplemente abrir los archivos PDF en C#. Descargue el Spire.PDFViewer, agregue un script de herramienta en su formulario de Windows y agregue la referencia Spire.PdfViewer.Forms a su proyecto C# para cargar directamente los archivos PDF desde el sistema o elegir un archivo PDF desde un cuadro de diálogo desde tu computadora.

En este tutorial, aprendió cómo abrir un PDF o cualquier otro archivo en C# utilizando los métodos más efectivos para mantener el rendimiento.

Syed Hassan Sabeeh Kazmi avatar Syed Hassan Sabeeh Kazmi avatar

Hassan is a Software Engineer with a well-developed set of programming skills. He uses his knowledge and writing capabilities to produce interesting-to-read technical articles.

GitHub

Artículo relacionado - Csharp PDF