Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
markdown-pdf
Advanced tools
Node module that converts Markdown files to PDFs.
The PDF looks great because it is styled by HTML5 Boilerplate. What? - Yes! Your Markdown is first converted to HTML, then pushed into the HTML5 Boilerplate index.html
. Phantomjs renders the page and saves it to a PDF. You can even customise the style of the PDF by passing an optional path to your CSS and you can pre-process your markdown file before it is converted to a PDF by passing in a pre-processing function, for templating.
npm install markdown-pdf
var markdownpdf = require("markdown-pdf")
, fs = require("fs")
fs.createReadStream("/path/to/document.md")
.pipe(markdownpdf())
.pipe(fs.createWriteStream("/path/to/document.pdf"))
// --- OR ---
markdownpdf().from("/path/to/document.md").to("/path/to/document.pdf", function () {
console.log("Done")
})
Pass an options object (markdownpdf({/* options */})
) to configure the output.
Type: String
Default value: Path provided by phantomjs module
Path to phantom binary
Type: String
Default value: [module path]/markdown-pdf/pdf.css
Path to custom CSS file, relative to the current directory
Type: String
Default value: [module path]/markdown-pdf/highlight.css
Path to custom highlight CSS file (for code highlighting), relative to the current directory
Type: String
Default value: A4
'A3', 'A4', 'A5', 'Legal', 'Letter' or 'Tabloid'
Type: String
Default value: portrait
'portrait' or 'landscape'
Type: String
Default value: 1cm
Supported dimension units are: 'mm', 'cm', 'in', 'px'
Type: String
Default value: runnings.js
Path to CommonJS module which sets the page header and footer (see runnings.js)
Type: Number
Default value: 1000
Delay in millis before rendering the PDF (give HTML and CSS a chance to load)
Type: Function
Default value: function () { return through() }
A function that returns a through stream that transforms the markdown before it is converted to HTML.
Type: Function
Default value: function () { return through() }
A function that returns a through stream that transforms the HTML before it is converted to markdown.
Create a readable stream from path
and pipe to markdown-pdf. path
can be a single path or array of paths.
Create a readable stream from string
and pipe to markdown-pdf. string
can be a single string or array of strings.
Create and concatinate readable streams from paths
and pipe to markdown-pdf.
Create and concatinate readable streams from strings
and pipe to markdown-pdf.
Create a writeable stream to path
and pipe output from markdown-pdf to it. path
can be a single path, or array of output paths if you specified an array of inputs. The callback function cb
will be invoked when data has finished being written.
Create a concat-stream and pipe output from markdown-pdf to it. The callback function cb
will be invoked when the buffer has been created.
Create a concat-stream and pipe output from markdown-pdf to it. The callback function cb
will be invoked when the string has been created.
var markdownpdf = require("markdown-pdf")
var md = "foo===\n* bar\n* baz\n\nLorem ipsum dolor sit"
, outputPath = "/path/to/doc.pdf"
markdownpdf().from.string(md).to(outputPath, function () {
console.log("Created", outputPath)
})
var markdownpdf = require("markdown-pdf")
var mdDocs = ["home.md", "about.md", "contact.md"]
, pdfDocs = mdDocs.map(function (d) { return "out/" + d.replace(".md", ".pdf") })
markdownpdf().from(mdDocs).to(pdfDocs, function () {
pdfDocs.forEach(function (d) { console.log("Created", d) })
})
var markdownpdf = require("markdown-pdf")
var mdDocs = ["chapter1.md", "chapter2.md", "chapter3.md"]
, bookPath = "/path/to/book.pdf"
markdownpdf().concat.from(mdDocs).to(bookPath, function () {
console.log("Created", bookPath)
})
var markdownpdf = require("markdown-pdf")
, split = require("split")
, through = require("through")
, duplexer = require("duplexer")
function preProcessMd () {
// Split the input stream by lines
var splitter = split()
// Replace occurences of "foo" with "bar"
var replacer = through(function (data) {
this.queue(data.replace(/foo/g, "bar") + "\n")
})
splitter.pipe(replacer)
return duplexer(splitter, replacer)
}
markdownpdf({preProcessMd: preProcessMd})
.from("/path/to/document.md")
.to("/path/to/document.pdf", function () { console.log("Done") })
To use markdown-pdf as a standalone program from the terminal run
npm install -g markdown-pdf
Usage: markdown-pdf [options] <markdown-file-path>
Options:
-h, --help output usage information
-V, --version output the version number
<markdown-file-path> Path of the markdown file to convert
-p, --phantom-path [path] Path to phantom binary
-h, --runnings-path [path] Path to runnings (header, footer)
-s, --css-path [path] Path to custom CSS file
-z, --highlight-css-path [path] Path to custom highlight-CSS file
-f, --paper-format [format] 'A3', 'A4', 'A5', 'Legal', 'Letter' or 'Tabloid'
-r, --paper-orientation [orientation] 'portrait' or 'landscape'
-b, --paper-border [measurement] Supported dimension units are: 'mm', 'cm', 'in', 'px'
-d, --render-delay [millis] Delay before rendering the PDF (give HTML and CSS a chance to load)
-o, --out [path] Path of where to save the PDF
FAQs
Markdown to PDF converter
The npm package markdown-pdf receives a total of 4,086 weekly downloads. As such, markdown-pdf popularity was classified as popular.
We found that markdown-pdf demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.