HarmonyOS 鸿蒙Next PDF无法编辑的问题

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

HarmonyOS 鸿蒙Next PDF无法编辑的问题

使用PDF Kit创建一个pdf,并插入空白页,在空白页上添加文本和图片,保存。插入空白页和保存都成功了,但文本和图片并没有添加到页面上。显示的是两个空白页。另:save中的进度回调中的log没有输出。具体代码如下:

import { pdfService } from "@kit.PDFKit";

saveAsPdf(savePath: string, images: string[], callback?: Function) {
    const tempFilePath: string = `${this.context.tempDir}/${this.dirName}.pdf`;
    const pdfDocument: pdfService.PdfDocument = new pdfService.PdfDocument();
    pdfDocument.createDocument(595, 842);
    pdfDocument.insertBlankPage(1, 595, 842);
    const page = pdfDocument.getPage(1);
    page.addTextObject('Hello world', 20, 20, {textColor: Color.Red, textSize: 20});
    LogUtil.info('图片:', JSON.stringify(images));
    LogUtil.info('沙箱地址:', FileUtil.getFilePath(images[0]));
    page.addImageObject(images[0], 0, 0, 595, 842);
    pdfDocument.saveDocument(tempFilePath, (progress: number) => {
      LogUtil.info('进度:', progress.toString());
      return progress;
    })
}

更多关于HarmonyOS 鸿蒙Next PDF无法编辑的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

参考此demo

import { fileIo as fs } from '@kit.CoreFileKit';
import { pdfService } from '@kit.PDFKit';
import { common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

@Entry
@Component
struct Page {
  build() {
    Column() {
      Button('转图片')
        .onClick(()=>{
          this.copyFile('index.png')
          this.savePdf()
        })
        .margin(20)
    }
  }

  copyFile(fileName:string){
    let context = getContext(this) as common.UIAbilityContext;
    try {
      let data = context.resourceManager.getRawFileContentSync(fileName)
      let buffer = data.buffer
      let sanboxPath = context.filesDir
      try {
        let filePath = sanboxPath + "/" + fileName
        let file = fs.openSync(filePath, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE)
        try {
          fs.writeSync(file.fd, buffer) // 拷贝文件到沙箱
          fs.close(file.fd)
          console.log('myRawfileCopy success ' + data)
        } catch (err) {
          console.log('myRawfileCopy error')
        }
      } catch (error) {
        let err: BusinessError = error as BusinessError;
        console.error(err.message);
      }
    } catch (error) {
      let err: BusinessError = error as BusinessError;
      console.error(err.message);
    }
  }

  savePdf(){
    let filePath = getContext().filesDir + '/pdf002.pdf'
    let imgPath = getContext().filesDir + "/index.png";
    if (!fs.accessSync(filePath)) {
      // 新建并打开文件
      let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
      // 关闭文件
      fs.closeSync(file);
    }
    if (!fs.accessSync(imgPath)) {
      console.info("没有图片")
      return
    }
    let tempFilePath = getContext().tempDir + `/temp${Math.random()}.pdf`;
    fs.copyFileSync(filePath,tempFilePath)
    let pdfDocument = new pdfService.PdfDocument();
    let loadResult = pdfDocument.loadDocument(tempFilePath,'');
    console.info("pdfService.ParseResult.PARSE_SUCCESS:",pdfService.ParseResult.PARSE_SUCCESS)
    pdfDocument.createDocument(728.27,1000)
    let pdfPage: pdfService.PdfPage = pdfDocument.getPage(0);

    pdfPage.addImageObject(imgPath, 0, 0, 728.27, 1000);
    pdfDocument.saveDocument(filePath);
  }
}

更多关于HarmonyOS 鸿蒙Next PDF无法编辑的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


添加图片是正常的,但是添加文字后,最终生成的pdf中没有文字,不知道什么原因。我的这块代码没有修改过,5.0.0版本的时候还是正常的,升级后就没有文字了。

怎么解决的?看不出来呀。

针对HarmonyOS(鸿蒙)系统中Next PDF无法编辑的问题,这里提供直接的技术解答:

在鸿蒙系统上,如果Next PDF应用程序不支持编辑功能,这通常意味着该PDF文件是以只读模式打开的,或者Next PDF应用本身不具备编辑PDF文件的能力。要解决这个问题,你可以尝试以下几个方法:

  1. 检查PDF文件属性:确保PDF文件没有被设置为只读。虽然这通常在文件系统中设置,但在某些PDF编辑软件中也可以查看和修改。

  2. 使用专业PDF编辑软件:尝试使用其他支持PDF编辑的软件,如WPS Office或Adobe Acrobat等,这些软件通常提供完整的PDF编辑功能。

  3. 转换PDF为可编辑格式:如果原始PDF文件是由其他格式(如Word、Excel)转换而来的,尝试找到原始文件并进行编辑,然后再转换回PDF格式。

  4. 检查鸿蒙系统版本:确保你的鸿蒙系统已经更新到最新版本,因为新版本可能会修复一些已知的问题或增加新的功能。

  5. 应用更新:检查Next PDF应用是否有可用的更新,因为开发者可能已经修复了编辑相关的问题。

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

回到顶部