Graphicsmagick for Node 在转换 PDF 时没有写入正确的文件

Graphicsmagick for Node not writing to the correct file when converting PDF

我正在使用节点 gm 模块从 PDF 的第一页创建缩略​​图。

var fs = require('fs');
var gm = require('gm');

var writeStream = fs.createWriteStream("cover.jpg");

// Create JPG from page 0 of the PDF
gm("file.pdf[0]").setFormat("jpg").write(writeStream, function(error){
    if (!error) {
        console.log("Finished saving JPG");
    }
});

脚本有两个问题。

  1. 它创建了一个文件 cover.jpg,但该文件是空的(大小为 0)并且无法被任何查看者打开。
  2. 它创建了一个名为 [object Object] 的文件,它是 PDF 第一页的图像(这是我想要的,但名称错误)。

除了在生成 [object Object] 文件后进行一些额外的文件系统操作以重命名文件之外,我还可以更改我在其中使用 gmfs 的方式吗?此脚本将图像直接写入 cover.jpg 文件?

This question 与我的要求类似,但没有可接受的工作答案,我需要安装另一个库才能使用它(不可取)。

write 接收文件路径作为第一个参数,而不是写入流,因此该方法将流对象转换为其字符串表示形式,这就是它保存名为 [object Object] 的文件的原因。

你可以只使用.write("cover.jpg"),或者如果你想使用写流,你可以使用.stream().pipe(writeStream)

看看 gmstream examples