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

React中Adobe PDF Embed API协作设置失效,用户身份始终为Guest

问题排查与修复方案

你的核心问题是未触发用户身份回调的注册逻辑,导致Adobe PDF Embed SDK无法获取自定义用户信息,因此默认显示为"Guest"。以下是具体问题点和修复步骤:

1. 核心问题:未调用用户身份注册方法

在loadPDF函数中,你创建了ViewSDKClient实例并完成了PDF预览,但从未调用registerEventsHandler方法——而这个方法里才注册了GET_USER_PROFILE_API回调,用于向SDK提供用户身份信息。

2. 修复步骤

步骤1:在PDF预览成功后注册用户身份回调

修改Index.js中的loadPDF函数,在previewFile的Promise完成后调用registerEventsHandler,确保adobeDCView已完全初始化:

const loadPDF = (url = "/WriterModule.pdf") => {
  const viewSDKClient = new ViewSDKClient();
  viewSDKClient.ready().then(() => {
    viewSDKClient.previewFile(
      "pdfDiv",
      {
        showAnnotationTools: true,
        showLeftHandPanel: false,
        showPageControls: true,
        showDownloadPDF: true,
        showPrintPDF: false,
        showDisabledSaveButton: false,
        // 开启协作功能需添加此配置(根据Adobe官方要求)
        enableCollaboration: true,
      },
      url
    ).then(() => {
      // 预览成功后注册用户身份回调
      viewSDKClient.registerEventsHandler();
    }).catch(err => {
      console.error("PDF预览失败:", err);
    });
  });
};

步骤2:修正React事件绑定逻辑

你的onDocumentLoad={loadPDF(url)}会导致组件渲染时立即执行loadPDF,而非在文档加载时触发。改为函数形式避免立即执行:

<div
  className="filePreview full-window-div col-md-8"
  id="pdfDiv"
  onDocumentLoad={() => loadPDF(url)}
></div>

步骤3:验证用户信息结构(可选)

确认registerEventsHandler中的用户信息结构符合Adobe SDK要求,当前你的结构是正确的:

const profile = {
  userProfile: {
    name: "John Doe",
    firstName: "John",
    lastName: "Doe",
    email: "gg@gg.com"
  }
};

3. 额外检查项

  • 确认REACT_APP_CLIENT_ID环境变量配置正确,且对应的Adobe应用已启用协作功能
  • 确保在public/index.html中正确引入了Adobe View SDK脚本:
    <script src="https://documentcloud.adobe.com/view-sdk/main.js"></script>
    

内容的提问来源于stack exchange,提问作者Gourav Ghosal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:10:27