IRONSOFTWAREHOME
使用IRONPDF

如何在 ASP.NET Core 檢視器中顯示、保存和列印 PDF

Curtis Chau
Curtis Chau
Updated: 2026年7月5日

PDF文件在自動化測試中帶來了獨特的挑戰:雖然Selenium WebDriver在與網頁元素互動方面表現出色,但它無法讀取PDF中的內容,因為文件被呈現為二進制流而非DOM元素。 本文介紹如何通過搭配Selenium與IronPDF來解決這個問題,這是一個生產就緒的.NET PDF程式庫,允許您通過幾行程式碼提取、驗證和處理PDF內容——不需要複雜的Java風格依賴管理。

如何使用IronPDF在Selenium WebDriver C#中讀取PDF文件:圖1 - IronPDF

為什麼Selenium無法處理PDF內容?

當PDF在瀏覽器中打開時,Selenium可以導航到該頁面並與瀏覽器控件互動,但無法查詢文件中的文字或資料。 PDF被作為嵌入物件或插件呈現,而不是WebDriver協定可以遍歷的HTML元素。 瀏覽器的PDF查看器在視覺上呈現文件,但沒有可供Selenium檢查的DOM——每個XPath查詢或CSS選擇器均無返回。

傳統的解決方案需要下載文件到磁盤,調用獨立的解析庫,並手動拼接所有內容。 這一多步驟過程增加了複雜性,建立了脆弱的測試程式碼,並使CI/CD管道中難以控制的文件路徑和權限變得更為複雜。 IronPDF通過讓您從URL或本地路徑載入PDF並在一次調用中提取其文字來消除所有這些步驟——直接在您現有的.NET測試專案中,無需中間文件或配置。

實際結果是測試程式碼變得更短、更易於閱讀,並且在測試環境改變時更不容易損壞。 要對IronPDF所能做的一切有更廣泛的了解,可以存取IronPDF文件中心

如何使用IronPDF在Selenium WebDriver C#中讀取PDF文件:圖2 - 功能

如何安裝IronPDF以進行Selenium測試?

準備所需的套件不需要超過一分鐘。 在Visual Studio中打開套件管理器控制台並運行:

PM > Install-Package IronPdf

如果您的專案中尚未包含Selenium套件,您還需要這些套件:

Install-Package Selenium.WebDriver
Install-Package Selenium.WebDriver.ChromeDriver
SHELL

如何使用IronPDF在Selenium WebDriver C#中讀取PDF文件:圖3 - 安裝

一旦安裝了套件,請在您的測試文件頂部新增以下using指示。

using IronPdf;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System.IO;

IronPDF針對.NET 10,並能在Windows、Linux和macOS跨平台運行,因此相同的測試程式碼在每個環境中都能運行——包括Docker容器和雲端CI代理。

如何使用IronPDF在Selenium WebDriver C#中讀取PDF文件:圖4 - 如何在Selenium WebDriver C#中讀取PDF文件 - IronPDF

第一步:
arrow pointer

如何直接從URL讀取PDF?

從URL讀取PDF內容完全跳過了下載步驟。 Selenium定位連結,IronPDF載入文件,然後您僅用幾行程式碼就能獲得全文,以便進行斷言。

// Initialize Chrome driver
var driver = new ChromeDriver();

// Navigate to a webpage containing a PDF link
driver.Navigate().GoToUrl("https://ironpdf.com/");

// Find and capture the PDF URL
IWebElement pdfLink = driver.FindElement(By.CssSelector("a[href$='.pdf']"));
string pdfUrl = pdfLink.GetAttribute("href");

// Load the PDF directly from the URL -- no download needed
var pdf = PdfDocument.FromUrl(new Uri(pdfUrl));
string extractedText = pdf.ExtractAllText();

// Assert expected content
if (extractedText.Contains("IronPDF"))
{
    Console.WriteLine("PDF validation passed!");
}

driver.Quit();

PdfDocument.FromUrl()在記憶體中抓取並解析文件。 ExtractAllText()調用返回每頁的所有文字作為單字串,準備好進行斷言。 對於受密碼保護的文件,請將憑證作為附加參數,以便在測試過程中存取受保護的文件。 要了解更多關於文字提取的選項,請參見IronPDF文字提取指南

輸出

如何使用IronPDF在Selenium WebDriver C#中讀取PDF文件:圖5 - 控制台輸出

如何自動下載和處理PDF?

當PDF在身份驗證後生成或通過動態工作流程生成時,首先下載它可能是唯一的選擇。 將Chrome配置為自動下載PDF到已知目錄,然後將文件路徑交給IronPDF:

// Configure Chrome to auto-download PDFs
var chromeOptions = new ChromeOptions();
chromeOptions.AddUserProfilePreference("download.default_directory", @"C:\PDFTests");
chromeOptions.AddUserProfilePreference("plugins.always_open_pdf_externally", true);

var driver = new ChromeDriver(chromeOptions);
string appUrl = "https://example.com/reports";

// Trigger the download
driver.Navigate().GoToUrl(appUrl);
driver.FindElement(By.Id("downloadReport")).Click();

// Wait for the download -- replace Thread.Sleep with a file-system watcher in production tests
System.Threading.Thread.Sleep(3000);

// Read the downloaded PDF
string pdfPath = @"C:\PDFTests\report.pdf";
var pdf = PdfDocument.FromFile(pdfPath);
string content = pdf.ExtractAllText();

// Validate specific data
bool hasExpectedData = content.Contains("Quarterly Revenue: $1.2M");
Console.WriteLine($"Revenue data found: {hasExpectedData}");

// Extract text from a specific page (zero-indexed)
string page2Content = pdf.ExtractTextFromPage(1);

// Clean up
File.Delete(pdfPath);
driver.Quit();

plugins.always_open_pdf_externally偏好設置繞過Chrome的內建PDF查看器,因此文件將落地而非在瀏覽器中打開。 ExtractTextFromPage()為您提供頁面級精度,當報告的不同頁面中出現不同的驗證資料時尤為有用。 要有效處理大文件,請查看IronPDF性能提示

如何在自動化測試中驗證PDF內容?

檢查文件包含正確的術語是最常見的測試場景。 以下輔助方法接受文件路徑和所需術語的陣列,然後一旦缺少預期的術語就返回false

bool ValidatePdfContent(string pdfPath, string[] expectedTerms)
{
    var pdf = PdfDocument.FromFile(pdfPath);
    string fullText = pdf.ExtractAllText();

    // Verify each required term
    foreach (string term in expectedTerms)
    {
        if (!fullText.Contains(term, StringComparison.OrdinalIgnoreCase))
        {
            Console.WriteLine($"Missing expected term: {term}");
            return false;
        }
    }

    // Validate first-page structure
    if (pdf.PageCount > 0)
    {
        string firstPageText = pdf.ExtractTextFromPage(0);
        if (!firstPageText.Contains("Invoice #") && !firstPageText.Contains("Date:"))
        {
            Console.WriteLine("Header validation failed");
            return false;
        }
    }

    return true;
}

StringComparison.OrdinalIgnoreCase使得生成文件中因大小寫差異而導致的測試崩潰不復存在。 IronPDF在提取過程中保持文字布局和格式,因此定位驗證——例如確認頁眉字段出現在第一頁——在不同的PDF生成器中可靠運行。

對於從PDF文件中提取表格等更高級的場景,提取嵌入圖像或讀取互動表單字段,IronPDF為每個任務提供專門的API。 您還可以在測試套件需要在驗證之前組裝或分解文件時將文字提取與PDF合併拆分工作流連結起來。

輸入

如何使用IronPDF在Selenium WebDriver C#中讀取PDF文件:圖6 - 範例PDF輸入

輸出

如何使用IronPDF在Selenium WebDriver C#中讀取PDF文件:圖7 - PDF驗證輸出

使用Selenium進行PDF測試的最佳實踐是什麼?

從一開始應用一些模式會使您的PDF測試套件在專案增長時保持可維護性。

使用顯式等待而非固定延遲。 用檔案系統監視器或輪詢迴圈代替Thread.Sleep(),以檢查文件是否存在。 Selenium的顯式等待文件介紹了瀏覽器端的等待策略,這一原則同樣適用於下載。 固定延遲在慢速CI機器上易碎。

將PDF操作集中於基類。 建立一個共享的輔助或基測試類,公開ValidateTerms等方法。 然後個別測試專注於斷言而不是PDF管道。 這反映了IronPDF本身用於HTML轉PDF轉換和其他核心操作的模式。

每次測試後清理下載的文件。 在finally塊或拆卸方法中調用File.Delete(),以防臨時PDF在磁盤上積累。 這在多文件可能同時落入同一目錄的並行測試運行中特別重要。

在不作更改的情況下跨平台運行測試。 IronPDF可用於Windows、Linux和macOS,無需條件編譯。 在本地運行的同一測試程式集將在基於Linux的CI代理上正確執行。 請參見適用於Docker的跨平台部署指南

保持密碼不在源程式碼控制中。 當處理受保護的PDF時,從環境變數或保密管理器中讀取憑證而不是將其硬編碼。 IronPDF的PdfDocument.FromFile(path, password)重載接受載入時的密碼,因此調用站點保持乾淨。 IronPDF許可頁面涵蓋了生產部署的團隊和企業許可。

將文字提取範圍限定為您需要的頁面。 ExtractTextFromPage()。 這減少了記憶體使用並加快了測試執行。 請參考文字提取API參考以獲取完整的方法簽名。

如何使用IronPDF在Selenium WebDriver C#中讀取PDF文件:圖8 - 跨平台相容性

IronPDF與其他.NET PDF程式庫如何比較?

.NET測試自動化的PDF程式庫功能比較
功能IronPDFiTextPdfPig
從URL載入PDF是——單方法調用需要手動HTTP下載需要手動HTTP下載
提取所有文字是——ExtractAllText()是——多步驟是——多步驟
頁面級提取是——ExtractTextFromPage(n)
受密碼保護的PDF是——參數重載有限
.NET 10支持部分
HTML轉PDF生成有限
跨平台(Linux,macOS)
許可型別商業與免費試用AGPL / 商業MIT

IronPDF的直接URL載入和單方法文字提取,讓它在開發速度重要的測試自動化環境中具有明顯優勢。 對於也需要在相同工作流中從HTML生成PDF操作現有文件的團隊而言,一個程式庫處理兩個任務可大大簡化依賴樹。 像PdfPig這樣的開源替代方案適合簡單的提取需求,但它們需要更多的設置來處理URL載入,並且不提供內建的PDF生成。

如何開始免費試用?

IronPDF提供一個全功能的免費試用版,以便您在承諾購買許可證之前在測試環境中驗證該程式庫。 在試用期間,無水印限制會影響文字提取或驗證的工作流程。

要開始:

  1. 安裝NuGet包:dotnet add package IronPdf
  2. using IronPdf;新增到您的測試文件。
  3. 調用PdfDocument.FromFile(),開始提取文字。

存取IronPDF免費試用頁面下載您的試用金鑰。 對於團隊或企業部署,請查看IronPDF許可選項以找到適合您的計畫。

加速設置的額外資源:

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
預訂您的免費現場演示
Booking Badge

受到全球數百萬工程師的信任

Iron Software的客戶標誌
獲取您的無義務諮詢
填寫以下表格或電子郵件sales@ironsoftware.com
您的詳細資訊將始終保密
受到全球數百萬工程師的信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立