HarmonyOS 鸿蒙Next:创建PDF添加文字或图片后,保存到本地打开显示为空白内容
HarmonyOS 鸿蒙Next:创建PDF添加文字或图片后,保存到本地打开显示为空白内容 pdf相关文档地址:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/pdf-introduction-V5
按照文档描述创建pdf,添加图片和文字,保存到本地Documents目录下后打开是空白的
-
添加文字,当前addTextObject,添加文本内容,只可按行添加,只支持单行,不支持换行:
-
创建pdf添加文字或者图片建议参考一下代码(当前图片和pdf文件保存的路径都为沙箱路径,具体可查看:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/share-app-file-V5#应用可分享目录):
import { photoAccessHelper } from '@kit.MediaLibraryKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { pdfService } from '@kit.PDFKit';
import fs from '@ohos.file.fs';
@Entry
@Component
struct Index {
@State imageUri: string = '';
build() {
Column() {
Button('选择图片')
.onClick(() => {
this.selectImage()
})
Image(this.imageUri)
.width('100%')
.layoutWeight(1)
Button('image转PDF')
.onClick(() => {
this.savePdf()
})
}
}
async savePdf() {
console.info('testTag', 'enter savePath')
let pdfDocument = new pdfService.PdfDocument();
let isCreate = pdfDocument.createDocument(600, 900);
if (isCreate) {
console.info('testTag', 'enter savePath getPageCount = ' + pdfDocument.getPageCount())
let imagePdfPage = pdfDocument.getPage(0)
let dir = getContext().filesDir;
let imgPath = dir + "/test.jpg";
console.info('testTag', 'pdf imgPath =' + imgPath)
imagePdfPage.addImageObject(imgPath, 20, 20, 500, 500);
let textPdfPage = pdfDocument.insertBlankPage(1, 600, 900)
let textStyle: pdfService.TextStyle = new pdfService.TextStyle;
let fontInfo = new pdfService.FontInfo();
fontInfo.fontPath = "/system/fonts/HarmonyOS_Sans.ttf"
textStyle.fontInfo = fontInfo;
textStyle.textSize = 32;
textStyle.textColor = 234;
textStyle.isBold = true;
textStyle.isItalic = false;
textPdfPage.addTextObject(text, 20, 120, textStyle); //添加示例文字
let randomNumber = Math.floor((Math.random() * 100));
let savePath = getContext().filesDir + `/output${randomNumber}.pdf`;
console.info('testTag', 'pdf savePath =' + savePath)
let result = pdfDocument.saveDocument(savePath)
console.info('testTag', 'pdf 保存结果:' + result)
}
}
selectImage() {
let photoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
photoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;
photoSelectOptions.maxSelectNumber = 1
let photoPicker = new photoAccessHelper.PhotoViewPicker();
photoPicker.select(photoSelectOptions).then((photo: photoAccessHelper.PhotoSelectResult) => {
let images = photo.photoUris
if (images.length > 0) {
this.imageUri = images[0]
let file = fs.openSync(images[0], fs.OpenMode.READ_ONLY);
fs.copyFileSync(file.fd, getContext().filesDir + '/test.jpg');
}
}).catch((err: BusinessError) => {
console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`);
});
}
}
更多关于HarmonyOS 鸿蒙Next:创建PDF添加文字或图片后,保存到本地打开显示为空白内容的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
怎么解决的?
针对帖子标题“HarmonyOS 鸿蒙Next:创建PDF添加文字或图片后,保存到本地打开显示为空白内容”的问题,可能的原因及解决方案如下:
-
PDF生成库问题:检查所使用的PDF生成库是否兼容HarmonyOS系统,或者是否存在已知的bug导致生成的PDF文件在某些情况下无法正常显示内容。尝试更新或更换PDF生成库。
-
文件保存路径或权限问题:确认文件保存路径是否正确,以及应用是否具有写入该路径的权限。权限不足可能导致文件保存不完整或无法正确写入内容。
-
PDF内容格式问题:检查添加的文字或图片格式是否正确,以及是否遵循了PDF的规范。例如,图片格式不支持或文字编码错误都可能导致内容显示为空白。
-
文件损坏:在文件生成和保存过程中,可能存在某些操作导致文件损坏。尝试在生成PDF后立即打开以检查是否立即出现空白内容,以判断是生成过程还是保存过程的问题。
-
PDF阅读器兼容性问题:尝试使用不同的PDF阅读器打开生成的PDF文件,以排除是特定阅读器兼容性问题导致的空白显示。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html,