Nestable Processes Mutate

    node-pandoc

    0.3.0 • Public • Published

    node-pandoc npm version SugarHai

    Run Pandoc from NodeJS. Pandoc installation is required.

    Install

    # If using as a dependancy in your module 
    npm install node-pandoc --save
     
    # ...or for use in your project 
    npm install node-pandoc --save-dev

    Prior to using node-pandoc, 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

    So Then What’s Node-Pandoc Do?

    Node-Pandoc is simply a bridge between the Pandoc CLI (command-line interface) and NodeJS.

    Usage

    pandoc ( src args [options] callback )

    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.

    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

    callback

    Function that call it called back with the parameters of (error, result).

    Examples of Using Node-Pandoc

    Converting a word.docx file to a markdown.md

    // In EcmaScript 5...
     
    var nodePandoc = require('node-pandoc');
    var src, args, callback;
     
    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'];
     
    // Set your callback function
    callback = function (err, result) {
     
      if (err) {
        console.error('Oh Nos: ',err);
      }
     
      // For output to files, the 'result' will be a boolean 'true'.
      // Otherwise, the converted value will be returned.
      console.log(result);
      return result;
    };
     
    // Call pandoc
    nodePandoc(src, args, callback);
    // In ES-6 (ES-2015)
    import nodePandoc from 'node-pandoc'
     
    let src = './word.docx';
     
    // Arguments can be either a single String or in an Array
    let args = '-f docx -t markdown -o ./markdown.md';
     
    // Set your callback function
    const callback = (err, result)=> {
     
      if (err) console.error('Oh Nos: ',err)
      return console.log(result), result
    }
     
    // Call pandoc
    nodePandoc(src, args, callback);

    Converting a word.docx file and returning HTML.

    var pandoc = require('node-pandoc'),
        src = './word.docx',
        // Arguments in either a single String or as an Array:
        args = '-f docx -t html5';
     
    // Set your callback function
    callback = function (err, result) {
      if (err) console.error('Oh Nos: ',err);
      // Without the -o arg, the converted value will be returned.
      return console.log(result), result;
    };
     
    // Call pandoc
    pandoc(src, args, callback);

    This also works the other way ’round; converting a bit of HTML and saving it as word.docx

    var pandoc = require('node-pandoc'),
        src = '<h1>Hello</h1><p>It&rsquo;s bananas</p>',
        // Arguments in either a single String or as an Array:
        args = '-f html -t docx -o word.docx';
     
    // Set your callback function
    callback = function (err, result) {
      if (err) console.error('Oh Nos: ',err);
      // Without the -o arg, the converted value will be returned.
      return console.log(result), result;
    };
     
    // Call pandoc
    pandoc(src, args, callback);

    Or give-a-string/get-a-string: Markdown -> HTML

    var pandoc = require('node-pandoc'),
        src = '# Hello \n\nIt\'s bananas',
        // Arguments in either a single String or as an Array:
        args = '-f markdown -t html';
     
    // Set your callback function
    callback = function (err, result) {
      if (err) console.error('Oh Nos: ',err);
      // Without the -o arg, the converted value will be returned.
      return console.log(result), result;
    };
     
    // Call pandoc
    pandoc(src, args, callback);

    ...and in reverse: HTML -> Markdown

    var pandoc = require('node-pandoc'),
        src = '<h1>Hello</h1><p>It&rsquo;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
    // =====
     
    // Set your callback function
    callback = function (err, result) {
      if (err) console.error('Oh Nos: ',err);
      // Without the -o arg, the converted value will be returned.
      return console.log(result), result;
    };
     
    // Call pandoc
    pandoc(src, args, callback);

    One more thing...

    It does URLs too.

    var pandoc = require('node-pandoc'),
        src = 'https://www.npmjs.com/package/node-pandoc',
        // Arguments in either a single String or as an Array:
        args = '-f html -t docx -o node-pandoc.docx';
     
    // Set your callback function
    callback = function (err, result) {
      if (err) console.error('Oh Nos: ',err);
      // Without the -o arg, the converted value will be returned.
      return console.log(result), result;
    };
     
    // Call pandoc
    pandoc(src, args, callback);

    Wokavagor

    ...it can go sideways and slantways and longways and backways and squareways and frontways and any other ways that you can think of.

    License

    Copyright © Eric Shinn
    Licensed under the MIT License

    Install

    npm i node-pandoc

    DownloadsWeekly Downloads

    1,544

    Version

    0.3.0

    License

    MIT

    Last publish

    Collaborators

    • eshinn