Introduction to wkhtmltopdf
Wkhtmltopdf is a command line tool for rendering HTML into PDF and various image formats using the Qt WebKit rendering engine. It is widely used for creating PDF reports, invoices, and any web-based documents. This tool is powerful as it provides numerous APIs to customize the conversion process. Below, we explore the functionality and usage of these APIs with code snippets and examples.
Basic Usage
wkhtmltopdf http://example.com example.pdf
API Examples
Modify Print Settings
wkhtmltopdf --print-media-type http://example.com example.pdf
Set PDF Metadata
wkhtmltopdf --title "Sample PDF" --author "John Doe" http://example.com example.pdf
Set PDF Margins
wkhtmltopdf --margin-top 20mm --margin-right 20mm --margin-bottom 20mm --margin-left 20mm http://example.com example.pdf
Generate Table of Contents
wkhtmltopdf toc http://example.com example.pdf
Auto-Generate Cover Page
wkhtmltopdf cover http://example.com/cover.html http://example.com example.pdf
Advanced Usage
Custom Headers and Footers
wkhtmltopdf --header-center "Title" --footer-right "Page [page] of [toPage]" http://example.com example.pdf
Inject JavaScript for Post-Render Modifications
wkhtmltopdf --run-script "document.querySelector('.dynamic').innerHTML = new Date();" http://example.com example.pdf
Enable Cache
wkhtmltopdf --cache-dir "/path/to/cache" http://example.com example.pdf
Application Example
Let’s illustrate with a simple Node.js application that generates a PDF from an HTML page using wkhtmltopdf.
const { exec } = require('child_process');
const url = 'http://example.com';
const output = 'example.pdf';
const cmd = `wkhtmltopdf ${url} ${output}`;
exec(cmd, (error, stdout, stderr) => {
if (error) {
console.error(`Error: ${error.message}`);
return;
}
if (stderr) {
console.error(`Stderr: ${stderr}`);
return;
}
console.log(`PDF generated: ${stdout}`);
});
This code will download and convert the URL into a PDF file called example.pdf.
Using the powerful features of wkhtmltopdf, you can effectively transform any HTML content into well-formatted PDFs, which can be particularly useful for dynamically generated content on web applications.
Hash: e61cbf7111188a2b2f778fed90bb39b667aa0904fbcb87cb08d18c12ed91dac7