如何突出显示 pdf 并转换为 HTML 使用 GroupDocs
在 PDF 中突出显示文本并将结果转换为带样式的 HTML 页面是法律审查、电子学习和数字出版的常见需求。在本教程中,您将了解如何使用 GroupDocs.Redaction for .NET 突出显示 pdf 文件,然后生成可嵌入网页门户或学习管理系统的突出显示 HTML 输出。指南涵盖环境设置、路径初始化、HTML 页面生成以及资源 URL 处理——全部配有可直接运行的 C# 代码片段。
快速答案
- 哪个库负责突出显示? GroupDocs.Redaction for .NET。
- 支持哪些 .NET 版本? .NET Framework 4.6+、.NET Core 3.1+、.NET 5/6/7。
- 生产环境需要许可证吗? 是的——商业许可证可移除试用限制。
- 可以处理大 PDF(数百页)吗? 可以,API 会流式读取页面,处理 500 页文件时内存占用不足 200 MB。
- HTML 输出是交互式的吗? 生成的 HTML 为静态页面但已完全样式化;您可以自行添加 JavaScript 实现交互。
什么是 PDF 文本突出显示?
PDF 文本突出显示是一种视觉标记,会在选定字符后面绘制彩色覆盖层,使其在文档查看时更加醒目。GroupDocs.Redaction 直接在 PDF 的内容流中添加此覆盖层,既保留原始布局,又在导出的 HTML 中呈现突出显示效果。
为什么使用 GroupDocs.Redaction for .NET?
GroupDocs.Redaction 支持 70+ 输入和输出格式,能够在 不将整个文件加载到内存 的情况下处理多达 500 页 的 PDF,并提供 单遍 API 同时完成脱敏和突出显示。这些量化能力使其成为企业级文档流水线的可靠选择。
前置条件
- 开发环境: Visual Studio 2022(或更高)配合 .NET Core 3.1 / .NET 6 项目。
- NuGet 包:
GroupDocs.Redaction(最新稳定版)。 - 基础知识: C# 语法、文件系统路径以及 HTML 基础。
如何为 .NET 设置 GroupDocs.Redaction?
要安装库,请选择以下三种支持的方法之一。 .NET CLI 命令将包添加到项目文件,Package Manager Console 通过 NuGet 集成,而 UI 提供图形化浏览和安装方式。三种方式最终都会引用相同的 GroupDocs.Redaction 程序集,帮助您立即开始编码。
使用 .NET CLI:
dotnet add package GroupDocs.Redaction
使用 Package Manager Console:
Install-Package GroupDocs.Redaction
使用 NuGet Package Manager UI: 搜索 “GroupDocs.Redaction” 并点击 Install。
安装完成后,在 C# 文件顶部添加 using 指令:
using GroupDocs.Redaction;
Feature_InitializeIndexedFileInfo 类是如何工作的?
Feature_InitializeIndexedFileInfo 是一个帮助类,用于创建并存储查看器缓存和源 PDF 所需的路径。
该类准备了查看器和 HTML 生成器依赖的文件系统位置。它会为临时文件创建专用缓存文件夹,从源 PDF 派生文件夹名称,并存储原始文档的绝对路径。这些属性以只读成员形式暴露,供后续处理使用。
// ```csharp
using GroupDocs.Redaction;
// Initialize the Redactor
Redactor redactor = new Redactor("your-file-path.pdf");
如何生成 HTML 页面文件路径?
Feature_GenerateHtmlPageFilePath 根据页码为每个 HTML 页面生成确定性的文件名。
该类构建唯一标识每个渲染页面的文件名,使用简单的 p{pageNumber}.html 模式。随后将该名称与先前创建的缓存文件夹路径组合,生成 HTML 可保存的完整文件系统位置。这种确定性命名可避免在处理多页 PDF 时出现冲突。
// ```csharp
using System.IO;
namespace GroupDocs.Search.Examples.CSharp.HighlightInHtml
{
internal class Feature_InitializeIndexedFileInfo
{
private readonly string _viewerCacheFolderPath;
private readonly string _filePath;
private readonly string _fileFolderName;
private readonly string _fileCacheFolderPath;
public Feature_InitializeIndexedFileInfo(string viewerCacheFolderPath, string filePath)
{
// Store the provided cache folder path.
_viewerCacheFolderPath = viewerCacheFolderPath;
// Store the file path.
_filePath = filePath;
// Extract and modify the file name to create a folder name.
var fileName = Path.GetFileName(_filePath);
_fileFolderName = fileName.Replace(".", "_");
// Combine paths for cache directory.
_fileCacheFolderPath = Path.Combine(viewerCacheFolderPath, _fileFolderName);
}
public string ViewerCacheFolderPath => _viewerCacheFolderPath;
public string FilePath => _filePath;
public string FileFolderName => _fileFolderName;
public string FileCacheFolderPath => _fileCacheFolderPath;
}
}
如何创建 HTML 页面资源文件路径和 URL?
Feature_GenerateHtmlPageResourceFilePathAndUrl 同时构建资源的物理文件路径和对应的 Web URL。
图片、字体或 CSS 等资源既需要磁盘上的位置,也需要浏览器可请求的 URL。该类接受页码和资源名称,返回一个元组,包含缓存文件夹内的绝对文件系统路径以及可由 Web 服务器映射的虚拟 URL。采用此方式可确保生成页面之间的资源引用保持一致。
// ```csharp
using System.IO;
namespace GroupDocs.Search.Examples.CSharp.HighlightInHtml
{
internal class Feature_GenerateHtmlPageFilePath
{
private readonly string _fileCacheFolderPath;
public Feature_GenerateHtmlPageFilePath(string fileCacheFolderPath)
{
// Initialize with cache folder path.
_fileCacheFolderPath = fileCacheFolderPath;
}
public string GetHtmlPageFilePath(int pageNumber)
{
// Create a page-specific HTML file name.
string pageFileName = $"p{pageNumber}.html";
// Combine paths for the full file location.
string pageFilePath = Path.Combine(_fileCacheFolderPath, pageFileName);
return pageFilePath;
}
}
}
实际应用场景
- 法律文档审查: 突出显示条款,导出为 HTML,让律师在浏览器中进行批注。
- 电子学习内容: 将带注释的讲义 PDF 转换为可搜索高亮的交互式网页。
- 数字出版: 生成适合网络的杂志版本,突出显示的摘录吸引读者注意。
这些场景受益于 GroupDocs.Redaction 提供的 高性能流式处理,可每日处理成千上万份文档。
常见问题及解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 突出显示在 HTML 中未出现 | 生成页面缺少 CSS 类 | 确保引用查看器的 highlight.css,或手动嵌入样式块。 |
| 大 PDF 导致内存不足 | 使用 Document.Load 未启用流式 | 使用 RedactorOptions 并将 EnableStreaming = true。 |
| 资源 URL 返回 404 | 基础 URL 配置错误 | 将 RedactionViewerOptions.BaseUrl 设置为静态文件根目录。 |
常见问答
问:我可以一次在同一个 PDF 中突出显示多个章节吗?
答:可以。将一组 RedactionRegion 对象传递给 Redactor.Apply,每个区域都会在同一次操作中被突出显示。
问:API 是否支持基于关键字的突出显示?
答:支持。使用 Redactor.Search 查找所有匹配项,然后对得到的区域应用高亮脱敏。
问:生成的 HTML 是交互式的吗(例如点击跳转)?
答:默认输出为静态页面,但您可以在生成后注入 JavaScript,实现导航、工具提示或自定义点击处理。
问:如何更改高亮颜色?
答:在导出的 HTML 中修改 CSS 类 .redaction-highlight,或在调用前设置 RedactionOptions.HighlightColor 属性。
问:这能处理大于 1 GB 的 PDF 吗?
答:可以,只要启用流式并分配足够的临时磁盘空间;API 永不将整个文档一次性加载到内存。
结论
现在,您已经掌握了使用 GroupDocs.Redaction for .NET 如何突出显示 pdf 并将其转换为带高亮的 HTML 页面的一整套生产就绪工作流。通过初始化索引文件信息、生成确定性的 HTML 路径以及处理资源 URL,您可以将此方案集成到任何基于 .NET 的文档管理系统、法律审查门户或电子学习平台中。
最后更新: 2026-08-20
测试环境: GroupDocs.Redaction 23.12 for .NET
作者: GroupDocs
using System.IO;
namespace GroupDocs.Search.Examples.CSharp.HighlightInHtml
{
internal class Feature_GenerateHtmlPageResourceFilePathAndUrl
{
private readonly string _fileCacheFolderPath;
public Feature_GenerateHtmlPageResourceFilePathAndUrl(string fileCacheFolderPath)
{
// Initialize with the cache folder path.
_fileCacheFolderPath = fileCacheFolderPath;
}
public string GetHtmlPageResourceFilePath(int pageNumber, string resourceFileName)
{
// Construct a unique name for resources.
string resFileName = GetResourceFileName(pageNumber, resourceFileName);
// Combine paths to form full resource path.
string resFilePath = Path.Combine(_fileCacheFolderPath, resFileName);
return resFilePath;
}
public string GetHtmlPageResourceUrl(int pageNumber, string resourceFileName)
{
// Generate a URL-like string for the resource.
return GetResourceFileName(pageNumber, resourceFileName);
}
private static string GetResourceFileName(int pageNumber, string resourceFileName)
{
// Construct resource names based on page number and file name.
var resFileName = $"p{pageNumber}_{resourceFileName}";
return resFileName;
}
}
}