
Research
Security News
Malicious PyPI Package Exploits Deezer API for Coordinated Music Piracy
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
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: ../pdf.css
Path to custom CSS file, relative to the html5bp 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
-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,973 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
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.
Security News
Newly introduced telemetry in devenv 1.4 sparked a backlash over privacy concerns, leading to the removal of its AI-powered feature after strong community pushback.