HarmonyOS 浏览本地pdf文件 -

按照https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/web-pdf-preview-V5的说法,使用下面的路径file:///data/storage/el2/base/haps/entry/cache/E2024000000277137977.pdf,Web提示未能加载PDF文档。

HarmonyOS
23h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

参考下面的代码:

import { webview } from '@kit.ArkWeb';
import common from '@ohos.app.ability.common';
import request from '@ohos.request';
import { BusinessError } from '@ohos.base';
import fs from '@ohos.file.fs';
@Entry
@Component
export struct FCPdfWebViewPage {
  @State flag: Boolean = false;
  @State webController: WebviewController = new webview.WebviewController();
  @State path: string = '';
  build() {
    Column() {
      Button('下载', { type: ButtonType.Normal })
        .onClick(() => {
          console.log('下载')
          let context = getContext(this) as common.UIAbilityContext;
          let fileDir = context.filesDir;
          try {
            request.downloadFile(context, {
              url: 'xxxxx',
              filePath: fileDir + '/test.pdf'
            }).then((downloadTask: request.DownloadTask) => {
              downloadTask.on('complete', () => {
                let resFile = fs.openSync(fileDir + '/test.pdf', fs.OpenMode.READ_WRITE);
                const dateStr = (new Date().getTime()).toString()
                let newPath = fileDir + dateStr + resFile.name;
                fs.copyFileSync(resFile.fd, newPath);
                let realUri = 'file://' + newPath;
                this.path = realUri
                this.flag = true
                console.log(this.path)
              })
              downloadTask.on('progress', (receivedSize: number, totalSize: number) => {
                console.log(receivedSize.toString())
              })
              downloadTask.on('fail', (err: number) => {
                console.log(err.toString())
              })
            })
          } catch (error) {
            let err: BusinessError = error as BusinessError;
            console.error(`Invoke downloadFile failed, code is ${err.code}, message is ${err.message}`)
          }
        })
        .height('50vp')
        .width('100%')
        .backgroundColor(Color.Blue)
      if (this.flag) {
        Web({ src: this.path, controller: this.webController })
          .domStorageAccess(true)
          .javaScriptAccess(true)
          .zoomAccess(true)
          .aspectRatio(1)
          .overviewModeAccess(true)
          .imageAccess(true)
          .onlineImageAccess(true)
          .fileAccess(true)
          .databaseAccess(true)
          .multiWindowAccess(true)
          .geolocationAccess(true)
          .horizontalScrollBarAccess(true)
          .verticalScrollBarAccess(true)
          .cacheMode(CacheMode.Default)
          .mixedMode(MixedMode.All)
      } else {
        Web({ src: 'xxxxx', controller: this.webController })
          .domStorageAccess(true)
          .javaScriptAccess(true)
          .zoomAccess(true)
          .aspectRatio(1)
          .overviewModeAccess(true)
          .imageAccess(true)
          .onlineImageAccess(true)
          .fileAccess(true)
          .databaseAccess(true)
          .multiWindowAccess(true)
          .geolocationAccess(true)
          .horizontalScrollBarAccess(true)
          .verticalScrollBarAccess(true)
          .cacheMode(CacheMode.Default)
          .mixedMode(MixedMode.All)
      }
    }
  }
}
分享
微博
QQ
微信
回复
21h前
相关问题
提供浏览PDF文件的框架
246浏览 • 1回复 待解决
HarmonyOS PDF文件预览
0浏览 • 0回复 待解决
HarmonyOS PDF文件保存
72浏览 • 1回复 待解决
HarmonyOS 怎么打开PDF文件
226浏览 • 1回复 待解决
怎么下载网络上PDF保存到本地?
3782浏览 • 1回复 待解决
HarmonyOS 文件管理查找pdf文件并上传
74浏览 • 1回复 待解决
HarmonyOS 是否支持pdf、Word文件预览?
367浏览 • 1回复 待解决
HarmonyOS web组件预览PDF文件问题
5浏览 • 0回复 待解决
HarmonyOS 常见Office文件浏览支持
75浏览 • 1回复 待解决
如何实现pdf文件的预览?
526浏览 • 1回复 待解决
HarmonyOS Import本地文件
76浏览 • 1回复 待解决
通过loadDocument()接口加载PDF文件
537浏览 • 1回复 待解决