【问题标题】:Cloud Functions for converting PDF to image用于将 PDF 转换为图像的云函数
【发布时间】:2019-10-09 02:25:30
【问题描述】:

我在这篇文章Cloud Functions for Firebase - Converting PDF to image的指导下设置了一个云功能

运行该函数时,它运行时没有错误,但没有创建图像。

const tempDir = os.tmpdir()
await new Promise(function (resolve, reject) {
  gs()
    .batch()
    .nopause()
    .executablePath('lambda-ghostscript/bin/./gs')
    .option('-dTextAlphaBits=4')
    .res(300)
    .device('jpg')
    .output(`${tempDir}/page-01.jpg`)
    .input(filepath)
    .exec(function (err, stdout, stderr) {
        if (!err) {
          console.log('gs executed w/o error');            
          console.log('stdout',stdout);            
          console.log('stderr',stderr);            
          resolve();
        } else {
          console.log('gs error:', err);
          reject(err);
        }
    });
});
fs.lstat(tempDir+'/page-01.jpg', (err, stats) => {
  if(err)
      return console.log(err); //Handle error
  console.log(`Is file: ${stats.isFile()}`);
});

这是检查新文件是否已创建时的输出:

gs command: -dBATCH,-dNOPAUSE,-dTextAlphaBits=4,-r300,-sDEVICE=jpg,-sOutputFile=/var/folders/dd/zdnq1dcn2vb328ntxxt7_97c0000gn/T/page-01.jpg,/var/folders/dd/zdnq1dcn2vb328ntxxt7_97c0000gn/T/m5YF7ipQsLCuTE9c0pWC_raw.pdf
info: gs executed w/o error
info: stdout 
stderr undefined
info: { Error: ENOENT: no such file or directory, lstat '/var/folders/dd/zdnq1dcn2vb328ntxxt7_97c0000gn/T/page-01.jpg'
  errno: -2,
  code: 'ENOENT',
  syscall: 'lstat',
  path: '/var/folders/dd/zdnq1dcn2vb328ntxxt7_97c0000gn/T/page-01.jpg' }```

【问题讨论】:

  • 请编辑问题以显示整个 Cloud Function 代码,而不仅仅是它的 sn-p。
  • 在云函数上,唯一的 writable part of the filesystem 是 /tmp,因此您不应该尝试写入 /var。

标签: javascript node.js google-cloud-functions ghostscript


【解决方案1】:

你得到的错误是因为你试图写入一个不存在的文件,或者它不可写。

我想“fs”变量来自文件系统。请注意,正如官方文档中所述:

文件系统中唯一可写的部分是 /tmp 目录,您可以使用它在函数实例中存储临时文件。这是一个本地磁盘挂载点,称为“tmpfs”卷,其中写入该卷的数据存储在内存中。请注意,它会消耗为函数配置的内存资源。

您尝试写入的“var”目录是只读的,函数可以访问。

我的建议是尝试修改“gs().output(param)”函数的参数,例如:

 tempPath = path.join(os.tmpdir(), newName);

其中“newName”是您要创建的图像的名称。

【讨论】:

    猜你喜欢
    • 2017-01-05
    • 2016-03-20
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 2016-09-14
    相关资源
    最近更新 更多