许多开发者在需要在 Web 应用中显示文档时,首先会寻找 UI 组件库。Doconut 查看器 是一个 .NET SDK,用于在 ASP.NET Core、MVC 或传统 WebForms 项目中添加无插件的浏览器查看功能。安全性仍然取决于完整的应用架构:身份验证、授权、传输、存储、验证、清理、补丁和监控。

1. 安装 Doconut App SDK 并为多文件格式准备您的 .NET 项目
1.1 添加受支持的包
使用官方 Doconut 下载页面 上的当前包和设置说明。记录所选版本并验证其是否支持目标 .NET 运行时。
1.2 验证包引用
安装后,确认项目文件中的包引用和解析后的版本。明确的版本管理有助于使构建和部署可复现。
1.3 启用 HTTPS
通过 HTTPS 提供应用,以防上传的文档在网络中以明文传输。对于使用 Kestrel 托管的应用,在 appsettings.json 中添加端点配置:
{
"Kestrel": {
"Endpoints": {
"Https": {
"Url": "
}
}
}
}
如果在 IIS 上托管,请为站点绑定 HTTPS 证书。启用 HTTPS 后,文件将在安全通道中传输到您的服务器,而 SDK 正是在此处渲染它。
安全性来源于何处。 SDK 在您的应用程序内部、您的基础设施上运行:它不向 Doconut 服务器发出任何调用,因此文档永远不会离开您的网络。这是值得围绕其设计的特性。它不是合规证书——SDK 本身不提供 ISO 27001、SOC 2 或 HIPAA 认证,也无法为您的应用授予此类认证。它所做的只是将文件保持在您已经控制并审计的边界内。
2. 为文档管理配置安全文件上传和存储
这部分属于您而非 SDK,直白地说:传输安全、静态加密、保留和清理都是由您的应用程序决定的。SDK 负责渲染文档;它不是存储层,也不会为您加密磁盘。
2.1 注册服务
在 Startup.cs(或现代 .NET 的 Program.cs)中,按照已安装版本的文档,在依赖注入容器中注册 Doconut 服务。SDK 需要一个工作文件夹来存放临时渲染输出时,请将其指向您可控制的位置,并将该文件夹的清理责任交给您——通过计划任务或应用程序管理的生命周期,而不是假设。
2.2 创建上传端点
实现一个控制器动作来接收上传的文件,将其写入您应用已使用的存储,并返回一个短期一次性令牌。该令牌供客户端查看器用于获取并渲染文档。请注意,存储由您负责:在渲染时将字节或路径交给 SDK,SDK 则返回页面给您。
2.3 保护端点
由于上传端点处理敏感数据,请使用身份验证和基于角色的授权进行保护(例如,仅 DocumentViewer 角色的用户可以上传)。在服务器端以及浏览器中验证文件扩展名和大小,并将上传的字节视为不可信输入。
不要因为假设 SDK 已覆盖而跳过此步骤。 静态加密、密钥管理和孤立文件清理是您应用的职责。如果需要对磁盘上的文档进行加密,请使用您已经信任的平台设施——查看器并非处理此事的地方。
3. 在 ASP.NET Core、MVC 或 WebForms 中嵌入 Viewer 组件
后端准备就绪后,使用已安装 Doconut 版本的资源和 API 初始化查看器。
3.1 添加 JavaScript 包
在共享布局中,仅引入文档中描述的、与已安装 SDK 相匹配的 Viewer 资源。不要假设不同版本之间的包名或位置是固定的。
3.2 为 Core/MVC 创建 Razor 视图
添加一个视图(例如 Views/Document/View.cshtml),其中包含文件输入、用于 Viewer 的容器元素,以及一个小脚本,用于上传所选文件、获取安全令牌并初始化 Doconut Viewer 小部件。
脚本应当:
- 从
<input type="file">元素获取选中的文件。 - 使用
fetch或XMLHttpRequest将文件发送到上传端点。 - 当授权响应返回后,使用已安装版本支持的 API 初始化 Viewer。
3.3 WebForms 等价实现
在 WebForms 页面(例如 DocumentViewer.aspx)中,放置一个 asp:FileUpload 控件、一个触发上传的按钮以及一个用于承载 Viewer 的 <div>。在代码隐藏文件中,调用 Doconut 服务存储上传的文件、获取令牌,并注册一个启动脚本,调用 JavaScript 函数 initViewer(token) 来创建 Viewer 实例。
这样做的原因: 通过一条渲染路径服务三种 .NET UI 模型,且终端用户机器上无需安装任何东西。
4. 为文档管理定制 Viewer
Viewer 在您页面的容器内渲染,因此周边的应用已经是您自己的。除此之外,请从您所安装版本的文档中获取选项名称和默认值,而不是从任何教程(包括本教程)中获取——不同版本的配置界面会变化,硬编码的选项名称最容易在升级时导致故障。
需要提前决定的事项:
4.1 用户可以使用哪些控件
决定用户是只能阅读渲染后的页面,还是还能下载原始文件。受控打印是 Viewer 本身提供的功能,而不是单独的付费项目,因此打印规则属于配置问题,而非授权问题。
4.2 实际需要哪些插件
有四个插件是单独授权的,列表不长,值得记住:Annotation、Converter、DICOM 和 Search。转换(DOC 转 PDF 及其他)属于 Converter 插件。文本搜索属于 Search 插件。如果两者都不需要,就不必购买。
4.3 本地化
如果您的应用是多语言的,请在设计之前检查已安装版本为 Viewer UI 字符串提供了哪些本地化支持。
为何重要: Viewer 应该看起来像您产品的一部分。它不应悄悄向用户承诺您未购买的许可证所不包含的功能。
5. 在所有受支持的格式上测试集成
上线前,对每种预期用户会查看的文件类型进行快速检查。使用 Doconut App 的 Viewer,打开每种格式的示例文件,确认渲染、导航以及任何专用工具均如文档所述工作。
| 格式 | 测试场景 | 预期结果 |
|---|---|---|
| 包含嵌入图像的大型多页报告 | 滚动流畅,缩放顺畅,颜色渲染准确 | |
| DOCX | 含表格和脚注的 Word 文档 | 所有文字、表格和脚注均可见;布局不出现偏移 |
| XLSX | 含图表的电子表格 | 图表以矢量图形式渲染;缩放后仍保持清晰 |
| PPTX | 含动画构建的幻灯片稿件 | 幻灯片上的每个构建在同一帧中堆叠显示——这是预期行为,而非错误 |
| DWG | 含图层和外部参照的技术图纸 | 图层可切换,距离和面积测量功能可用;外部参照和 SHX 字体缺失,因为文件中本就没有 |
| PSD | 含图层的 Photoshop 文件 | 渲染保存的合成图像,隐藏的图层保持隐藏;放大时颜色保持一致 |
| SVG | 含渐变的矢量图形 | 渐变平滑渲染;放大后仍保持锐利 |
| TIFF | 高分辨率扫描件 | 图像加载快速;放大后可见细节 |
请使用用户的真实文件进行测试,而不是仅使用干净的样本。那些让人惊讶的格式往往是因为格式本身的怪癖——例如引用了四个其他图纸的 DWG、从未重新计算过存储值的电子表格、以及未嵌入字体的幻灯片稿件。免费 Viewer 位于 Doconut.app ,使用相同的引擎,因此在编写任何代码之前,它是快速查看特定棘手文件渲染效果的便捷方式。
结论
嵌入无插件的文档查看器归结为四件事:安装 SDK,确保您自己的上传路径,将其渲染到页面中的容器,并仅配置已安装版本所记录的内容。查看器对安全性的贡献有限且真实——它运行在您的服务器上,且不向外发送任何数据。列表中的其他所有内容都是您应用程序的职责,没有任何 SDK 能替您完成。
准备好评估它了吗?从官方 Doconut 下载和文档页面开始,然后在与您基于 Windows 的 ASP.NET 应用程序其余部分相同的安全审查中测试 SDK。