【发布时间】:2020-08-28 04:29:19
【问题描述】:
我正在尝试编写一个 Azure 函数来将 pdf 转换为 Node.js 中的图像,但没有成功。直接在 azure 门户中编写。使用开箱即用的 pdf-poppler 包。这里 sourcepdf 和 targetimage 是我的 blob 容器。
下面是代码,
const pdf = require('pdf-poppler');
const path = require('path');
const fs = require('fs');
const URL = require('url');
const storage = require('azure-storage');
module.exports = async function (context, myBlob) {
context.log(context.bindingData.blobTrigger);
//context.log(context.bindingData.uri);
let file = '/sourcepdf/sample.pdf';
let opts = {
format: 'jpeg',
out_dir: '/targetimage/sample.jpg',
out_prefix: path.baseName(file, path.extname(file)),
page: null
}
pdf.convert(file, opts)
.then(res => {
console.log('Successfully converted');
})
.catch(error => {
console.error(error);
})
//context.log("JavaScript blob trigger function processed blob \n Blob:", context.bindingData.blobTrigger, "\n Blob Size:", myBlob.length, "Bytes");
};
任何建议,
【问题讨论】:
-
控制台记录了什么错误?是不是找不到文件?
-
我不认为您可以像这样编写文件系统路径并假设它们会自动映射到 Azure blob 存储容器。 pdf-poppler 可以处理文件流还是需要磁盘上的文件?我猜您必须将源文件从 blob 存储中传输出来,对其进行处理,然后再次将其上传回来,但我不知道临时本地文件如何与 Azure 函数一起使用。
-
我得到的错误是,异常:TypeError: path.baseName is not a function
-
哦,对了:
basename全部小写。但如上所述,我不认为这些路径实际上只适用于 blob 存储,而不需要做一些额外的工作来显式地传入和传出文件。
标签: javascript azure azure-functions azure-blob-storage