鸿蒙图片转PDF

一、学习笔记

HarmonyOS NEXT API 12


二、实例代码

将 base64 格式的图片,转为PDF

  /**
   * @param mOutputPdfFileName 保存的路径;例如:getContext().cacheDir +"/"+fileName
   * @param base64Str  base64格式的图片
   */
  async picConvertPDF(mOutputPdfFileName: string, base64Str: string) {

    let filePath = await base64ImgConvertFilePath(getContext(), base64Str)
    if (filePath == undefined) {
      throw new Error('PDF转换失败')
      return
    }

    let pixMap = await uriOrPathConvertPixelMap(filePath)
    if (pixMap == undefined) {
      throw new Error('PDF转换失败')
      return
    }
    let imageInfo = await pixMap.getImageInfo()
    let pdfDocument = new pdfService.PdfDocument()
    // 一英寸等于72Points,A4纸的尺寸描述为210 x 297毫米 (8.27 x 11.69英寸)
    let documentWidth = 72 * 8.27
    let documentHeigh = 72 * 11.6
    let createResult = pdfDocument.createDocument(documentWidth, documentHeigh)
    if (createResult) { // 是否成功创建文档
      let pdfPage: pdfService.PdfPage = pdfDocument.getPage(0);
      // pxConvertInch() 像素转英寸;
      let imageWidthIn = WindowUtils.pxConvertInch(imageInfo.size.width) * 72
      let imageHeightIn = WindowUtils.pxConvertInch(imageInfo.size.height) * 72
      // 宽度拉满时,缩放的倍数
      let ratio = documentWidth / imageWidthIn

      pdfPage.addImageObject(
        filePath,
        (documentWidth - imageWidthIn * ratio ) / 2,   // 为了图片居中
        (documentHeigh - imageHeightIn * ratio) / 2,  // 为了图片居中
        imageWidthIn * ratio, 
        imageHeightIn * ratio
      )
      pdfDocument.saveDocument(mOutputPdfFileName)
    } else {
      throw new Error('PDF 创建失败')
      return
    }
  }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 年前的时候,开发一个电子杂志项目,功能需求是通过上传pdf文件,将其转为图片格式,所以杂志的内容其实就是一张...
    程序员Winn阅读 10,819评论 25 24
  • 图片优化技巧 前言:对于大多数前端工程师来说,图片就是UI设计师(或者自己)切好的图,你要做的只是把图片丢进项目中...
    loneliness_8728阅读 1,088评论 0 1
  • 前言 Image通过调用接口来创建,接口调用形式如下: 该接口通过图片数据源获取图片,支持本地图片和网络图片的渲染...
    __Mr_Xie__阅读 3,208评论 0 1
  • 公司有个业务需求,要求后台传pdf的base64编码给前端,前端显示到界面上,后来在网上搜索了很多关于base64...
    心_c2a2阅读 16,845评论 2 6
  • 原文:https://lwebapp.com/zh/post/python-image-to-ascii[http...
    openHacking阅读 1,130评论 0 0