HarmonyOS 鸿蒙Next使用 document.loadDocument 预览沙箱路径下的pdf无反应

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next使用 document.loadDocument 预览沙箱路径下的pdf无反应

  1. 尝试使用 document.loadDocument 预览沙箱路径下的pdf无反应

  2. 尝试使用 webview 预览沙箱路径下的pdf,结果显示白屏

请问有什么方法可以正常预览pdf文件?

2 回复

可以参考链接的demo:

  1. https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/pdf-open-docunent-V5

  2. https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/pdf-pdfservice-V5#section167288392229

外部文件如html无法直接引用内部沙箱文件。

你的pdf是放在服务器上的还是哪里,'https://www.example.pdf’这个网站访问到您的pdf文件的逻辑是什么,麻烦说一下,因为这边试过也是白屏。

看下下面的demo 是否能满足需求

import media from '@ohos.multimedia.media';
import web_webview from '@ohos.web.webview';
import { request } from '@kit.BasicServicesKit';
import common from '@ohos.app.ability.common';
import fs from '@ohos.file.fs';

@Entry
@Component
struct WebViewPageDemo {
  webviewController: web_webview.WebviewController = new web_webview.WebviewController();
  @State fileUrl: string = '';
  @State title: string = '';
  path='';

  hasFile(filePath:string){
    let b = fs.accessSync(filePath)
    return b
  }

  aboutToAppear(){
    const context = getContext(this) as common.UIAbilityContext
    this.path=context.filesDir+'/1700182405099.pdf'
    console.log('demo ', this.path)
    console.log(this.hasFile(this.path)+'123456')

    if(!this.hasFile(this.path)) {
      request.downloadFile(context, {
        url: 'https://prdc-ams.oss-cn-shenzhen.aliyuncs.com/1700182405099.pdf',
        filePath: this.path
      }).then((data: request.DownloadTask) => {
        data.on('complete', () => {
          console.log('demo complete', this.path)
          this.fileUrl = this.path
        })
        data.on('fail', (err) => {
          console.log('demo fail', this.path)
          this.fileUrl = this.path
        })
      })
    }
  }

  build(){
    Column(){
      Button('loadUrl').onClick(()=>{
        this.webviewController.loadUrl('file://'+this.path)
      })
      Web({
        src: '',
        controller: this.webviewController
      })
      .javaScriptAccess(true)
      .domStorageAccess(true)
      .verticalScrollBarAccess(true)
      .fileAccess(true)
      .height('100%')
      .width('100%').onControllerAttached(() => {
        this.webviewController.loadUrl('file://'+this.path)
      })
    }
    .height('100%')
    .width('100%')
  }
}

document.loadDocument 是hms core的接口,建议使用web组件。

更多关于HarmonyOS 鸿蒙Next使用 document.loadDocument 预览沙箱路径下的pdf无反应的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对HarmonyOS鸿蒙Next系统中使用document.loadDocument预览沙箱路径下的PDF无反应的问题,可能的原因及解决方案如下:

  1. 权限问题

    • 确保应用已获取必要的文件访问权限,包括读取沙箱内的文件。
    • 检查文件路径是否正确,且文件确实存在于该路径下。
  2. 沙箱机制

    • 鸿蒙系统的沙箱机制可能限制了直接访问或预览沙箱内的文件。
    • 尝试通过系统提供的文件选择器API或其他官方推荐的方式来访问和预览文件。
  3. API使用不当

    • 确认document.loadDocument的使用方式是否符合鸿蒙系统的API规范。
    • 检查是否有参数传递错误或遗漏。
  4. 系统或应用问题

    • 确认鸿蒙系统版本是否支持该API。
    • 尝试重启应用或设备,查看问题是否依然存在。
    • 检查是否有应用更新或系统更新,可能包含对该问题的修复。

如果上述方法均无法解决问题,可能是由于系统本身的bug或未公开的限制导致。此时,建议直接联系鸿蒙系统的官方客服进行反馈和咨询。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部