markdown-to-pdf
markdown-to-pdf copied to clipboard
A GitHub Action to make PDF and HTML files from Markdown
Markdown to PDF
Creates PDF and HTML files from Markdown using the GitHub (or custom) theme.
Notable Features:
- Code highlighting
- Tables
- Images (see docs)
- Internal and external links
GitHub Action Inputs
Input Path
with:
input_path: value
(Required) (Path) or (File) The location of the folder containing your .md or .markdown files, or a path to a single .md or .markdown file that you would like to convert.
*Note, previous versions of this action accepted the input_dir input. This is still accepted as input for backwards compatibility, but passing a directory as input_path now carries out the same functionality.
Images Directory
with:
images_dir: value
(Path)
The location of the folder containing your images, this should be the route of all images. So of you had images located
at images/about/file.png and images/something-else/file.png you would pass the value images.
Output Directory
with:
output_dir: value
(Path) The location of the folder you want to place the built files.
Image Import Prefix
with:
image_import: value
(String)
The path you use to import your images that can be replaced with the server URL. For example if you
had <img src="./images/something-else/file."> you would pass ./images as this is replaced
by https://localhost:3000 during the build process.
Build HTML
with:
build_html: value
(Boolean) Whether to also create a .html file.
Build PDF
with:
build_pdf: value
(Boolean)
Whether to also create a .pdf file (defaults to true. After all, this is the intended behaviour).
CSS Theme
with:
theme: value
(File) The location of the CSS file you want to use as the theme.
with:
extend_default_theme: value
(Boolean) Whether to extend your custom CSS file with the default theme
Highlight CSS Theme
with:
highlight_theme: value
(File) The location of the CSS file you want to use as the code snipped highlight theme.
HTML/Mustache Template file
with:
template: value
(File) The location of the HTML/Mustache file you want to use as the HTML template.
Table Of Contents
with:
table_of_contents: value
(Boolean) Whether a table of contents should be generated
Input Types
A few pieces to describe what input each value expects.
Path
A path will most likely be from your repository's route, it should not be prefixed or suffixed with a /. The path
should look like so docs/topic/featureDocs or writing/category.
String
A string could be anything, and using YAML (or YML) does not need to be encased in quotes.
Boolean
This should be either true or false.
File
This should be the direct path to a file, it should not be prefixed with a /. An example: styles/markdown-theme.css.
Usage Examples
An example of a workflow for some documentation.
# .github/workflows/convert-to-pdf.yml
name: Docs to PDF
# This workflow is triggered on pushes to the repository.
on:
push:
branches:
- main
# Paths can be used to only trigger actions when you have edited certain files, such as a file within the /docs directory
paths:
- 'docs/**.md'
- 'docs/images/**'
jobs:
converttopdf:
name: Build PDF
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: baileyjm02/markdown-to-pdf@v1
with:
input_dir: docs
output_dir: pdfs
images_dir: docs/images
# for example <img src="./images/file-name.png">
image_import: ./images
# Default is true, can set to false to only get PDF files
build_html: false
- uses: actions/upload-artifact@v1
with:
name: docs
path: pdfs
Contributions
Any contributions are helpful, please make a pull-request. If you would like to discuses a new feature, please create an issue first.