IRONSOFTWAREHOME
使用IRONPDF

如何在 ASP.NET Core 查看器中显示、保存和打印 PDF

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

**PDF 文档在自动化测试中带来了一个独特的挑战:虽然 Selenium WebDriver 擅长与 Web 元素交互,但它无法读取 PDF 文件中的内容,因为 PDF 文件是以二进制流的形式呈现,而不是 DOM 元素。**本文将展示如何使用 C# 解决这个问题,方法是将 Selenium 与IronPDF结合使用。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 的显式等待文档涵盖了浏览器端的等待策略,同样的原理也适用于下载。 在速度较慢的持续集成机器上,固定延迟很容易失效。

将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 / 商业用途麻省理工学院

IronPDF 的直接 URL 加载和单一方法文本提取使其在测试自动化环境中具有明显的优势,因为在测试自动化环境中,开发速度至关重要。 对于需要从 HTML 生成 PDF或在同一工作流程中操作现有文档的团队来说,使用一个库来处理这两个任务可以大大简化依赖关系树。 像 PdfPig 这样的开源替代方案对于简单的提取需求来说比较合适,但它们需要更多的设置来处理 URL 加载,并且不提供内置的 PDF 生成功能。

如何开始免费试用?

IronPDF 提供功能齐全的免费试用版,因此您可以在购买许可证之前在测试环境中验证该库。 试用期间,水印限制不会影响文本提取或验证工作流程。

开始使用:

  1. 安装NuGet包:dotnet add package IronPdf
  2. using IronPdf;添加到您的测试文件中。
  3. 调用PdfDocument.FromFile()并开始提取文本。

访问IronPDF 免费试用页面下载试用密钥。 对于团队或企业部署,请查看IronPDF 许可选项,找到适合您需求的方案。

可加快设置速度的其他资源:

IronPDF .NET 快速入门指南

如何使用IronPDF在Selenium WebDriver C#中读取PDF文件:图9 - 许可证

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

...
阅读更多

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

无任何限制。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 天试用密钥
无需信用卡或创建账户