- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试使用 Firebase Cloud Functions 创建 PDF 文件的缩略图。
调用 gs 后,出现以下错误:
2018-06-12T11:29:08.685Z E makeThumbnail: Error: spawn EACCES
at exports._errnoException (util.js:1020:11)
at ChildProcess.spawn (internal/child_process.js:328:11)
at exports.spawn (child_process.js:370:9)
at Object.exec (/user_code/node_modules/gs/index.js:86:28)
at Promise (/user_code/index.js:95:12)
at mkdirp.then.then (/user_code/index.js:86:12)
2018-06-12T11:29:08.698166767Z D makeThumbnail: Function execution took 780 ms, finished with status: 'error'
const functions = require('firebase-functions');
const mkdirp = require('mkdirp-promise');
const gcs = require('@google-cloud/storage')();
const admin = require('firebase-admin');
const spawn = require('child-process-promise').spawn;
const path = require('path');
const os = require('os');
const fs = require('fs');
const gs = require('gs');
const THUMB_MAX_HEIGHT = 200;
const THUMB_MAX_WIDTH = 200;
const THUMB_PREFIX = 'thumb_';
const gs_exec_path = path.join(__dirname, './lambda-ghostscript/bin/gs');
try{admin.initializeApp(functions.config().firebase); } catch(e) {}
exports.makeThumbnail = functions.storage.object().onFinalize((object) => {
const filePath = object.name;
const contentType = object.contentType;
const fileDir = path.dirname(filePath);
const fileName = path.basename(filePath);
const thumbFilePath = path.normalize(path.join(fileDir, `${THUMB_PREFIX} ${fileName}`));
const tempLocalFile = path.join(os.tmpdir(), filePath);
const tempLocalDir = path.dirname(tempLocalFile);
const tempLocalThumbFile = path.join(os.tmpdir(), thumbFilePath);
const tmp_dir = os.tmpdir();
if (fileName.startsWith(THUMB_PREFIX)) {
console.log('Is thumbnail');
return null;
}
const bucket = gcs.bucket(object.bucket);
const file = bucket.file(filePath);
const thumbFile = bucket.file(thumbFilePath);
const metadata = {
contentType: contentType,
};
return mkdirp(tmp_dir).then(() => {
console.log("Dir Created");
console.log(tempLocalFile);
return file.download({destination: tempLocalFile});
}).then(() => {
console.log("File downloaded");
if(!contentType.startsWith("image/")){
return new Promise((resolve, reject) => {
const pg= 1;
gs().batch().nopause()
.option(`-dFirstPage=${pg}`)
.option(`-dLastPage=${pg}`)
.executablePath(gs_exec_path)
.device('png16m')
.output(tempLocalThumbFile+".png")
.input(tempLocalFile)
.exec(err => err ? reject(err) : resolve());
});
}
else
{
var args = [ tempLocalFile, '-thumbnail', `${THUMB_MAX_WIDTH}x${THUMB_MAX_HEIGHT}>`, tempLocalThumbFile ];
return spawn('convert', args, {capture: ['stdout', 'stderr']});
}
}).then(() => {
return bucket.upload(tempLocalThumbFile, { destination: thumbFilePath });
}).then(() => {
fs.unlinkSync(tempLocalFile);
fs.unlinkSync(tempLocalThumbFile);
return result[0];
});
});
最佳答案
经过几个小时的挠头并毫无意义地一遍又一遍地运行相同的代码,我终于找到了问题所在!
您定义的可执行路径不正确。应该是 'gs'
.
这是一个完整的 gs() 调用示例:
gs()
.batch()
.option('-dFirstPage=2')
.option('-dLastPage=2')
.nopause()
.res(90)
.executablePath('gs')
.device('jpeg')
.output(tempNewPath2)
.input(tempFilePath)
.exec((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);
}
});
关于javascript - 错误 : Cloud Functions for Firebase spawn EACCES (ghostscript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50816826/
我正在使用 Ghostscript 将多页 PDF 转换为单个 JPEG 文件,并且可以让它输出编号为 page_%03d.jpg 的文件。 但它总是从 page_001.jpg 开始,我需要它从 p
我在windows下的ghostscript中找不到清屏命令。请你帮助我好吗? 谢谢。 最佳答案 所以你想清除文本窗口?怎么样: 28 { ()= } repeat % output 28 bl
如何使用 ghostscript 创建空白页面?我想在将多个 PDF 合并在一起时执行此操作 - 类似于: `gs -dNOPAUSE -o /path/to/output input1.pdf i
我从 Ghostscript 调用中收到此错误消息: Error: /syntaxerror in -file- Operand stack: Execution stack: %interp_
我正在使用 Ghostscript 通过命令行参数打印 PDF。但它在打印机后台处理程序中将打印文档的名称显示为 Ghostscript 输出。我想将其更改为自定义名称(作为字母名称)。 最佳答案 请
我正在使用 Ghostscript 将可搜索的 PDF 转换为图像 PDF,以便使用成像工具包使用命令行查看它们: gswin32 -o c:\temp\output%d.png -r300 -dTe
我已经有大约 20 年没有手工编写 Postscript 代码了,所以我打开了 Bluebook 并将一些示例输入到名为 test.ps 的文件中。这是一个这样的例子: %!PS /doACircle
我知道他的问题到目前为止已经被问过很多次但是没有解决方案能够为能够使用所有者和用户密码保护 pdf 的 ghostscript 提供正确的语法和参数,也使用了加密,我已经使用以下命令但似乎没有人工作:
我知道他的问题到目前为止已经被问过很多次但是没有解决方案能够为能够使用所有者和用户密码保护 pdf 的 ghostscript 提供正确的语法和参数,也使用了加密,我已经使用以下命令但似乎没有人工作:
我应该传递哪些参数?我使用的 Ghostscript 版本是 8.71。 最佳答案 gs \ -dNOSAFER \ -sDEVICE=pdfwrite \ -o foo.pdf \ /us
我是 ghostscript 的新手,我无法理解语法。每当我尝试最简单的命令时,例如 -h 或 -?我收到一个错误,我尝试了各种组合。 GPL Ghostscript 9.05 (2012-0
我的桌面上有一个文件 abc.ps。我已经在我的机器上安装了 Ghostscript 9.05,我想使用命令行查看我的 abc.ps 文件。 GS>????? 我应该在这里写什么命令。我正在使用 Wi
将 CMYK eps 转换为 jpeg 时,Ghostscript 将颜色空间更改为 RGB。问题是在转换过程中保持颜色空间不变。提前谢谢。 最佳答案 假设您要将 EPS 中的任何 RGB 转换为 C
我正在 Linux 服务器中为我的应用程序运行 PostScript 到 PDF 转换服务。我安装了 Ghostscript 版本 8.70。我在 Windows 中使用 gsdll64.dll 、
是否可以使用ghostscript检查pdf是否受密码保护? 命令是什么? 我知道你可以使用 ghostscript 去除 pdf 密码, 但我想做的只是检查 PDF 是否受密码保护或启用安全性。 最
例子: 从 Excel 创建一张单页横向 PDF。使用 Adobe Reader 打开它,它以横向方式打开。使用 Ghostscript 打印它。使用 Adobe Reader 打开打印输出,
我正在尝试将彩色 pdf 转换为纯黑白 tiff,即如果颜色不是白色,我希望它是纯黑色。目前我的颜色线条变得有 Blob 和模糊,我认为这是由于半色调。有没有办法覆盖这个半色调?下面的例子。 电流输出
我有一个从 pdflatex 创建的文档,嵌入了 R pdf 图。我现在正试图将它发送给要求嵌入所有字体的打印机 (lulu)。我想,没问题, # gs -dNOPAUSE -dBATCH -dNOP
我使用这个 Ghostscript 命令将 PDF 转换为图像: gs \ -q -dQUIET -dPARANOIDSAFER -dBATCH -dNOPAUSE -dNOPROMPT \ -d
我有一个ghostscript命令,可将pdf转换为几个PNG图像(每页一个)。命令参数如下: -dNOPAUSE -q -r300 -sPAPERSIZE=a4 -dTextAlphaBits=4
我是一名优秀的程序员,十分优秀!