You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SharePoint 2016本地环境无Office Online Server,如何生成文档预览?

可行的Word文档预览方案(基于SharePoint 2016无Office Online Server环境)

方案1:jQuery + Mammoth.js 直接转Word为HTML预览

Mammoth.js是轻量的客户端.docx解析库,能将Word内容转换为干净的HTML,完全前端处理无需服务器依赖。

  • 实现步骤:
    1. 通过SharePoint REST API获取Word文件的二进制数据流,接口示例:/_api/web/getfilebyserverrelativeurl('/sites/你的站点/文档库/test.docx')/$value
    2. 引入Mammoth.js的本地文件或CDN资源
    3. 用jQuery发起请求并处理转换:
      $.ajax({
          url: "/_api/web/getfilebyserverrelativeurl('/sites/demo/Documents/test.docx')/$value",
          method: "GET",
          headers: { "Accept": "application/octet-stream" },
          xhrFields: { responseType: "arraybuffer" },
          success: function(data) {
              mammoth.convertToHtml({arrayBuffer: data})
                  .then(function(result){
                      $("#preview-container").html(result.value);
                      // 转换警告可按需处理:result.messages
                  });
          },
          error: function() {
              $("#preview-container").html("文档加载失败");
          }
      });
      
    4. 注意:仅支持.docx格式,老旧.doc文件需额外搭配兼容性工具(如docx2html)

方案2:Word转PDF后复用现有iframe预览逻辑

通过前置转换把Word转为PDF,再用你已生效的PDF预览方式:

  • 本地部署场景可做两种转换方式:
    1. 服务器端定时转换:写简单的SharePoint控制台应用或自定义WebPart,批量将文档库的Word文件转成PDF并存到同一库(命名规则如test.docx.pdf)
    2. 客户端按需转换:若有前端构建环境,用docx-pdf这类Node.js库做客户端转换
  • 前端判断逻辑(jQuery):
    var docUrl = "/sites/demo/Documents/test.docx";
    var pdfUrl = docUrl + ".pdf";
    
    // 先检查对应PDF是否存在
    $.ajax({
        url: "/_api/web/getfilebyserverrelativeurl('" + pdfUrl + "')",
        method: "GET",
        headers: { "Accept": "application/json;odata=verbose" },
        success: function() {
            $("#pdf-preview-iframe").attr("src", pdfUrl);
        },
        error: function() {
            // PDF不存在时,降级到方案1的HTML预览
        }
    });
    

方案3:Viewer.js 增强预览体验

Viewer.js可对HTML、PDF、ODT等格式提供带导航、缩放的预览界面,配合Mammoth.js的转换结果使用:

  • 实现示例:
    // 先通过Mammoth.js得到转换后的HTML内容
    var htmlContent = result.value;
    // 将内容写入预览容器,初始化Viewer
    $("#viewer-wrap").html(htmlContent);
    new Viewer(document.getElementById('viewer-wrap'), {
        toolbar: true,
        navbar: true,
        title: false
    });
    

避坑提示

  • 之前客户端渲染(CSR)无效是正常的:SharePoint 2016的CSR预览钩子依赖Office Online Server接口,无OOS环境下无法生效
  • 跨域/权限问题:同域下调用SharePoint API无需额外认证,直接使用当前用户上下文即可
  • 大文档处理:Mammoth.js处理超大.docx可能有性能问题,建议限制预览文件大小或做分片加载

内容的提问来源于stack exchange,提问作者jasleen kaur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 07:19:55