Javascript 如何使用node.js和gm创建PDF的缩略图

Javascript 如何使用node.js和gm创建PDF的缩略图,javascript,node.js,pdf,meteor,graphicsmagick,Javascript,Node.js,Pdf,Meteor,Graphicsmagick,我使用的是meteor(它构建在node上)和CollectionCFS(它允许我使用gm[GraphicsMagick]来钉拇指) 我执行以下操作以使其自动创建上载图像的缩略图: new FS.Store.FileSystem("thumbs", { transformWrite: function(fileObj, readStream, writeStream) { gm(readStream, fileObj.name()).resize('100', '10

我使用的是meteor(它构建在node上)和CollectionCFS(它允许我使用gm[GraphicsMagick]来钉拇指)

我执行以下操作以使其自动创建上载图像的缩略图:

new FS.Store.FileSystem("thumbs", {
      transformWrite: function(fileObj, readStream, writeStream) {
        gm(readStream, fileObj.name()).resize('100', '100').stream().pipe(writeStream);
      },
      path: "/Volumes/Public/Thumbs",
    })

transformWrite函数接收readStream(原始图像),对其进行修改,并将结果传递给writeStream。我怎样才能让它创建PDF的缩略图呢?

如果您只想将PDF的第一页作为缩略图。请执行以下操作:

new FS.Store.FileSystem("thumbs", {
  transformWrite: function(fileObj, readStream, writeStream) {
    gm(readStream, fileObj.name() + '[0]').resize('100', '100').stream('png').pipe(writeStream);
  },
  beforeWrite: function (fileObj) {
    return {
      extension: 'png',
      type: 'image/png'
    };
  },
  path: "/Volumes/Public/Thumbs",
})

您是否使用PDF文件尝试了此代码?据我所知,它应该会起作用。也许可以在stream()中添加“png”作为参数。非常感谢您解决这个问题。我很兴奋能尝试一下!此解决方案完美地创建了缩略图,但由于某些原因,URL似乎无法正常工作。你确定fileObj.name()+“[0]”部分吗?我尝试了fileObj.name和slagify(fileObj.name),还尝试了将此逻辑移动到beforewite,如下所示:name:slagify(fileObj.name),但似乎都不起作用。文件在那里,但生成的url似乎不匹配。我似乎错了。这些图片在dropbox中看起来不错(我使用的是cfs:dropbox),但是当我下载它们时,它们已经损坏了。我注意到,如果我上传一幅图像,缩略图就会制作并正确显示。显然PDF的缩略图不太正确,就是这样!成功了!非常感谢!我永远也想不到这一点。