【问题标题】:How can I create thumbnails of pdfs with node.js and gm如何使用 node.js 和 gm 创建 pdf 的缩略图
【发布时间】:2014-11-17 17:28:49
【问题描述】:

我正在使用流星(构建在节点上)和 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 文件?据我所知,它应该可以工作。也许将“png”作为参数添加到 stream()

标签: javascript node.js pdf meteor graphicsmagick


【解决方案1】:

如果您只想将 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",
})

【讨论】:

  • 非常感谢您解决这个问题。我很兴奋能试试这个!此解决方案完美地创建了缩略图,但由于某种原因,网址似乎永远无法正常工作。你确定 fileObj.name()+'[0]' 部分吗?
  • 我尝试了 fileObj.name 和 slugify(fileObj.name),我也尝试将此逻辑移动到 beforeWrite 中,如下所示:name:slugify(fileObj.name),但似乎都没有工作。文件在那里,但生成的 url 似乎不匹配
  • 我好像错了。图片在 Dropbox 中看起来不错(我使用的是 cfs:dropbox),但是当我下载它们时,它们已损坏。我注意到,如果我上传图片,缩略图会正确制作和显示。所以显然 PDF 的缩略图不太正确。
  • 就是这样!有效!万分感谢!我永远也想不通。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 2016-05-10
  • 2012-10-27
  • 2014-03-23
  • 2021-09-28
  • 1970-01-01
相关资源
最近更新 更多