Document format conversion service based on Pandoc.
The API specification for the Reformed server is as follows:
{
"input": {
"commonmark": {
"mime": "text/markdown",
"ext": "md",
"detail": "CommonMark Markdown"
},
"docx": {
"mime": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"ext": "docx",
"detail": "Word docx"
},
// ...
},
"output": {
"commonmark": {
"mime": "text/markdown",
"ext": "md",
"detail": "CommonMark Markdown"
},
"docx": {
"mime": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"ext": "docx",
"detail": "Word docx"
},
// ...
"latex": {
"mime": "text/x-tex",
"ext": "tex",
"detail": "LaTeX"
},
// ...
}
}
The request should be made with the multipart/form-data
encoding.
The request parameters are as follows:
Document to convert. For example, to convert a docx
file to a pdf
file, the following cURL command will work:
curl -X POST -F 'document=@test.docx' http://localhost:8000/api/v1/from/docx/to/pdf > test.pdf
Whether to bundle the created document and any media (extracted pictures from e.g. a
.docx
file) together in a .zip
archive.
If the form value for this option is anything except a blank string, it will be treated
as True
.
If no media is generated and this option is set, this will return the reformatted
document in a .zip
archive by itself.
If media is generated and this option is not set, any extracted media will be discarded and just the document will be returned.
This endpoint supports the following Pandoc standalone flags:
ascii
, gladtex
, html-q-tags
, incremental
, listings
, mathml
, no-highlight
,
number-sections
, preserve-tabs
, reference-links
, section-divs
, standalone
,
strip-comments
, toc
.
If the form value for a given flag is anything except a blank string, it will be added to the Pandoc call.
See the Pandoc manual for more information on these flags' effects.
This endpoint supports the following Pandoc flags which have specific choices:
eol
, markdown-headings
, reference-location
, top-level-division
, track-changes
,
wrap
.
If the form value for a given flag is valid, it will be added to the Pandoc call.
See the Pandoc manual for more information on these flags' effects.
If specified and a valid integer, this will add the --columns=XX
option to the Pandoc
call. The value is bounded to 1 <= columns <= 300
by Reformed.
See the Pandoc manual's description for more.
If specified and a valid integer, this will add the --dpi=XX
option to the Pandoc call.
The value is bounded to 36 <= dpi <= 600
by Reformed.
See the Pandoc manual's description for more.
If specified and a valid integer, this will add the --toc-depth=XX
option to the Pandoc
call. The value is bounded to 1 <= toc-depth <= 6
by Reformed.
See the Pandoc manual's description for more.
A binary stream with the MIME type specified in the list of formats.
Content-Disposition
is forced to be an attachment
to prevent files from rendering in
the browser.
If an error is encountered, this will instead be a JSON response with an error
key
specifying what went wrong.
A few configuration environment variables are available for the Reformed server, listed here with their default values:
# Maximum buffer size for requests, in bytes - mostly useful for controlling file uploads
# Defaults to 25 MiB
REFORMED_MAX_BUFFER_SIZE=26214400
# Port to accept requests on
REFORMED_PORT=8000
# Number of worker processes to start
REFORMED_WORKERS=2
Main-branch and tagged releases are both automatically published as Docker images to the GitHub Container Registry. These images can be run in the standard fashion as a daemon, and expose a Tornado HTTP server on port 8000.
See the package listing for more information on pulling the image.
The development requirements are specified in requirements.dev.txt
.
To test with coverage, use the following command:
coverage run -m unittest -v
To run the linter, use the following command:
flake8 reformed