2014-09-23 9 views
5

Sto usando meteora (che è costruita sul nodo) e CollectionCFS (che mi permette di usare gm [GraphicsMagick] per la thumb-nailing).Come posso creare le anteprime dei pdf con node.js e gm

faccio la seguente di averlo automaticly creare una miniatura di immagini caricate:

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

La funzione transformWrite riceve il readStream (l'immagine originale), lo modifica e tubi i risultati al writeStream. Come posso averlo creare miniature dei PDF?

+0

Hai provato questo codice con un file PDF? Per quanto posso dire, dovrebbe funzionare. Forse aggiungi "png" come argomento a stream() – gpothier

risposta

1

Se si desidera solo la prima pagina del pdf come miniatura. effettuare le seguenti operazioni:

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

Grazie mille per aver lavorato su questa domanda. Ero molto entusiasta di provare questo! Questa soluzione crea perfettamente la miniatura, ma per qualche motivo gli URL non sembrano mai funzionare. Sei sicuro della parte di fileObj.name() + '[0]'? –

+0

Ho provato fileObj.name e slugify (fileObj.name) e ho anche provato a spostare questa logica su beforeWrite in questo modo: name: slugify (fileObj.name), ma nessuna sembra funzionare. Il file è lì, ma l'url generato non sembra corrispondere allo –

+0

Mi sembra che abbia torto. Le immagini sembrano ok in dropbox (sto usando cfs: dropbox) ma quando li scarico sono corrotti. Ho notato che se carica un'immagine, la miniatura è creata e visualizzata correttamente. Quindi apparentemente la miniatura del PDF non è del tutto giusta. –