ASP.NET Core 中的 DOCX 查看器:预览 Word 文件
← Back to Blog••2 min read

ASP.NET Core 中的 DOCX 查看器:预览 Word 文件

要在 ASP.NET Core 应用程序中预览 Word 文档,请使用在服务器上渲染文件并在浏览器中显示其页面的 DOCX 查看器 SDK。Doconut 提供此工作流,无需在服务器上安装 Microsoft Word。用户可以在您的应用程序内阅读合同、提案或报告,而无需打开单独的桌面程序。

一份象牙色的报告,包含表格和图表,从深蓝色文件夹延伸至透明玻璃观览框
一份象牙色的报告,包含表格和图表,从深蓝色文件夹延伸至透明玻璃观览框

有用的问题是,当您用自己的文档替换演示文件时会发生什么。合同可能包含自定义字体、重复页眉、宽表格和签名页。本指南展示了 .NET 8 应用程序的文档打开步骤以及帮助您评估结果的检查项。

从 C# 打开 DOCX 文件

从 Doconut .NET 8 快速入门 开始,配置服务、ASP.NET 会话、文档中间件、查看器资源和浏览器小部件。下面的端点在已配置的应用程序上进行扩展;它并不是一个完整的独立应用程序。

将一个非敏感的测试文档放在 App_Data/Sample.docx,位于应用程序的内容根目录下。在 app.Run() 之前添加此端点:

using Doconut;

app.MapPost("/api/preview-word", async (
    Viewer viewer,
    IWebHostEnvironment environment) =>
{
    var filePath = Path.Combine(
        environment.ContentRootPath, "App_Data", "Sample.docx");

    if (!File.Exists(filePath))
        return Results.NotFound();

    var token = await viewer.OpenDocumentAsync(filePath);
    return Results.Ok(new { token });
});

保持 using 指令与 Program.cs 顶部的其他导入一起。固定路径使示例易于复现,并避免接受来自浏览器的任意服务器路径。

Viewer API 参考 记录了 OpenDocumentAsync 的文件路径重载。它打开文件并返回文档会话令牌。在快速入门已初始化 objViewer 的页面上,使用以下代码打开预览:

async function previewWordDocument() {
    const response = await fetch('/api/preview-word', {
        method: 'POST'
    });

    if (!response.ok) {
        throw new Error('The Word preview could not be opened.');
    }

    const { token } = await response.json();
    objViewer.View(token);
}

在页面的预览操作中调用此函数,并通过应用程序现有的错误 UI 显示任何错误。保持请求与本例中的查看器位于同一应用程序源。

将文档访问控制在应用程序范围内

在客户门户中,用应用程序选择的文档记录替换固定示例。检查当前用户是否有权查看该记录,然后再解析其存储位置并打开它。浏览器收到的文件名并不是授权决策。

将受保护的原始文件存放在公共 Web 根目录之外。示例的 App_Data 文件夹是一种存储约定,而非访问控制特性:不要通过静态文件映射公开它。保持身份验证和文档权限在宿主应用程序中。

浏览器会收到文档会话的查看令牌。将该令牌视为凭证,而不是永久的文档 URL。快速入门还涵盖了在阅读器离开或打开另一个文件时关闭文档的操作。

使用代表性文件测试 Word 布局

空的 DOCX 对于客户实际使用的文档几乎没有参考价值。根据实际需要显示的模板构建一个小的评估集合,并去除敏感信息。

测试文档预览时需要检查的内容
带有页眉页脚的合同重复内容、页码以及签名页的位置
使用公司字体的提案字体替换、换行以及标题宽度
带有宽表或嵌套表格的报告列宽、行拆分以及在页面边界被截断的文本
包含纵向和横向章节的文档页面尺寸以及章节之间的过渡
大量图片的手册图片位置、说明文字以及放大时的可读性

将渲染结果与批准的源文档进行比较。在提交集成之前,决定哪些差异对您的工作流重要。

Doconut 通过 WordConfig 暴露 Word 专用的渲染设置。格式配置参考 包含用于额外字体目录的 FontFolders、纸张尺寸设置以及用于表格适配的 AutoFitAllTables。请有意识地更改这些设置:让表格适应可用宽度也可能改变您想要保留的布局。

在部署主机上重复这些检查。使用开发者机器上已安装字体的预览,在服务器缺少该字体时可能会出现不同的显示效果。请使用贵组织被允许部署的字体。

将查看、编辑和转换功能分开选择

DOCX 预览解决了阅读步骤。它并不会把您的应用程序变成 Word 的创作环境。

  • 阅读: 当需要在案件、订单或客户记录中检查现有文档时使用查看器。
  • 编辑: 如果用户必须重写段落并保存更新的 DOCX,需要单独评估编辑工作流。预览文件并不证明支持 Word 编辑。
  • 转换: 如果需求是以其他格式下载文件,需要单独评估导出工作流,而不是仅显示页面。

Word 查看器 .NET 概览 介绍了 Doconut 的 Word 系列查看路径。使用它来检查产品是否适合,然后使用您自己的文件评估对您应用程序重要的渲染行为。

首先用最难的文档评估查看器

从已经导致支持请求的文档开始:长合同、表格密集的报告或使用异常字体的模板。检查预览,浏览几页,在新会话中重新打开,并验证周边应用是否强制执行正确的文档权限。

下载 Doconut 并使用该文件运行 .NET 8 示例。成功的评估应展示用户能够阅读他们实际收到的文档,布局已由团队审查,并且集成能够被您的应用程序维护。

#DOCX Viewer#ASP.NET Core#Word Documents#C##Document Preview#DOCX 查看器#Word 文档#文档预览