首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# WinForm 內嵌顯示 PDF:使用 Adobe PDF Reader COM 元件完整步驟

     編輯:關於C語言

在 WinForm 應用程式中直接顯示 PDF 檔案,最簡單的方式是使用 Adobe Acrobat 提供的 ActiveX 控制項 AxAcroPDF。本文說明從工具箱加入元件到程式碼開啟檔案的完整流程。

步驟 1:加入 Adobe PDF Reader COM 元件

  1. 開啟 WinForm 設計介面,展開 工具箱。
  2. 在工具箱空白處右鍵 → 選擇 選擇項目...。
  3. 切換至 COM 元件 索引標籤。
  4. 勾選 Adobe PDF Reader(或 Adobe Acrobat Browser Control Type Library 1.0)。
  5. 點擊 確定,工具箱將出現 AxAcroPDF 控制項圖示。

前提條件: 開發機與使用者電腦皆需安裝 Adobe Acrobat Reader DC 或更新版本。

步驟 2:拖曳控制項至表單

從工具箱將 AxAcroPDF 拉到表單上,Visual Studio 會自動產生 AxAcroPDFLib 與 AcroPDFLib 參考,並在表單上建立名為 axAcroPDF1 的控制項實例。

步驟 3:程式碼開啟並顯示 PDF

private void btnOpenPdf_Click(object sender, EventArgs e)
{
    using (var ofd = new OpenFileDialog())
    {
        ofd.Filter = "PDF 檔案|*.pdf";
        ofd.Title = "選擇要開啟的 PDF 檔案";

        if (ofd.ShowDialog() == DialogResult.OK)
        {
            try
            {
                // 方法一:直接指定 src 屬性(支援本機路徑與 URL)
                axAcroPDF1.src = ofd.FileName;

                // 方法二:使用 LoadFile(僅限本機檔案,較舊版本相容)
                // axAcroPDF1.LoadFile(ofd.FileName);
            }
            catch (Exception ex)
            {
                MessageBox.Show($"開啟 PDF 失敗:{ex.Message}", "錯誤",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}

常見問題與解決方案

問題原因解決方式
工具箱找不到 Adobe PDF Reader電腦未安裝 Acrobat Reader,或版本不支援 ActiveX安裝最新版 Adobe Acrobat Reader DC;或改用純 .NET 程式庫(如 PdfiumViewer、PdfSharp)
部署後客戶端顯示「無法建立 ActiveX 元件」客戶端未安裝 Reader,或註冊表遺漏安裝部署專案加入 Reader 必要條件;或改用無相依性的 .NET PDF 檢視器
PDF 顯示空白/灰底檔案路徑含中文/特殊字元、或檔案損毀使用 Uri.EscapeDataString 處理路徑;嘗試 LoadFile 方法
高 DPI 螢幕模糊ActiveX 控制項不支援 Per-Monitor DPI在 app.manifest 設定 dpiAware;或改用 WPF + PdfiumViewer
無法列印/另存新檔控制項預設工具列可能被隱藏設定 axAcroPDF1.setShowToolbar(true) 顯示工具列

進階控制技巧

// 設定檢視模式
axAcroPDF1.setView("FitH");      // 適合寬度
axAcroPDF1.setView("FitV");      // 適合高度
axAcroPDF1.setView("Fit");       // 適合頁面
axAcroPDF1.setZoom(100);         // 100% 縮放

// 隱藏/顯示工具列
axAcroPDF1.setShowToolbar(false);

// 取得總頁數
int pageCount = axAcroPDF1.getPageCount();

// 跳轉頁碼
axAcroPDF1.setCurrentPage(5); // 0-based 索引

// 列印(需使用者確認)
axAcroPDF1.printWithDialog();

// 關閉檔案釋放資源
axAcroPDF1.src = "";

替代方案建議

若專案需跨平台、無相依性、或支援高 DPI/觸控,建議改用純 .NET 程式庫:

  • PdfiumViewer:基於 Chrome PDFium 引擎,渲染品質高、支援文字選取、列印、無外部相依。
  • PdfSharp/WPF:配合 PdfSharp.WPF 在 WPF 中原生顯示,適合新專案。
  • Syncfusion PDF Viewer、Telerik PDF Viewer:商用元件庫,功能完整、技術支援佳。

掌握 AxAcroPDF 基本用法可快速滿足簡單需求;長期專案建評估現代 .NET PDF 檢視器以獲得更好體驗與維護性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved