可以使用Share kit(分享服务)将pdf文件分享到微信,需要先在resource资源目录下resfile目录里放入pdf文件。
import { systemShare } from '@kit.ShareKit'; import { common } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; import { fileUri } from '@kit.CoreFileKit'; import { uniformTypeDescriptor } from '@kit.ArkData'; import fs from '@ohos.file.fs'; @Entry @Component struct SharePage { context = this.getUIContext()?.getHostContext() as common.UIAbilityContext; aboutToAppear(): void { let fileExtention = '.pdf'; let typeId = uniformTypeDescriptor.getUniformDataTypeByFilenameExtension(fileExtention); uniformTypeDescriptor.getTypeDescriptor(typeId); } sharePDF(){ // 获取文件沙箱路径 let filePath = this.context.filesDir + '/test.pdf'; // 将沙箱路径转换为uri let uri = fileUri.getUriFromPath(filePath); let shareData: systemShare.SharedData = new systemShare.SharedData({ utd: 'com.adobe.pdf', uri: uri, title: '标题', // 不传title字段时,显示图片文件名 description: '描述', // 不传description字段时,显示图片大小 }); // 进行分享面板显示 let controller: systemShare.ShareController = new systemShare.ShareController(shareData); controller.show(this.context, { selectionMode: systemShare.SelectionMode.BATCH, // 选择模式默认为SINGLE,BATCH模式为批量分享 previewMode: systemShare.SharePreviewMode.DETAIL, }).then(() => { console.info('ShareController show success.'); }).catch((error: BusinessError) => { console.error(`ShareController show error. code: ${error.code}, message: ${error.message}`); }); } copyPDF(){ let file = fs.openSync(this.context.resourceDir+'/test.pdf', fs.OpenMode.READ_ONLY); let file2 = fs.openSync(this.context.filesDir+'/test.pdf', fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); fs.copyFileSync(file.fd, file2.fd); fs.closeSync(file); fs.closeSync(file2); } build() { Column() { Button('点击分享pdf') .width(150).margin({ top: 20 }) .onClick(()=>{ this.copyPDF(); this.sharePDF(); }) }.padding(20) .height('100%') .justifyContent(FlexAlign.Center) } }