2014-09-23 20 views
5

Używam meteoru (który jest zbudowany na węźle) i CollectionCFS (który pozwala mi używać gm [GraphicsMagick] do wtykania kciukiem).W jaki sposób można utworzyć miniatury plików PDF za pomocą węzła node.js i gm

I wykonaj następujące czynności, aby go automatycznie tworzyć miniatury przesłanych obrazów:

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

Funkcja transformWrite odbiera readStream (obraz oryginalny), modyfikuje go i rur wyniki do writeStream. Jak mogę to zrobić, tworząc miniatury plików PDF?

+0

Czy próbowałeś tego kodu z plikiem PDF? O ile wiem, powinno działać. Może dodać "png" jako argument do streamowania() – gpothier

Odpowiedz

1

Jeśli chcesz tylko pierwszej strony pdf jako miniatury. wykonaj następujące czynności:

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

Dziękuję bardzo za pracę nad tym pytaniem. Byłem bardzo podekscytowany wypróbowaniem tego! To rozwiązanie idealnie tworzy miniaturę, ale z jakiegoś powodu adresy URL nigdy nie działają. Czy jesteś pewien co do części fileObj.name() + '[0]'? –

+0

Próbowałem fileObj.name i slugify (fileObj.name) i również próbowałem przenieść tę logikę do beforeWrite w następujący sposób: name: slugify (fileObj.name), ale nic z tego nie działa. Plik istnieje, ale wygenerowany adres URL nie pasuje do –

+0

. Obrazy wyglądają dobrze w Dropboxie (używam cfs: dropbox), ale kiedy je ściągam, są uszkodzone. Zauważyłem, że po przesłaniu obrazu miniatura jest wyświetlana poprawnie. Najwyraźniej miniaturka PDF nie jest całkiem poprawna. –