nodejs pdf文件转image

438 阅读1分钟

其中引入 pdf-poppler 但注意这个包6年没更新了 建议 node-poppler 哪个其实都不太好用

另外 pdf-image这个包不好鼓捣 别在这个包上浪费时间了 现在一些博客上的使用pdf-image将pdf转image不成功

const pdfPoppler = require('pdf-poppler');
···
fs.writeFile(path.resolve(getExePath() + `/temporary/${name}.pdf`), pdfData, (err) => {
				
        const pdfPath = path.resolve(getExePath() + `/temporary/${name}.pdf`)
        const outdir = path.resolve(getExePath() + `/temporaryImage`)
        console.log(pdfPath,outdir,'999')
        const opts = {
          format: 'jpeg',
          out_dir: outdir,
          out_prefix: `${name}`,
          page: null,
          scale: 4096
        };
        console.log(pdfPoppler,'pdfPoppler')
        pdfPoppler.info(pdfPath, opts).then(res => {
          const pages = Number(res.pages)
          pdfPoppler.convert(pdfPath, opts)
          .then(() => {
            console.log('PDF转换完成');
            // 读取图片文件
            const list = []
            for (let index = 0; index < pages; index++) {
              let imageFile = fs.readFileSync(path.join(outdir, `${name}-${index+1}.jpg`), { encoding: null });
              // 将图片文件编码为 Base64
              list[index] = Buffer.from(imageFile).toString('base64')
            }
            // 输出
            if (err) {
              logger.error("图像模板打印生成pdf失败,", err)
              console.timeEnd('耗时')
              event.reply('pdfData' + params.time, {
                data: {
                  state: '-9999',
                  msg: '生成pdf失败'
                }
              })
            } else {
              logger.info("图像模板打印生成pdf成功:", 'success')
              event.reply('pdfData' + params.time, {
                data: list,
                pdfUrl: pdfUrl
              })
            }
            console.log(base64mage,'base64');
          })
          .catch((err) => {
            console.error(err);
          });
        })
        
			});