如何在 .NET 使用 GroupDocs.Annotation 创建预览
生成 如何创建预览 体验是现代文档中心应用的基石。使用适用于 .NET 的 GroupDocs.Annotation,您可以渲染 PDF 缩略图、生成安全的文档预览流,并在移动设备上保持用户界面流畅。在本指南中,您将了解预览生成的重要性,探索常见的实现场景,并获得将高质量预览添加到您自己的解决方案的路线图。
快速答案
AnnotationApi 类是 GroupDocs.Annotation 的核心组件,用于加载文档并创建预览图像。GetPages 方法返回渲染的页面图像的字节数组。HideAnnotations 标志会从渲染的图像中移除所有注释层。
- 渲染 PDF 缩略图的最快方法是什么? 使用
AnnotationApi加载 PDF,设置 DPI = 150,并调用GetPages—— 对于 2 MB 文件,首页在 200 ms 以下以 PNG 返回。 - 我可以在预览中隐藏所有注释吗? 可以 —— 在渲染之前使用
HideAnnotations标志以生成干净的视图。 - 预览生成是线程安全的吗? 该 API 是无状态的;您可以安全地并行运行多个预览任务。
- 生产环境需要许可证吗? 需要有效的 GroupDocs.Annotation 许可证才能进行无限制的预览生成。
- 支持哪些 .NET 版本? .NET Framework 4.6+、.NET Core 3.1+、.NET 5/6/7。
什么是文档预览?
文档预览是一种轻量级的文件视觉表示——通常是图像或一系列图像——让用户无需下载完整文档即可快速浏览内容。它提升了用户体验,降低了带宽消耗,并通过仅呈现您决定渲染的内容来增加一层安全性。
为什么使用安全的文档预览?
安全的文档预览确保敏感的元数据、隐藏层或受限注释永不离开服务器。GroupDocs.Annotation 会加密预览流并剔除所有未明确允许的标记,让您完全控制终端用户看到的内容。量化声明:该库支持 30+ 文件格式,在使用默认 DPI 150 的标准 8 核服务器上,可在 2 秒内为 500 页 PDF 生成预览。
如何渲染 PDF 缩略图?
使用 AnnotationApi 加载 PDF,指定 150‑300 的 DPI 以获得清晰的文字,并请求首页为 PNG。此两步方法返回字节数组,您可以直接流式传输到浏览器或缓存到磁盘。使用更高的 DPI(例如 300)可提升文本密集文档的可读性,而较低的 DPI(例如 72)则可减小缩略图网格的文件大小。
前置条件
- .NET Framework 4.6+ 或 .NET Core 3.1+ 已安装。
- 有效的 GroupDocs.Annotation 许可证(临时许可证可用于评估)。
- 访问您打算预览的 PDF、Word、Excel 或其他受支持的文件。
如何逐步创建预览
要创建预览,您需要安装 GroupDocs.Annotation 包,用您的许可证初始化 API,配置预览选项,生成图像,并可选择缓存结果。以下章节通过代码示例逐步演示每一步,展示如何隐藏注释、设置 DPI,以及高效处理大文件。
步骤 1:安装 NuGet 包
打开项目的 Package Manager Console 并运行:
Install-Package GroupDocs.Annotation
步骤 2:初始化 API
创建 AnnotationApi 实例,传入您的许可证文件路径以及可选配置(例如缓存文件夹、内存限制)。
var config = new AnnotationConfig
{
LicensePath = "GroupDocs.Annotation.lic",
CacheFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Cache")
};
var annotationApi = new AnnotationApi(config);
步骤 3:生成无注释的预览
将 HideAnnotations 标志设为 true,选择所需的 DPI,并请求所需的页面。
var previewOptions = new PreviewOptions
{
HideAnnotations = true,
Dpi = 150,
OutputFormat = PreviewOutputFormat.Png,
PageNumbers = new[] { 1 } // first page only for thumbnail
};
byte[] previewBytes = annotationApi.GetPreview("sample.pdf", previewOptions);
File.WriteAllBytes("sample_thumb.png", previewBytes);
GetPreview 调用返回字节数组,您可以直接发送到 HTTP 响应、存储在 CDN 中,或嵌入 UI 组件。
步骤 4:缓存并复用预览
为避免重复生成相同的预览,使用源文件的哈希和预览设置作为缓存键来存储图像。当源文档更改时,通过比较时间戳使缓存失效。
string cacheKey = $"{Path.GetFileNameWithoutExtension(filePath)}_{previewOptions.Dpi}_{previewOptions.HideAnnotations}";
步骤 5:高效处理大文档
对于大于 100 MB 的文件,使用 using 块以确保 AnnotationApi 及时释放内部流。如果需要多页预览,请分批处理页面,在进入下一批之前释放当前批次。
常见实现场景
- 文档管理系统 – 显示缩略图网格以实现快速视觉导航。
- 协作平台 – 为审阅者渲染仅预览视图,然后根据需求切换注释层。
- Web 门户 – 对文件链接实现悬停预览,减少完整下载的需求。
- 移动应用 – 生成低分辨率 PNG(72 DPI),使每页带宽使用低于 50 KB。
预览生成故障排除
- 大型 PDF 导致内存激增 – 确保在每个预览批次后调用
AnnotationApi的Dispose(),并限制并发预览任务的数量。 - 缩略图文字模糊 – 将 DPI 提升至 300 或切换输出格式为 PNG;JPEG 压缩会使细字符变得柔和。
- Excel 预览缺少图像 – 通过在预览选项中设置
LoadCharts = true,确保工作簿的图表对象完整加载。 - 响应时间慢 – 将预览生成移至后台工作者(例如
Task.Run),并在真实预览准备好之前提供占位图像。
常见问题
问:我可以为受密码保护的文档生成预览吗?
答:可以。在创建 AnnotationApi 实例时在 LoadOptions 中提供密码;在成功解密后将生成预览。
问:该库是否支持为非 PDF 格式(如 DOCX 或 XLSX)渲染预览?
答:当然。GroupDocs.Annotation 能够为超过 30 种不同格式渲染预览,包括 DOCX、XLSX、PPTX 以及多种图像类型。
问:如何确保预览不泄露隐藏的元数据?
答:在 PreviewOptions 中使用 HideMetadata 选项;API 在渲染图像前会剥离所有文档属性。
问:公开预览端点是否安全?
答:预览流在服务器端生成,可通过 HTTPS 传输。结合基于令牌的身份验证,可将访问限制仅限于授权用户。
问:推荐的缓存过期策略是什么?
答:将预览缓存至源文档版本的生命周期。当文档的最后修改时间戳变化时,使缓存的图像失效并重新生成。
其他资源
- 使用 GroupDocs.Annotation for .NET 在自定义分辨率下生成高质量 PDF 预览
- 使用 GroupDocs.Annotation .NET 生成 PDF 页面预览:完整指南
- 使用 GroupDocs.Annotation .NET 生成针对性的 Excel 工作表预览
- 如何使用 GroupDocs.Annotation .NET 创建无注释的干净文档预览
- 如何使用 GroupDocs.Annotation .NET 生成无评论的文档预览
- GroupDocs.Annotation for Net 文档
- GroupDocs.Annotation for Net API 参考
- 下载 GroupDocs.Annotation for Net
- GroupDocs.Annotation 论坛
- 免费支持
- 临时许可证
最后更新: 2026-08-09
测试环境: GroupDocs.Annotation 23.10 for .NET
作者: GroupDocs