USO DE IRONWORD

Cómo convertir Word a PDF en C#

Actualizado 13 de noviembre, 2023
Compartir:

La conversión de documentos mediante programación se ha convertido en una función esencial en muchas aplicaciones. Especialmente en el mundo empresarial, convertir documentos de Word a archivos PDF es una tarea rutinaria. Afortunadamente, con C# y Microsoft Interop, puede convertir archivos Word a PDF sin problemas. Este tutorial discutirá el proceso de convertir Word a PDF mediante programación usando C#

Requisitos previos

Antes de entrar en el código para convertir .DOCX a PDF con C# Es fundamental contar con el entorno necesario. A continuación se indican los requisitos previos necesarios:

Instalación de Microsoft Word

Asegúrese de tener instalado Microsoft Word en su ordenador. Los servicios Interop utilizarán las funciones integradas de Word para gestionar la conversión de documentos Word y PDF.

Visual Studio

Una versión de Visual Studio es necesario para crear, compilar y ejecutar el programa C#. Si aún no tiene Visual Studio, puede descargar la versión comunitaria, que es gratuita, desde Sitio web oficial de Microsoft.

Instalar el paquete Microsoft.Office.Interop.Word.

Este paquete es esencial para proporcionar las funcionalidades necesarias para que su programa C# interactúe con documentos Word. Se instalará más tarde utilizando NuGet Package Manager, pero es bueno conocer su importancia en el proceso de conversión.

Documento Word para conversión

Prepare un documento Word o un archivo .docx que desee convertir. Asegúrese de conocer su ruta en su máquina, ya que tendrá que especificarla en el programa C#.

Permisos suficientes

Asegúrese de que puede leer el archivo Word y escribir el archivo PDF resultante en el directorio deseado. Ejecutar Visual Studio como administrador a veces puede resolver problemas relacionados con los permisos.

Con estos requisitos previos, podrá configurar su entorno y convertir sus documentos Word en archivos PDF.

Configuración del entorno

  1. Abra su Visual Studio.
  2. Cree una nueva aplicación de consola C#.
  3. Ir a NuGet Package Manager > Manage NuGet Packages for Solution.
  4. Busca "Microsoft.Office.Interop.Word" e instálalo. Este paquete permitirá a nuestra aplicación comunicarse con Word y convertir archivos Word.

    Cómo convertir Word a PDF en C#: Figura 1 - Abra Visual Studio y cree un nuevo proyecto de aplicación de consola. Ir a NuGet Package Manager > Administrar paquetes para la solución. Busque Microsoft.Office.Interop.Word e instálelo. Este paquete ayudará a nuestra aplicación de consola a interactuar con Word y también a convertir archivos Word.

Ejemplo de código para convertir un documento de Word a PDF

Para convertir un documento Word a PDF utilizando C#, emplearemos las capacidades de los servicios Microsoft Interop. El siguiente fragmento de código cumple esta tarea, y a continuación se ofrece una explicación detallada.

using System;
using Word = Microsoft.Office.Interop.Word;

class Program
{
    static void Main()
    {
        var wordApp = new Word.Application();
        var wordDocument = wordApp.Documents.Open(@"path_to_your_word_file.docx");

        var outputPath = @"path_where_you_want_to_save_pdf.pdf";
        wordDocument.ExportAsFixedFormat(outputPath, Word.WdExportFormat.wdExportFormatPDF);

        wordDocument.Close();
        wordApp.Quit();

        Console.WriteLine("Word document converted to PDF successfully!");
    }
}
using System;
using Word = Microsoft.Office.Interop.Word;

class Program
{
    static void Main()
    {
        var wordApp = new Word.Application();
        var wordDocument = wordApp.Documents.Open(@"path_to_your_word_file.docx");

        var outputPath = @"path_where_you_want_to_save_pdf.pdf";
        wordDocument.ExportAsFixedFormat(outputPath, Word.WdExportFormat.wdExportFormatPDF);

        wordDocument.Close();
        wordApp.Quit();

        Console.WriteLine("Word document converted to PDF successfully!");
    }
}
Imports System
Imports Word = Microsoft.Office.Interop.Word

Friend Class Program
	Shared Sub Main()
		Dim wordApp = New Word.Application()
		Dim wordDocument = wordApp.Documents.Open("path_to_your_word_file.docx")

		Dim outputPath = "path_where_you_want_to_save_pdf.pdf"
		wordDocument.ExportAsFixedFormat(outputPath, Word.WdExportFormat.wdExportFormatPDF)

		wordDocument.Close()
		wordApp.Quit()

		Console.WriteLine("Word document converted to PDF successfully!")
	End Sub
End Class
VB   C#

Código Explicación

El principio de nuestro código incluye dos namespaces vitales. El espacio de nombres System proporciona clases fundamentales para la programación en C#, y es un elemento básico en casi todo C#

La verdadera acción comienza dentro del método Main. Primero creamos una nueva instancia de la aplicación Word utilizando new Word.Application(). Este paso es similar al inicio de MS Word, pero todo sucede en segundo plano, sin que el usuario lo vea. Una vez inicializada la instancia de la aplicación, le indicamos que abra un documento de Word con el método wordApp.Documents.Open. Es crucial especificar la ruta a su documento de Word en lugar de "ruta a su archivo de Word.docx".

Ahora, teniendo el documento abierto, determinamos dónde queremos que se guarde nuestro PDF. Se especifica en la variable output path. Es esencial tener en cuenta que la ruta debe ajustarse al lugar donde desea que resida el archivo PDF de salida convertido.

La magia de convertir el documento Word a PDF ocurre con la línea wordDocument.ExportAsFixedFormat(...). Los servicios Interop proporcionan un método integrado que permite la conversión sin complicaciones. El método toma dos argumentos principales: la ruta donde debe guardarse el PDF y el formato de exportación, que en nuestro caso es PDF.

Tras la conversión, cerrar los recursos que hemos utilizado es una buena práctica. Así, wordDocument.Close() asegura que el documento que abrimos está cerrado, mientras que wordApp.Quit() asegura que la instancia de la aplicación Word que lanzamos en segundo plano se termina.

Por último, nuestro programa comunica el resultado al usuario con un simple mensaje de consola. El comando Console.WriteLine()El método proporciona información, indicando que el proceso de conversión se ha ejecutado correctamente.

Así, Microsoft.Office.Interop.Word proporciona una solución adecuada para manejar y convertir documentos de Word.

Presentación de IronXL Una alternativa superior a Interop

Mientras que Microsoft.Office.Interop proporciona una solución factible para la conversión de documentos, existe una alternativa más eficiente y robusta para trabajar con Excels: IronXL.

IronXL simplifica el proceso de manejo de archivos Excel en C#. No sólo supera a Interop en velocidad y facilidad de uso, sino que además no requiere instalaciones adicionales como Microsoft Office. ¿Quieres saber más? Consulte su tutorial detallado en cómo leer archivos Excel usando C#.

La librería IronXL puede instalarse utilizando el siguiente comando en la consola de NuGet Package Manager:

Install-Package IronWord

Cómo convertir Word a PDF en C#: Figura 2 - IronXL para .Net: La librería Excel en C#

Convertir tipos de archivos de hoja de cálculo

using IronXL;
using System.IO;

//  Importe cualquier archivo XLSX, XLS, XLSM, XLTX, CSV y TSV
WorkBook workBook = WorkBook.Load("sample.xlsx");

//  Exportar el archivo excel como XLS, XLSX, XLSM, CSV, TSV, JSON, XML
workBook.SaveAs("sample.xls");
workBook.SaveAs("sample.xlsx");
workBook.SaveAs("sample.tsv");
workBook.SaveAsCsv("sample.csv");
workBook.SaveAsJson("sample.json");
workBook.SaveAsXml("sample.xml");

//  Exportar el archivo excel como Html, cadena Html
workBook.ExportToHtml("sample.html");
string htmlString = workBook.ExportToHtmlString();

//  Exportar el archivo excel como Binario, Matriz de bytes, Conjunto de datos, Flujo
byte [] binary = workBook.ToBinary();
byte [] byteArray = workBook.ToByteArray();
System.Data.DataSet dataSet = workBook.ToDataSet(); //  Permite una fácil integración con DataGrids, SQL y EF
Stream stream = workBook.ToStream();
using IronXL;
using System.IO;

//  Importe cualquier archivo XLSX, XLS, XLSM, XLTX, CSV y TSV
WorkBook workBook = WorkBook.Load("sample.xlsx");

//  Exportar el archivo excel como XLS, XLSX, XLSM, CSV, TSV, JSON, XML
workBook.SaveAs("sample.xls");
workBook.SaveAs("sample.xlsx");
workBook.SaveAs("sample.tsv");
workBook.SaveAsCsv("sample.csv");
workBook.SaveAsJson("sample.json");
workBook.SaveAsXml("sample.xml");

//  Exportar el archivo excel como Html, cadena Html
workBook.ExportToHtml("sample.html");
string htmlString = workBook.ExportToHtmlString();

//  Exportar el archivo excel como Binario, Matriz de bytes, Conjunto de datos, Flujo
byte [] binary = workBook.ToBinary();
byte [] byteArray = workBook.ToByteArray();
System.Data.DataSet dataSet = workBook.ToDataSet(); //  Permite una fácil integración con DataGrids, SQL y EF
Stream stream = workBook.ToStream();
Imports IronXL
Imports System.IO

'  Importe cualquier archivo XLSX, XLS, XLSM, XLTX, CSV y TSV
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")

'  Exportar el archivo excel como XLS, XLSX, XLSM, CSV, TSV, JSON, XML
workBook.SaveAs("sample.xls")
workBook.SaveAs("sample.xlsx")
workBook.SaveAs("sample.tsv")
workBook.SaveAsCsv("sample.csv")
workBook.SaveAsJson("sample.json")
workBook.SaveAsXml("sample.xml")

'  Exportar el archivo excel como Html, cadena Html
workBook.ExportToHtml("sample.html")
Dim htmlString As String = workBook.ExportToHtmlString()

'  Exportar el archivo excel como Binario, Matriz de bytes, Conjunto de datos, Flujo
Dim binary() As Byte = workBook.ToBinary()
Dim byteArray() As Byte = workBook.ToByteArray()
Dim dataSet As System.Data.DataSet = workBook.ToDataSet() '  Permite una fácil integración con DataGrids, SQL y EF
Dim stream As Stream = workBook.ToStream()
VB   C#

Como se muestra en el código de ejemplo anterior, la biblioteca IronXL ayuda a leer archivos de Excel sin utilizar Interop. Además, puede utilizar la biblioteca IronXL para cargar su libro y exportarlo con el método SaveAs a diferentes formatos como XLS, XLSX, XLSM, CSV, TSV, JSON, XML. También permite exportar tipos de datos como cadenas HTML, binarios, matrices de bytes, conjuntos de datos y flujos de memoria directamente en el código.

Conclusión

En la era digital actual, las conversiones de documentos, especialmente de documentos Word a PDF, se han vuelto indispensables para muchas aplicaciones. Esto se puede conseguir utilizando C# y las posibilidades que ofrece Microsoft Interop.

Sin embargo, mantenerse al día con herramientas superiores como IronXL que ofrece un mayor rendimiento y simplifica el proceso. Si estás pensando en probar IronXL, ofrecen un prueba gratuita. Una vez que haya experimentado su destreza, la licencia comienza a partir de un razonable $599, lo que proporciona valor a su inversión y garantiza un manejo fluido de los documentos en sus aplicaciones.

< ANTERIOR
C# Editar Word (Tutorial de código de ejemplo para desarrolladores)
SIGUIENTE >
C# Abrir Documento Word

¿Listo para empezar? Versión: 2024.7 recién publicada

Descarga gratuita de NuGet Descargas totales: 3,031 Ver licencias >
123