1.0.5 • Published 2 years ago
light-markdown-pdf v1.0.5
light-markdown-pdf
Lightweight conversion scheme from markdown to pdf.
Warn
Because the Chinese font file is too large, npm cannot upload it.
Please download the font file from github and use a custom configuration.  
Intro
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.  
Unsupported
Features outside the specification are not supported.
e.g.
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)
 
Issues
- Sometimes the anchor will fail for unknown reasons.
 
Usage
Install
npm install --save light-markdown-pdfCLI
lmp --help
Usage: lmp [options]
Lightweight conversion scheme from markdown to pdf
Options:
  -V, --version             output the version number
  -s, --sourceDir <dir>     input *.md file directory
  -t, --targetFile <file>   output *.pdf file path
  -c, --configFile <file>   custom config file path
  --verbose                 output all log
  --coverTitle <title>      pdf cover title
  --coverAuthor <author>    pdf cover author
  --coverVersion <version>  pdf cover version
  --fontName <name>         default font name
  --fontFile <file>         default font file path
  --ignoreDirBookmark       don't use directory name as bookmark
  --ignoreFileBookmark      don't use file name as bookmark
  -h, --help                display help for commandCustom
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 --ignoreFileBookmarkor
lmp --configFile ./src/config.js// ./src/config.js
const 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,
  },
}