# About

filepreview : A file preview generator for node.js

Will generate a file preview (gif, jpg or png) of about 450 different document formats.

See filepreview in action, watch this demo using Angular : https://vimeo.com/151667833

## Installation

filepreview depends on 'unoconv':

```
  $ apt-get install unoconv
```

filepreview depends on 'ffmpeg':


```
  $ apt-get install ffmpeg
```

filepreview depends on 'ImageMagick':

```
  $ apt-get install imagemagick
```


filepreview depends on 'curl':

```
  $ apt-get install curl
```

To install use npm:

```
  $ npm install filepreview
```

## Usage

Asynchronous with callback (if error, will return error in the callback) :

```javascript
  var filepreview = require('filepreview');

  filepreview.generate('/home/myfile.docx', '/home/myfile_preview.gif', function(error) {
    if (error) {
      return console.log(error);
    }
    console.log('File preview is /home/myfile_preview.gif');
  });

```

Synchronous (if error, will return false):

```javascript
  var filepreview = require('filepreview');

  if (!filepreview.generateSync('/home/myfile.docx', '/home/myfile_preview.gif')) {
    console.log('Oops, something went wrong.');
  } else {
    console.log('File preview is /home/myfile_preview.gif');
  };

```

You can specify a url instead of a file path, ie: http://www.myfile.com/my_file.doc, and filepreview will download it to generate its preview.

You can set options object for the preview generation. List of options available:-
* width
* height
* quality [see quality documentation](https://www.imagemagick.org/script/command-line-options.php#quality)

e.g.
```javascript
var options = {
  width: 640,
  height: 480,
  quality: 90
};

// Asynchronous
filepreview.generate('/home/myfile.docx', '/home/myfile_preview.gif', options, function(error) {...});

// Synchronous
filepreview.generateSync('/home/myfile.docx', '/home/myfile_preview.gif', options);
```

To be more stable, you can run `unoconv` as [listener](https://github.com/dagwieers/unoconv#start-your-own-unoconv-listener) before running the file preview generation.
```
$ unoconv --listener
$ node script_with_file_preview_generations.js
```

## Document formats

The following list of document formats are currently available for exporting to:
-  bib      - BibTeX [.bib]
-  doc      - Microsoft Word 97/2000/XP [.doc]
-  doc6     - Microsoft Word 6.0 [.doc]
-  doc95    - Microsoft Word 95 [.doc]
-  docbook  - DocBook [.xml]
-  html     - HTML Document (OpenOffice.org Writer) [.html]
-  odt      - Open Document Text [.odt]
-  ott      - Open Document Text [.ott]
-  ooxml    - Microsoft Office Open XML [.xml]
-  pdb      - AportisDoc (Palm) [.pdb]
-  pdf      - Portable Document Format [.pdf]
-  psw      - Pocket Word [.psw]
-  rtf      - Rich Text Format [.rtf]
-  latex    - LaTeX 2e [.ltx]
-  sdw      - StarWriter 5.0 [.sdw]
-  sdw4     - StarWriter 4.0 [.sdw]
-  sdw3     - StarWriter 3.0 [.sdw]
-  stw      - Open Office.org 1.0 Text Document Template [.stw]
-  sxw      - Open Office.org 1.0 Text Document [.sxw]
-  text     - Text Encoded [.txt]
-  txt      - Plain Text [.txt]
-  vor      - StarWriter 5.0 Template [.vor]
-  vor4     - StarWriter 4.0 Template [.vor]
-  vor3     - StarWriter 3.0 Template [.vor]
-  xhtml    - XHTML Document [.html]

The following list of graphics formats are currently available for exporting to:
-  bmp      - Windows Bitmap [.bmp]
-  emf      - Enhanced Metafile [.emf]
-  eps      - Encapsulated PostScript [.eps]
-  gif      - Graphics Interchange Format [.gif]
-  html     - HTML Document (OpenOffice.org Draw) [.html]
-  jpg      - Joint Photographic Experts Group [.jpg]
-  met      - OS/2 Metafile [.met]
-  odd      - OpenDocument Drawing [.odd]
-  otg      - OpenDocument Drawing Template [.otg]
-  pbm      - Portable Bitmap [.pbm]
-  pct      - Mac Pict [.pct]
-  pdf      - Portable Document Format [.pdf]
-  pgm      - Portable Graymap [.pgm]
-  png      - Portable Network Graphic [.png]
-  ppm      - Portable Pixelmap [.ppm]
-  ras      - Sun Raster Image [.ras]
-  std      - OpenOffice.org 1.0 Drawing Template [.std]
-  svg      - Scalable Vector Graphics [.svg]
-  svm      - StarView Metafile [.svm]
-  swf      - Macromedia Flash (SWF) [.swf]
-  sxd      - OpenOffice.org 1.0 Drawing [.sxd]
-  sxd3     - StarDraw 3.0 [.sxd]
-  sxd5     - StarDraw 5.0 [.sxd]
-  tiff     - Tagged Image File Format [.tiff]
-  vor      - StarDraw 5.0 Template [.vor]
-  vor3     - StarDraw 3.0 Template [.vor]
-  wmf      - Windows Metafile [.wmf]
-  xhtml    - XHTML [.xhtml]
-  xpm      - X PixMap [.xpm]

The following list of presentation formats are currently available for exporting to:
-  bmp      - Windows Bitmap [.bmp]
-  emf      - Enhanced Metafile [.emf]
-  eps      - Encapsulated PostScript [.eps]
-  gif      - Graphics Interchange Format [.gif]
-  html     - HTML Document (OpenOffice.org Impress) [.html]
-  jpg      - Joint Photographic Experts Group [.jpg]
-  met      - OS/2 Metafile [.met]
-  odd      - OpenDocument Drawing (Impress) [.odd]
-  odg      - OpenOffice.org 1.0 Drawing (OpenOffice.org Impress) [.odg]
-  odp      - OpenDocument Presentation [.odp]
-  pbm      - Portable Bitmap [.pbm]
-  pct      - Mac Pict [.pct]
-  pdf      - Portable Document Format [.pdf]
-  pgm      - Portable Graymap [.pgm]
-  png      - Portable Network Graphic [.png]
-  pot      - Microsoft PowerPoint 97/2000/XP Template [.pot]
-  ppm      - Portable Pixelmap [.ppm]
-  ppt      - Microsoft PowerPoint 97/2000/XP [.ppt]
-  pwp      - PlaceWare [.pwp]
-  ras      - Sun Raster Image [.ras]
-  sda      - StarDraw 5.0 (OpenOffice.org Impress) [.sda]
-  sdd      - StarImpress 5.0 [.sdd]
-  sdd3     - StarDraw 3.0 (OpenOffice.org Impress) [.sdd]
-  sdd4     - StarImpress 4.0 [.sdd]
-  sti      - OpenOffice.org 1.0 Presentation Template [.sti]
-  stp      - OpenDocument Presentation Template [.stp]
-  svg      - Scalable Vector Graphics [.svg]
-  svm      - StarView Metafile [.svm]
-  swf      - Macromedia Flash (SWF) [.swf]
-  sxi      - OpenOffice.org 1.0 Presentation [.sxi]
-  tiff     - Tagged Image File Format [.tiff]
-  vor      - StarImpress 5.0 Template [.vor]
-  vor3     - StarDraw 3.0 Template (OpenOffice.org Impress) [.vor]
-  vor4     - StarImpress 4.0 Template [.vor]
-  vor5     - StarDraw 5.0 Template (OpenOffice.org Impress) [.vor]
-  wmf      - Windows Metafile [.wmf]
-  xhtml    - XHTML [.xml]
-  xpm      - X PixMap [.xpm]

The following list of spreadsheet formats are currently available for exporting to:
-  csv      - Text CSV [.csv]
-  dbf      - dBase [.dbf]
-  dif      - Data Interchange Format [.dif]
-  html     - HTML Document (OpenOffice.org Calc) [.html]
-  ods      - Open Document Spreadsheet [.ods]
-  ooxml    - Microsoft Excel 2003 XML [.xml]
-  pdf      - Portable Document Format [.pdf]
-  pts      - OpenDocument Spreadsheet Template [.pts]
-  pxl      - Pocket Excel [.pxl]
-  sdc      - StarCalc 5.0 [.sdc]
-  sdc4     - StarCalc 4.0 [.sdc]
-  sdc3     - StarCalc 3.0 [.sdc]
-  slk      - SYLK [.slk]
-  stc      - OpenOffice.org 1.0 Spreadsheet Template [.stc]
-  sxc      - OpenOffice.org 1.0 Spreadsheet [.sxc]
-  vor3     - StarCalc 3.0 Template [.vor]
-  vor4     - StarCalc 4.0 Template [.vor]
-  vor      - StarCalc 5.0 Template [.vor]
-  xhtml    - XHTML [.xhtml]
-  xls      - Microsoft Excel 97/2000/XP [.xls]
-  xls5     - Microsoft Excel 5.0 [.xls]
-  xls95    - Microsoft Excel 95 [.xls]
-  xlt      - Microsoft Excel 97/2000/XP Template [.xlt]
-  xlt5     - Microsoft Excel 5.0 Template [.xlt]
-  xlt95    - Microsoft Excel 95 Template [.xlt]

The following list of open office formats are currently available for exporting to:

- Microsoft Word 6.0/95/97/2000/XP (.doc and .dot)
- Microsoft Word 2003 XML (.xml)
- Microsoft Word 2007 XML (.docx, .docm, .dotx, .dotm)
- Microsoft WinWord 5 (.doc)
- WordPerfect Document (.wpd)
- WPS 2000/Office 1.0 (.wps)
- .rtf, .txt, and .csv
- StarWriter formats (.sdw, .sgl, .vor)
- DocBook (.xml)
- Unified Office Format text (.uot, .uof)
- Ichitaro 8/9/10/11 (.jtd and .jtt)
- Hangul WP 97 (.hwp)
- T602 Document (.602, .txt)
- AportisDoc (Palm) (.pdb)
- Pocket Word (.psw)
- Microsoft Excel 97/2000/XP (.xls, .xlw, and .xlt)
- Microsoft Excel 4.x–5.0/95 (.xls, .xlw, and .xlt)
- Microsoft Excel 2003 XML (.xml)
- Microsoft Excel 2007 XML (.xlsx, .xlsm, .xltx, .xltm)
- Microsoft Excel 2007 binary (.xlsb)
- Lotus 1-2-3 (.wk1, .wks, and .123)
- Data Interchange Format (.dif)
- Rich Text Format (.rtf)
- Text CSV (.csv and .txt)
- StarCalc formats (.sdc and .vor)
- dBASE (.dbf)
- SYLK (.slk)
- Unified Office Format spreadsheet (.uos, .uof)
- .htm and .html files, including Web page queries
- Pocket Excel (pxl)
- Quattro Pro 6.0 (.wb2)
- Microsoft PowerPoint 97/2000/XP (.ppt, .pps, and .pot)
- Microsoft PowerPoint 2007 (.pptx, .pptm, .potx, .potm)
- StarDraw and StarImpress (.sda, .sdd, .sdp, and .vor)
- Unified Office Format presentation (.uop, .uof)
- CGM – Computer Graphics Metafile (.cgm)
- Portable Document Format (.pdf)

The following list of video formats are currently available for exporting to:
- 3g2             3GP2 (3GPP2 file format)
- 3gp             3GP (3GPP file format)
- 4xm             4X Technologies
- a64             a64 - video for Commodore 64
- aac             raw ADTS AAC (Advanced Audio Coding)
- ac3             raw AC-3
- act             ACT Voice file format
- adf             Artworx Data Format
- adp             ADP
- adts            ADTS AAC (Advanced Audio Coding)
- adx             CRI ADX
- aea             MD STUDIO audio
- afc             AFC
- aiff            Audio IFF
- alaw            PCM A-law
- alias_pix       Alias/Wavefront PIX image
- alsa            ALSA audio output
- amr             3GPP AMR
- anm             Deluxe Paint Animation
- apc             CRYO APC
- ape             Monkey's Audio
- apng            Animated Portable Network Graphics
- aqtitle         AQTitle subtitles
- asf             ASF (Advanced / Active Streaming Format)
- asf_stream      ASF (Advanced / Active Streaming Format)
- ass             SSA (SubStation Alpha) subtitle
- ast             AST (Audio Stream)
- au              Sun AU
- avi             AVI (Audio Video Interleaved)
- avisynth        AviSynth script
- avm2            SWF (ShockWave Flash) (AVM2)
- avr             AVR (Audio Visual Research)
- avs             AVS
- bethsoftvid     Bethesda Softworks VID
- bfi             Brute Force & Ignorance
- bin             Binary text
- bink            Bink
- bit             G.729 BIT file format
- bmp_pipe        piped bmp sequence
- bmv             Discworld II BMV
- boa             Black Ops Audio
- brender_pix     BRender PIX image
- brstm           BRSTM (Binary Revolution Stream)
- c93             Interplay C93
- caca            caca (color ASCII art) output device
- caf             Apple CAF (Core Audio Format)
- cavsvideo       raw Chinese AVS (Audio Video Standard) video
- cdg             CD Graphics
- cdxl            Commodore CDXL video
- cine            Phantom Cine
- concat          Virtual concatenation script
- crc             CRC testing
- dash            DASH Muxer
- data            raw data
- daud            D-Cinema audio
- dfa             Chronomaster DFA
- dirac           raw Dirac
- dnxhd           raw DNxHD (SMPTE VC-3)
- dpx_pipe        piped dpx sequence
- dsf             DSD Stream File (DSF)
- dsicin          Delphine Software International CIN
- dss             Digital Speech Standard (DSS)
- dts             raw DTS
- dtshd           raw DTS-HD
- dv              DV (Digital Video)
- dv1394          DV1394 A/V grab
- dvbsub          raw dvbsub
- dvd             MPEG-2 PS (DVD VOB)
- dxa             DXA
- ea              Electronic Arts Multimedia
- ea_cdata        Electronic Arts cdata
- eac3            raw E-AC-3
- epaf            Ensoniq Paris Audio File
- exr_pipe        piped exr sequence
- f32be           PCM 32-bit floating-point big-endian
- f32le           PCM 32-bit floating-point little-endian
- f4v             F4V Adobe Flash Video
- f64be           PCM 64-bit floating-point big-endian
- f64le           PCM 64-bit floating-point little-endian
- fbdev           Linux framebuffer
- ffm             FFM (FFserver live feed)
- ffmetadata      FFmpeg metadata in text
- film_cpk        Sega FILM / CPK
- filmstrip       Adobe Filmstrip
- flac            raw FLAC
- flic            FLI/FLC/FLX animation
- flv             FLV (Flash Video)
- framecrc        framecrc testing
- framemd5        Per-frame MD5 testing
- frm             Megalux Frame
- g722            raw G.722
- g723_1          raw G.723.1
- g729            G.729 raw format demuxer
- gif             GIF Animation
- gsm             raw GSM
- gxf             GXF (General eXchange Format)
- h261            raw H.261
- h263            raw H.263
- h264            raw H.264 video
- hds             HDS Muxer
- hevc            raw HEVC video
- hls             Apple HTTP Live Streaming
- hls,applehttp   Apple HTTP Live Streaming
- hnm             Cryo HNM v4
- ico             Microsoft Windows ICO
- idcin           id Cinematic
- idf             iCE Draw File
- iec61883        libiec61883 (new DV1394) A/V input device
- iff             IFF (Interchange File Format)
- ilbc            iLBC storage
- image2          image2 sequence
- image2pipe      piped image2 sequence
- ingenient       raw Ingenient MJPEG
- ipmovie         Interplay MVE
- ipod            iPod H.264 MP4 (MPEG-4 Part 14)
- ircam           Berkeley/IRCAM/CARL Sound Format
- ismv            ISMV/ISMA (Smooth Streaming)
- iss             Funcom ISS
- iv8             IndigoVision 8000 video
- ivf             On2 IVF
- j2k_pipe        piped j2k sequence
- jack            JACK Audio Connection Kit
- jacosub         JACOsub subtitle format
- jpeg_pipe       piped jpeg sequence
- jpegls_pipe     piped jpegls sequence
- jv              Bitmap Brothers JV
- latm            LOAS/LATM
- lavfi           Libavfilter virtual input device
- libcdio          
- libdc1394       dc1394 v.2 A/V grab
- libgme          Game Music Emu demuxer
- libmodplug      ModPlug demuxer
- live_flv        live RTMP FLV (Flash Video)
- lmlm4           raw lmlm4
- loas            LOAS AudioSyncStream
- lrc             LRC lyrics
- lvf             LVF
- lxf             VR native stream (LXF)
- m4v             raw MPEG-4 video
- matroska        Matroska
- matroska,webm   Matroska / WebM
- md5             MD5 testing
- mgsts           Metal Gear Solid: The Twin Snakes
- microdvd        MicroDVD subtitle format
- mjpeg           raw MJPEG video
- mkvtimestamp_v2 extract pts as timecode v2 format, as defined by mkvtoolnix
- mlp             raw MLP
- mlv             Magic Lantern Video (MLV)
- mm              American Laser Games MM
- mmf             Yamaha SMAF
- mov             QuickTime / MOV
- mov,mp4,m4a,3gp,3g2,mj2 QuickTime / MOV
- mp2             MP2 (MPEG audio layer 2)
- mp3             MP3 (MPEG audio layer 3)
- mp4             MP4 (MPEG-4 Part 14)
- mpc             Musepack
- mpc8            Musepack SV8
- mpeg            MPEG-1 Systems / MPEG program stream
- mpeg1video      raw MPEG-1 video
- mpeg2video      raw MPEG-2 video
- mpegts          MPEG-TS (MPEG-2 Transport Stream)
- mpegtsraw       raw MPEG-TS (MPEG-2 Transport Stream)
- mpegvideo       raw MPEG video
- mpjpeg          MIME multipart JPEG
- mpl2            MPL2 subtitles
- mpsub           MPlayer subtitles
- msnwctcp        MSN TCP Webcam stream
- mtv             MTV
- mulaw           PCM mu-law
- mv              Silicon Graphics Movie
- mvi             Motion Pixels MVI
- mxf             MXF (Material eXchange Format)
- mxf_d10         MXF (Material eXchange Format) D-10 Mapping
- mxf_opatom      MXF (Material eXchange Format) Operational Pattern Atom
- mxg             MxPEG clip
- nc              NC camera feed
- nistsphere      NIST SPeech HEader REsources
- nsv             Nullsoft Streaming Video
- nut             NUT
- nuv             NuppelVideo
- oga             Ogg Audio
- ogg             Ogg
- oma             Sony OpenMG audio
- openal          OpenAL audio capture device
- opengl          OpenGL output
- opus            Ogg Opus
- oss             OSS (Open Sound System) playback
- paf             Amazing Studio Packed Animation File
- pictor_pipe     piped pictor sequence
- pjs             PJS (Phoenix Japanimation Society) subtitles
- pmp             Playstation Portable PMP
- png_pipe        piped png sequence
- psp             PSP MP4 (MPEG-4 Part 14)
- psxstr          Sony Playstation STR
- pulse           Pulse audio output
- pva             TechnoTrend PVA
- pvf             PVF (Portable Voice Format)
- qcp             QCP
- qdraw_pipe      piped qdraw sequence
- r3d             REDCODE R3D
- rawvideo        raw video
- realtext        RealText subtitle format
- redspark        RedSpark
- rl2             RL2
- rm              RealMedia
- roq             raw id RoQ
- rpl             RPL / ARMovie
- rsd             GameCube RSD
- rso             Lego Mindstorms RSO
- rtp             RTP output
- rtp_mpegts      RTP/mpegts output format
- rtsp            RTSP output
- s16be           PCM signed 16-bit big-endian
- s16le           PCM signed 16-bit little-endian
- s24be           PCM signed 24-bit big-endian
- s24le           PCM signed 24-bit little-endian
- s32be           PCM signed 32-bit big-endian
- s32le           PCM signed 32-bit little-endian
- s8              PCM signed 8-bit
- sami            SAMI subtitle format
- sap             SAP output
- sbg             SBaGen binaural beats script
- sdl             SDL output device
- sdp             SDP
- sdr2            SDR2
- segment         segment
- sgi_pipe        piped sgi sequence
- shn             raw Shorten
- siff            Beam Software SIFF
- singlejpeg      JPEG single image
- sln             Asterisk raw pcm
- smjpeg          Loki SDL MJPEG
- smk             Smacker
- smoothstreaming Smooth Streaming Muxer
- smush           LucasArts Smush
- sol             Sierra SOL
- sox             SoX native
- spdif           IEC 61937 (used on S/PDIF - IEC958)
- spx             Ogg Speex
- srt             SubRip subtitle
- stl             Spruce subtitle format
- stream_segment,ssegment streaming segment muxer
- subviewer       SubViewer subtitle format
- subviewer1      SubViewer v1 subtitle format
- sunrast_pipe    piped sunrast sequence
- sup             raw HDMV Presentation Graphic Stream subtitles
- svcd            MPEG-2 PS (SVCD)
- swf             SWF (ShockWave Flash)
- tak             raw TAK
- tedcaptions     TED Talks captions
- tee             Multiple muxer tee
- thp             THP
- tiertexseq      Tiertex Limited SEQ
- tiff_pipe       piped tiff sequence
- tmv             8088flex TMV
- truehd          raw TrueHD
- tta             TTA (True Audio)
- tty             Tele-typewriter
- txd             Renderware TeXture Dictionary
- u16be           PCM unsigned 16-bit big-endian
- u16le           PCM unsigned 16-bit little-endian
- u24be           PCM unsigned 24-bit big-endian
- u24le           PCM unsigned 24-bit little-endian
- u32be           PCM unsigned 32-bit big-endian
- u32le           PCM unsigned 32-bit little-endian
- u8              PCM unsigned 8-bit
- uncodedframecrc uncoded framecrc testing
- v4l2            Video4Linux2 output device
- vc1             raw VC-1 video
- vc1test         VC-1 test bitstream
- vcd             MPEG-1 Systems / MPEG program stream (VCD)
- video4linux2,v4l2 Video4Linux2 device grab
- vivo            Vivo
- vmd             Sierra VMD
- vob             MPEG-2 PS (VOB)
- vobsub          VobSub subtitle format
- voc             Creative Voice
- vplayer         VPlayer subtitles
- vqf             Nippon Telegraph and Telephone Corporation (NTT) TwinVQ
- w64             Sony Wave64
- wav             WAV / WAVE (Waveform Audio)
- wc3movie        Wing Commander III movie
- webm            WebM
- webm_chunk      WebM Chunk Muxer
- webm_dash_manifest WebM DASH Manifest
- webp            WebP
- webp_pipe       piped webp sequence
- webvtt          WebVTT subtitle
- wsaud           Westwood Studios audio
- wsvqa           Westwood Studios VQA
- wtv             Windows Television (WTV)
- wv              raw WavPack
- x11grab         X11 screen capture, using XCB
- xa              Maxis XA
- xbin            eXtended BINary text (XBIN)
- xmv             Microsoft XMV
- xv              XV (XVideo) output device
- xwma            Microsoft xWMA
- yop             Psygnosis YOP
- yuv4mpegpipe    YUV4MPEG pipe

## License

filepreview is released under the new BSD license.