Lightweight conversion scheme from markdown to pdf
npm install light-markdown-pdfLightweight conversion scheme from markdown to pdf.
Because the Chinese font file is too large, npm cannot upload it.
Please download the font file from github and use a custom configuration.
No Puppeteer or PhantomJS dependency.
Use CommonMark to convert markdown files to abstract syntax tree (AST), and then use pdfkit to convert to pdf files.
Features outside the specification are not supported.
Features inside the specification are supported.
e.g.
- document (bookmark)
- text
- linebreak
- softbreak
- emph
- strong
- link (http/anchor)
- thematic_break
- heading (bookmark)
- paragraph
- image (http/local png/jpg)
- code
- code_block (syntax highlighter)
- block_quote (nested)
- list (ordered/unordered/nested)
- item
- html_inline (like code)
- html_block (like code_block)
1. Sometimes the anchor will fail for unknown reasons.
``shell`
npm install --save light-markdown-pdf
`shell
lmp --help
Usage: lmp [options]
Lightweight conversion scheme from markdown to pdf
Options:
-V, --version output the version number
-s, --sourceDir
$3
`shell
lmp --sourceDir . --targetFile $npm_package_name.pdf --fontName PingFang --fontFile ./src/asset/PingFang-SC-Regular.ttf --coverTitle $npm_package_name --coverAuthor $npm_package_author_name --coverVersion $npm_package_version --ignoreFileBookmark
`or
`shell
lmp --configFile ./src/config.js
``javascript
// ./src/config.jsconst path = require('path');
const pkg = require('../package.json');
module.exports = {
sourceDir: process.cwd(),
targetFile: path.join(process.cwd(),
${pkg.name}.pdf),
font: {
defaultFontName: 'PingFang',
registerFont: {
PingFang: path.join(process.cwd(), 'src/asset/PingFang-SC-Regular.ttf'),
},
},
cover: {
title: pkg.name,
author: pkg.author,
version: pkg.version,
},
}
``