2***@qq.com
2***@qq.com
  • 发布:2025-12-22 09:20
  • 更新:2025-12-22 09:42
  • 阅读:26

openDocument 为什么钉钉官网远程调试小程序页面能打开pdf,uni-app没反应?

分类:uni-app
    // #ifdef MP-DINGTALK  
    dd.openDocument({  
      filePath: "https://resource/3a46a358f491a96d82ff4de27cad19e.pdf",  
      fileType: "pdf",  
      success: () => {  
        console.log("openDocument success");  
      },  
      fail: (err) => {  
        console.log("openDocument fail:", err);  
      },  
      complete: () => {  
        console.log("openDocument complete");  
      },  
    });  
    // #endif

openDocument 为什么钉钉官网远程调试小程序页面能打开pdf,uni-app没反应?

https://open.dingtalk.com/tools/explorer/jsapi?spm=ding_open_doc.document.0.0.71f92f5fZb72Gp&id=11464

2025-12-22 09:20 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

该问题请在专业群( uni-app 官方技术交流群 1 ) 咨询

在uni-app中无法打开PDF的主要原因是API使用方式不当。根据知识库文档,uni-app应使用uni.openDocument而非钉钉原生dd.openDocument,且必须遵循以下规范:

  1. 必须先下载文件:uni-app要求filePath必须是本地临时路径,不能直接使用网络URL。需先用uni.downloadFile下载PDF到临时路径,再调用uni.openDocument打开该路径。

  2. 正确API调用

    // #ifdef MP-DINGTALK  
    uni.downloadFile({  
    url: "https://resource/3a46a358f491a96d82ff4de27cad19e.pdf",  
    success: (res) => {  
    if (res.statusCode === 200) {  
      uni.openDocument({  
        filePath: res.tempFilePath, // 必须是临时本地路径  
        fileType: "pdf",  
        success: () => console.log("打开成功"),  
        fail: (err) => console.error("打开失败", err)  
      });  
    }  
    }  
    });  
    // #endif
  3. 平台差异:钉钉小程序环境下,uni-app的openDocument会通过条件编译转换为对应平台API,但参数处理逻辑与原生API不同。直接使用网络URL会导致失败,这是设计规范而非bug。

建议参考uni.openDocument文档进行开发,确保先下载再打开。若需更复杂功能,可考虑使用插件市场的PDF查看插件。

内容为 AI 生成,仅供参考
2***@qq.com

2***@qq.com (作者) - 嗯嗯嗯,撂了吧,我写bug呢。

https://resource/3a46a358f491a96d82ff4de27cad19e.pdf

这个就是downloadFile下载后返回的地址

2***@qq.com

2***@qq.com (作者) - 嗯嗯嗯,撂了吧,我写bug呢。

      uni.downloadFile({  
        url: "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",  
        success: (res) => {  
          console.log("res:", res);  

          uni.openDocument({  
            filePath: res.tempFilePath, // 必须是临时本地路径  
            fileType: "pdf",  
            success: () => console.log("打开成功"),  
            fail: (err) => console.error("打开失败", err),  
          });  
        },  
      });

报错:
when transfer page data or component data of page src/subpackages/user/enterpriseCertification/uploadAuth/index,data json stringify failed, please check data {}

report catch error RangeError: Maximum call stack size exceeded
at Jv.onerror (af-appx.worker.min.js:26)
at i (af-appx.worker.min.js:26)
at c.emit (af-appx.worker.min.js:26)
at Jv.onerror (af-appx.worker.min.js:26)
at i (af-appx.worker.min.js:26)
at c.emit (af-appx.worker.min.js:26)
at Jv.onerror (af-appx.worker.min.js:26)
at i (af-appx.worker.min.js:26)
at c.emit (af-appx.worker.min.js:26)
at Jv.onerror (af-appx.worker.min.js:26)

  • 2***@qq.com (作者)

    控制台无限循环累积报上面错误

    2025-12-22 09:43

  • 2***@qq.com (作者)

    downloadFile 执行了,有返回地址,但是openDocument应该是报错了,卡住了。

    2025-12-22 09:48

要回复问题请先登录注册