New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

pretty-markdown-pdf

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pretty-markdown-pdf

Convert Markdown to a Pretty PDF :D

latest
Source
npmnpm
Version
1.5.2
Version published
Weekly downloads
62
-41.51%
Maintainers
1
Weekly downloads
 
Created
Source

Pretty Markdown PDF

Easy to use tool to convert a markdown file to a pretty looking PDF.

The majority of the code is based on the vscode-markdown-pdf Visual Studio Code extension, which provides the pretty styles and extra markdown features.

PDF

Features

Supports the following features

markdown-it-container

INPUT

::: warning
*here be dragons*
:::

OUTPUT

<div class="warning">
<p><em>here be dragons</em></p>
</div>

markdown-it-plantuml

INPUT

@startuml
Bob -[#red]> Alice : hello
Alice -[#0000FF]->Bob : ok
@enduml

OUTPUT

PlantUML

Usage

Install this project from the NPM package repository:

npm install -g pretty-markdown-pdf

Command Line

To convert a markdown file to PDF, simply run:

pretty-md-pdf -i my-doc.md

Run with --help to see all the options available.

This will output a file my-doc.pdf in the directory where my-doc.md resides.

To specify an output path as my-exported-doc.pdf, run:

pretty-md-pdf -i my-doc.md -o my-exported-doc.pdf

Other Export Types

To specify an output type other than PDF, run:

pretty-md-pdf -i my-doc.md -t png

Javascript

You can programmatically call this package, example:

const prettyMdPdf = require("pretty-markdown-pdf")

// output to `my-doc.pdf`
prettyMdPdf.convertMd({ markdownFilePath: "my-doc.md" })

// specify an output file path
prettyMdPdf.convertMd({ markdownFilePath: "my-doc.md", outputFilePath: "output.pdf" })

// specify an output file type, outputs to `my-doc.html`
prettyMdPdf.convertMd({ markdownFilePath: "my-doc.md", outputFileType: "html" })

Configuration

Advanced configuration is done using a JSON file. By default the tools uses the one shipped with this package, which has defaults set.

To specify a config file when running the tool:

pretty-md-pdf -i my-doc.md -c /tmp/config.json

From JavaScript you can do:

prettyMdPdf.convertMd({ markdownFilePath: "my-doc.md", configFilePath: "/tmp/config.json")

Example

Below is the default config JSON file as an example:

{
    "type": [
        "pdf"
    ],
    "outputDirectory": "",
    "outputDirectoryRelativePathFile": false,
    "styles": [],
    "stylesRelativePathFile": false,
    "includeDefaultStyles": true,
    "highlight": true,
    "highlightStyle": "",
    "breaks": false,
    "emoji": true,
    "markdown-it-include": true,
    "executablePath": "",
    "scale": 1,
    "displayHeaderFooter": true,
    "headerTemplate": "<div style=\"font-size: 9px; margin-left: 1cm;\"> <span class='title'></span></div> <div style=\"font-size: 9px; margin-left: auto; margin-right: 1cm; \"> <span class='date'></span></div>",
    "footerTemplate": "<div style=\"font-size: 9px; margin: 0 auto;\"> <span class='pageNumber'></span> / <span class='totalPages'></span></div>",
    "printBackground": true,
    "orientation": "portrait",
    "pageRanges": "",
    "format": "A4",
    "width": "",
    "height": "",
    "margin": "1cm",
    "quality": 100,
    "clip": {
        "height": null
    },
    "omitBackground": false
}

Options

CategoryOption name
Save optionstype
outputDirectory
outputDirectoryRelativePathFile
Styles optionsstyles
stylesRelativePathFile
includeDefaultStyles
Syntax highlight optionshighlight
highlightStyle
Markdown optionsbreaks
Emoji optionsemoji
Configuration optionsexecutablePath
Common Optionsscale
PDF optionsdisplayHeaderFooter
headerTemplate
footerTemplate
printBackground
orientation
pageRanges
format
width
height
margin.top
margin.bottom
margin.right
margin.left
PNG JPEG optionsquality
clip.x
clip.y
clip.width
clip.height
omitBackground

Save options

type

  • Output format: pdf, html, png, jpeg
  • Multiple output formats supported
  • Default: pdf
"type": [
  "pdf",
  "html",
  "png",
  "jpeg"
],

outputDirectory

  • Output Directory
  • All \ need to be written as \\ (Windows)
"outputDirectory": "C:\\work\\output",

Relative Paths

"outputDirectory": "~/output",
  • If you set a directory with a relative path, it will be created if the directory does not exist
  • If you set a directory with an absolute path, an error occurs if the directory does not exist

outputDirectoryRelativePathFile

Styles options

styles

  • A list of local paths to the stylesheets to use from pretty-markdown-pdf
  • If the file does not exist, it will be skipped
  • All \ need to be written as \\ (Windows)
"styles": [
  "C:\\Users\\<USERNAME>\\Documents\\css",
  "/home/<USERNAME>/settings/css",
],
"styles": [
  "css",
],
"styles": [
  "~/.config/Code/User/css"
],
"styles": [
  "https://xxx/css"
],

stylesRelativePathFile

includeDefaultStyles

  • Enable the inclusion of default Markdown styles
  • boolean. Default: true

Syntax highlight options

highlight

  • Enable Syntax highlighting
  • boolean. Default: true

highlightStyle

"highlightStyle": "github",

Note: You can specify a path to a css file here, ensure your path ends with .css

"highlightStyle": "styles/custom.css",

Markdown options

breaks

  • Enable line breaks
  • boolean. Default: false

Emoji options

emoji

Configuration options

executablePath

  • Path to a Chromium or Chrome executable to run instead of the bundled Chromium
  • All \ need to be written as \\ (Windows)
"executablePath": "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"

Common Options

scale

  • Scale of the page rendering
  • number. default: 1
"scale": 1

PDF options

displayHeaderFooter

  • Enable display header and footer
  • boolean. Default: true

headerTemplate

footerTemplate

  • HTML template for the print header and footer
  • <span class='date'></span> : formatted print date
  • <span class='title'></span> : markdown file name
  • <span class='url'></span> : markdown full path name
  • <span class='pageNumber'></span> : current page number
  • <span class='totalPages'></span> : total pages in the document
"headerTemplate": "<div style=\"font-size: 9px; margin-left: 1cm;\"> <span class='title'></span></div> <div style=\"font-size: 9px; margin-left: auto; margin-right: 1cm; \"> <span class='date'></span></div>",
"footerTemplate": "<div style=\"font-size: 9px; margin: 0 auto;\"> <span class='pageNumber'></span> / <span class='totalPages'></span></div>",

printBackground

  • Print background graphics
  • boolean. Default: true

orientation

  • Paper orientation
  • portrait or landscape
  • Default: portrait

pageRanges

  • Paper ranges to print, e.g., '1-5, 8, 11-13'
  • Default: all pages
"pageRanges": "1,4-",

format

  • Paper format
  • Letter, Legal, Tabloid, Ledger, A0, A1, A2, A3, A4, A5, A6
  • Default: A4
"format": "A4",

width

height

  • Paper width / height, accepts values labeled with units(mm, cm, in, px)
  • If it is set, it overrides the format option
"width": "10cm",
"height": "20cm",

margin.top

margin.bottom

margin.right

margin.left

  • Paper margins.units(mm, cm, in, px)
"margin.top": "1.5cm",
"margin.bottom": "1cm",
"margin.right": "1cm",
"margin.left": "1cm",

PNG JPEG options

quality

  • jpeg only. The quality of the image, between 0-100. Not applicable to png images
"quality": 100,

clip.x

clip.y

clip.width

clip.height

  • An object which specifies clipping region of the page
  • number
//  x-coordinate of top-left corner of clip area
"clip.x": 0,

// y-coordinate of top-left corner of clip area
"clip.y": 0,

// width of clipping area
"clip.width": 1000,

// height of clipping area
"clip.height": 1000,

omitBackground

  • Hides default white background and allows capturing screenshots with transparency
  • boolean. Default: false

FAQ

How can I change emoji size ?

  • Add the following to your stylesheet, which you can specified in the styles field
.emoji {
  height: 2em;
}

Output directory

If you want to always output to a directory path relative from the Markdown file.

For example, to output to the "output" directory in the same directory as the Markdown file, set it as follows.

"outputDirectory" : "output",
"outputDirectoryRelativePathFile": true,

Page Break

Please use the following to insert a page break.

<div class="page"/>

Note on Chromium

Chromium download starts automatically before the first conversion; this is a one time operation, only if your reinstall this package will it be downloaded again.

This is a time-consuming task depending on the environment because of its large size (~ 170Mb Mac, ~ 282Mb Linux, ~ 280Mb Win).

During the Chromuim download, the message Installing Chromium will be displayed in the console.

FAQs

Package last updated on 04 Jun 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts