使用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 並創建一個新的 Console App 專案。轉到 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 文件。替換 "path_to_your_word_file.docx" 為你的 Word 文件路徑是至關重要的。

現在,打開文檔後,我們確定將 PDF 保存在哪裡。這在 output path 變量中指定。需要注意的是,應該將路徑調整到你希望轉換後的 PDF 文件 所在的位置。

Word 文件轉換為 PDF 的魔法在這行 wordDocument.ExportAsFixedFormat 中發生。(...)`. 互操作服務提供了一種內建方法,能夠輕鬆地轉換。該方法需要兩個主要參數:PDF 保存的路徑和導出格式,在我們的例子中是 PDF。

在轉換之後,關閉我們使用的資源是一個好習慣。因此,wordDocument.Close()確保我們打開的文件現在已關閉,同時wordApp.Quit()確保我們在背景中啟動的 Word 應用程式實例被終止。

最後,我們的程序會透過簡單的控制台訊息向使用者傳達結果。Console.WriteLine() method 提供了反饋,表示轉換過程成功執行。

因此,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.10 剛剛發布

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