A simple RESTful server for converting documents using pandoc
pandoc is required for converting documents
# apt-get install pandoc
yarn add pandoc-apiStart a server in command-line:
yarn startGet command line help
yarn --helppandoc-api, a simple RESTful server for converting documents
please visit https://github.com/alphakevin/pandoc-api
usage: pandoc-api <command> <options>
commands:
start [<hostname>[:<port>]] start the server, default to localhost:4000
help converter get converter help
options:
-h, --help print this help messageUse in your application
import expores from 'express';
import pandoc from 'pandoc-api';
const app = express();
app.use('/pandoc', pandoc());
// ... your own express routes
app.listen(3000);The server provides a similar interface like pandoc, you can simply remove -- or - and use /
instead of white-space between the arguments, all after /api/convert.
POST /api/convert/from/<input-format>/to/<output-format> HTTP/1.1You can upload file by either of the following method:
multipart/form-dataupload with afilefield of the file to be converted.- RAW upload a file in HTTP body with
Content-TypeandContent-Dispositionheader provided.
If the /output/<value> option is provided, the Content-Disposition header will contain the new filename.
The converted document will be directly output from the HTTP response body.
For more converting options, please visit https://pandoc.org/MANUAL.html
| Name | Description |
|---|---|
HOSTNAME |
For server listening hostname |
PORT |
For server listening port |
Visit http://127.0.0.1:4000/help, or get help in command-line:
yarn cli help converterHere we use cURL for examples.
$ curl -F file=@example.docx http://127.0.0.1:4000/api/convert/from/docx/to/html > result.html$ curl -X POST \
-T "example.docx" \
-H "Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document" \
-H "Content-Disposition: attachment; filename="example.docx"" \
http://127.0.0.1:4000/api/convert/from/docx/to/html > result.html /e, /export/<value> set export filter options
/f, /format/<value> specify the output format
/F, /field/<value> replace user-defined text field with value
/i, /import/<value> set import filter option string
/o, /output/<value> output basename, filename or directory
/password/<value> provide a password to decrypt the documentpandoc-api can start from docker without source code or npm installed:
docker run -d -p 4000:4000 --name=pandoc --restart=always alphakevin/pandoc-api- This is a simple http server and supposed to run as inner micro-service, so it does not include any authorization method. Please take your own risk to deploy it publicly.
- Document formats and options are not fully tested, it just pass them to pandoc.
MIT