使用IRONWORD

如何在C#中将Word转换为PDF

以编程方式转换文档已成为许多应用程序的基本功能。 特别是在商业领域,将 Word 文档转换为 PDF 文件是一项常规任务。 值得庆幸的是,通过 C# 和 Microsoft Interop,您可以将 Word 文件无缝转换为 PDF。 本教程将讨论使用 C# 编程将 Word 转换为 PDF 的过程;

先决条件

在深入研究代码以使用 C# 将 .DOCX 转换为 PDF 之前,确保您已设置好必要的环境是至关重要的。 以下是您需要具备的前提条件:

微软 Word 安装

请确保您的计算机上安装了 Microsoft Word。 Interop 服务将使用 Word 的内置功能来处理 Word 文档和 PDF 的转换。

Visual Studio

需要Visual Studio的一个版本来创建、编译和运行 C# 程序。 如果您还没有 Visual Studio,可以从微软的官方网站下载免费的社区版。

安装包Microsoft.Office.Interop.Word

本软件包对于为您的 C# 程序提供与 Word 文档交互的必要功能至关重要。 稍后将使用 NuGet 软件包管理器进行安装,但了解其在转换过程中的重要性是有好处的。

用于转换的 Word 文档

准备您想转换的Word文档或.docx文件。 确保您知道它在您机器上的路径,因为您需要在 C# 程序中指定它。

足够的权限

确保您可以读取 Word 文件,并将生成的 PDF 文件写入所需目录。 以管理员身份运行 Visual Studio 有时可以解决与权限相关的问题。

有了这些先决条件,您就可以设置环境并将 Word 文档转换为 PDF 文件了。

设置环境

  1. 打开您的 Visual Studio。

  2. 创建一个新的 C# 控制台应用程序。

  3. 转到NuGet 包管理器 > 为解决方案管理 NuGet 包

  4. 搜索“Microsoft.Office.Interop.Word”并安装它。 该软件包将使我们的应用程序能够与 Word 通信并转换 Word 文件。

    ![如何在C#中将Word转换为PDF:图1 - 打开Visual Studio并创建一个新的控制台应用程序项目。 转到 NuGet Package Manager > Manage Packages for Solution。 搜索 "Microsoft.Office.Interop.Word "并安装。 此软件包将帮助我们的控制台应用程序与Word进行交互并将Word文件转换为PDF。

将 Word 文档转换为 PDF 的示例代码

要使用 C# 将 Word 文档转换为 PDF,我们将利用 Microsoft Interop 服务的功能。 下面的代码片段完成了这一任务,接下来将进行详细解释。

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

代码解释

我们代码的开头包括两个重要的命名空间。 System命名空间提供了C#编程的基本类,它是几乎所有C#代码中的基础。

真正的操作从Main方法内部开始。 我们首先使用new Word.Application()创建Word应用程序的新实例。 这一步骤类似于启动 MS Word,但一切都在后台进行,用户看不到。 一旦应用实例初始化完毕,我们通过wordApp.Documents.Open方法指示其打开一个Word文档。 指定 Word 文档的路径而不是 "path_to_your_word_file.docx "至关重要。

现在,打开文档后,我们要确定 PDF 的保存位置。 这在output path变量中指定。 必须注意应根据您希望转换后的PDF文件保存的位置调整路径。

Word文档转换为PDF的魔力发生在这行代码 wordDocument.ExportAsFixedFormat(...)。 Interop 服务提供了一种内置方法,可以轻松实现转换。 该方法需要两个主要参数:保存 PDF 的路径和导出格式,在我们的例子中是 PDF。

在转换完成后,关闭我们使用过的资源是一个良好的习惯。因此,wordDocument.Close() 确保我们打开的文档已关闭,而 wordApp.Quit() 则确保我们在后台启动的 Word 应用程序实例被终止。

最后,我们的程序将通过简单的控制台消息向用户传达翻译结果。 Console.WriteLine() 方法提供反馈,表示转换过程成功执行。

因此,Microsoft.Office.Interop.Word 提供了一个合适的解决方案来处理和转换 Word 文档。

介绍 IronXL Interop 的高级替代品

虽然Microsoft.Office.Interop提供了文档转换的可行解决方案,但还有更高效且稳健的替代方案用于处理Excel:IronXL

IronXL 简化了在 C# 中处理 Excel 文件的过程。 它不仅在速度和易用性方面优于 Interop,而且无需像 Microsoft Office 那样进行额外安装。有兴趣进一步了解吗? 查看他们关于如何使用C#读取Excel文件的详细教程。

可在 NuGet 包管理器控制台中使用以下命令安装 IronXL 库:

Install-Package IronWord

如何在 C# 中将 Word 转换为 PDF:图 2 - IronXL for .Net:C# Excel 库

转换电子表格文件类型

using IronXL;
using System.IO;

// Import any XLSX, XLS, XLSM, XLTX, CSV and TSV
WorkBook workBook = WorkBook.Load("sample.xlsx");

// Export the excel file as 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");

// Export the excel file as Html, Html string
workBook.ExportToHtml("sample.html");
string htmlString = workBook.ExportToHtmlString();

// Export the excel file as Binary, Byte array, Data set, Stream
byte [] binary = workBook.ToBinary();
byte [] byteArray = workBook.ToByteArray();
System.Data.DataSet dataSet = workBook.ToDataSet(); // Allow easy integration with DataGrids, SQL and EF
Stream stream = workBook.ToStream();
using IronXL;
using System.IO;

// Import any XLSX, XLS, XLSM, XLTX, CSV and TSV
WorkBook workBook = WorkBook.Load("sample.xlsx");

// Export the excel file as 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");

// Export the excel file as Html, Html string
workBook.ExportToHtml("sample.html");
string htmlString = workBook.ExportToHtmlString();

// Export the excel file as Binary, Byte array, Data set, Stream
byte [] binary = workBook.ToBinary();
byte [] byteArray = workBook.ToByteArray();
System.Data.DataSet dataSet = workBook.ToDataSet(); // Allow easy integration with DataGrids, SQL and EF
Stream stream = workBook.ToStream();
Imports IronXL
Imports System.IO

' Import any XLSX, XLS, XLSM, XLTX, CSV and TSV
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")

' Export the excel file as 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")

' Export the excel file as Html, Html string
workBook.ExportToHtml("sample.html")
Dim htmlString As String = workBook.ExportToHtmlString()

' Export the excel file as Binary, Byte array, Data set, Stream
Dim binary() As Byte = workBook.ToBinary()
Dim byteArray() As Byte = workBook.ToByteArray()
Dim dataSet As System.Data.DataSet = workBook.ToDataSet() ' Allow easy integration with DataGrids, SQL and EF
Dim stream As Stream = workBook.ToStream()
$vbLabelText   $csharpLabel

如上面的示例代码所示,IronXL库可以帮助读取Excel文件,而无需使用Interop。您还可以使用IronXL库加载工作簿,并使用SaveAs方法将其导出为不同的格式,如XLS、XLSX、XLSM、CSV、TSV、JSON、XML。 它还允许在代码中直接导出 HTML 字符串、二进制文件、字节数组、数据集和内存流等数据类型。

结论

在当今的数字时代,文档转换,尤其是Word文档到PDF,已成为许多应用程序中不可或缺的一部分。 可以使用 C# 和 Microsoft Interop 提供的功能来实现这一目标。

然而,保持对像IronXL这样卓越工具的更新是必不可少的,这些工具提供了更高的性能并简化了流程。 如果您正在考虑尝试使用IronXL,他们提供免费试用。 一旦体验到其强大功能,许可费从合理的$749开始,提供您投资的价值,并确保在应用程序中顺畅地处理文档。

雷根·彭
软件工程师
Regan毕业于雷丁大学,拥有电子工程学士学位。在加入Iron Software之前,他的前工作职位要求他专注于单一任务;他在Iron Software最喜欢的是能进行多种工作,无论是增加销售价值、技术支持、产品开发还是营销。他喜欢了解开发人员如何使用Iron Software的库,并利用这些知识不断改进文档和开发产品。
< 前一页
C#编辑Word(代码示例开发教程)
下一步 >
C# 打开Word文档

准备开始了吗? 版本: 2025.5 刚刚发布

查看许可证 >