Run Pandoc from NodeJS. Pandoc installation is required.
- This package is inspired by
node-pandoc
byeshinn
.
Install
# If using as a dependancy in your module npm install node-pandoc-promise --save # ...or for use in your project npm install node-pandoc-promise --save-dev
Prior to using node-pandoc-promise, you must install Pandoc by John MacFarlane.
What’s Pandoc?
If you need to convert files from one markup format into another, pandoc is your swiss-army knife. Pandoc can convert documents in markdown, reStructuredText, textile, HTML, DocBook, LaTeX, MediaWiki markup, TWiki markup, OPML, Emacs Org-Mode, Txt2Tags, Microsoft Word docx, LibreOffice ODT, EPUB, or Haddock markup to
- HTML formats: XHTML, HTML5, and HTML slide shows using Slidy, reveal.js, Slideous, S5, or DZSlides
- Word processor formats: Microsoft Word docx, OpenOffice/LibreOffice ODT, OpenDocument XML
- Ebooks: EPUB version 2 or 3, FictionBook2
- Documentation formats: DocBook, GNU TexInfo, Groff man pages, Haddock markup
- Page layout formats: InDesign ICML
- Outline formats: OPML
- TeX formats: LaTeX, ConTeXt, LaTeX Beamer slides
- PDF via LaTeX
- Lightweight markup formats: Markdown (including CommonMark), reStructuredText, AsciiDoc, MediaWiki markup, DokuWiki markup, Emacs Org-Mode, Textile
- Custom formats: custom writers can be written in lua
So Then What’s node-pandoc-promise Do?
node-pandoc-promise is simply a bridge between the Pandoc CLI (command-line interface) and NodeJS.
Usage
pandoc ( src args [options], pandocPath )
Parameters
src
The src can be either the location of a file (./content/file.docx) or a string of textual input ("# Hello, Bananas").
args
The same list of arguments that pandoc accepts on the command line. Arguments are accepted as either a full String or as an Array.
pandocPath
The pandoc binary path, will use "pandoc" as default.
options
The options parameter accepts and passes along a Node Child_Process.Spawn object and is completely optional. View a complete list of Pandoc options on the Pandoc website or pull it from the command-line by typing:
$ pandoc -h
Examples of Using node-pandoc-promise
Converting a word.docx file to a markdown.md
// In EcmaScript 5... var nodePandoc = ;var src args; src = './word.docx'; // Arguments can be either a single string:args = '-f docx -t markdown -o ./markdown.md';// Or in an array of strings -- careful no spaces are present:args = '-f''docx''-t''markdown''-o''markdown.md'; // Call pandoc;
// In ES-6 (ES-2015) let src = './word.docx'; // Arguments can be either a single String or in an Arraylet args = '-f docx -t markdown -o ./markdown.md'; // Call pandocawait ;
Converting a word.docx file and returning HTML.
var pandoc = src = './word.docx' // Arguments in either a single String or as an Array: args = '-f docx -t html5'; // Call pandocawait ;
This also works the other way ’round; converting a bit of HTML and saving it as word.docx
var pandoc = src = '<h1>Hello</h1><p>It’s bananas</p>' // Arguments in either a single String or as an Array: args = '-f html -t docx -o word.docx'; // Call pandocawait ;
Or give-a-string/get-a-string: Markdown -> HTML
var pandoc = src = '# Hello \n\nIt\'s bananas' // Arguments in either a single String or as an Array: args = '-f markdown -t html'; // Call pandocawait ;
...and in reverse: HTML -> Markdown
var pandoc = src = '<h1>Hello</h1><p>It’s bananas</p>' // Arguments in either a single String or as an Array: args = '-f html -t markdown --atx-headers'; // NOTE: The --atx-headers flag set above will produce <h1>s as:// # Hello//// ...while omitting --atx-headers flat will result in this style:// Hello// ===== // Call pandocawait ;
One more thing...
It does URLs too.
var pandoc = src = 'https://www.npmjs.com/package/node-pandoc-promise' // Arguments in either a single String or as an Array: args = '-f html -t docx -o node-pandoc-promise.docx'; // Call pandocawait ;
License
Copyright © Asaf Cohen
Licensed under the MIT License