使用IRONWORD

如何在C#中將Word轉換為PDF

發佈 2023年11月13日
分享:

程式化地轉換文件已成為許多應用程式中的一項基本功能。 尤其是在商業世界中,將 Word 文件轉換為 PDF 文件是一項常規工作。 值得慶幸的是,使用 C# 和 Microsoft Interop,您可以無縫地將 Word 文件轉換為 PDF。 本教程將討論使用C#程式化將Word轉換為PDF的過程。

先決條件

在深入研究程式碼之前,使用 C# 將 .DOCX 轉換為 PDF確保已設置必要的環境是非常重要的。 以下是您需要的先決條件:

Microsoft Word 安裝

確保您的電腦上已安裝 Microsoft Word。 Interop 服務將使用 Word 的內建功能來處理 Word 文件和 PDF 轉換。

Visual Studio

版本的Visual Studio是創建、編譯和運行 C# 程式所必需的。 如果您還沒有 Visual Studio,可以從下載免費的社群版本,Microsoft 官方網站.

安裝套件 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 套件管理員 > 管理解決方案的套件。 搜索 Microsoft.Office.Interop.Word 並安裝它。 此套件將幫助我們的控制台應用程式與 Word 互動,並轉換 Word 文件。

將 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
VB   C#

程式碼說明

我們的程式碼開頭包含兩個重要的命名空間。 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()
VB   C#

如上面的範例代碼所示,IronXL 庫可以在不使用 Interop 的情況下幫助讀取 Excel 文件。您還可以進一步使用 IronXL 庫加載工作簿,並使用 SaveAs 方法將其導出為不同的格式,如 XLS、XLSX、XLSM、CSV、TSV、JSON、XML。 它還允許直接在程式碼中匯出資料類型,如 HTML 字串、二進位檔案、位元組陣列、資料集和記憶體流。

結論

在當今的數位時代,文件轉換,特別是Word文件轉換為PDF,已成為許多應用程式不可或缺的一部分。 這可以使用 C# 和 Microsoft Interop 提供的功能來實現。

但是,與諸如這樣的高級工具保持更新IronXL是必不可少的,它提供了更高的性能並簡化了過程。 如果您正在考慮試用IronXL,他們提供一個免費試用. 一旦您體驗到其強大功能,授權從合理的 $749 開始,為您的投資提供價值,並確保在您的應用程式中流暢的文件處理。

< 上一頁
C# 編輯 Word (代碼範例開發者教程)
下一個 >
C# 打開Word文件

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 8,594 查看許可證 >