2014-09-23 68 views
5

我使用流星(它建立在节点上)和CollectionCFS(它允许我使用gm [GraphicsMagick]进行拇指钉钉)。我如何使用node.js和gm创建pdf的缩略图

我执行以下操作把它全自动创建上载的图像的缩略图:

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的缩略图?

+0

你是否试用PDF格式的文件?据我所知,它应该工作。也许添加“png”作为流的参数() – gpothier 2015-05-13 21:07:23

回答

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", 
}) 
+0

非常感谢您处理这个问题。我非常激动地尝试一下!该解决方案完美地创建了缩略图,但由于某些原因,这些网址似乎无法工作。你确定fileObj.name()+'[0]'部分? – 2015-06-23 03:32:41

+0

我试过fileObj.name和slugify(fileObj.name),我也试过将这个逻辑移动到beforeWrite中,如下所示:name:slugify(fileObj.name),但似乎没有任何效果。该文件在那里,但生成的网址似乎不匹配 – 2015-06-23 03:34:15

+0

我似乎错了。保存图像看起来没问题(我使用的是cfs:dropbox),但是当我下载它们时,它们已损坏。我注意到如果我上传一张图片,缩略图就会正确显示。显然,PDF的缩略图并不完全正确。 – 2015-06-23 03:49:04