2014-09-23 72 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