Where to change default pdf page width and font size in jspdf.debug.js?
JavascriptJqueryHtmlJspdfJavascript Problem Overview
I need to change default pdf page width and font size in jspdf.debug.js.
Where and how to change the default values in jspdf.debug.js?
Javascript Solutions
Solution 1 - Javascript
Besides using one of the default formats you can specify any size you want in the unit you specify.
For example:
// Document of 210mm wide and 297mm high
new jsPDF('p', 'mm', [297, 210]);
// Document of 297mm wide and 210mm high
new jsPDF('l', 'mm', [297, 210]);
// Document of 5 inch width and 3 inch high
new jsPDF('l', 'in', [3, 5]);
The 3rd parameter of the constructor can take an array of the dimensions. However they do not correspond to width and height, instead they are long side and short side (or flipped around).
Your 1st parameter (landscape
or portrait
) determines what becomes the width and the height.
In the sourcecode on GitHub you can see the supported units (relative proportions to pt
), and you can also see the default page formats (with their sizes in pt
).
Solution 2 - Javascript
From the documentation page
To set the page type pass the value in constructor
> jsPDF(orientation, unit, format)
Creates new jsPDF document object
>
> instance Parameters:
>
> orientation One of "portrait" or "landscape" (or shortcuts "p" (Default), "l")
>
> unit Measurement unit to be used when coordinates are specified. One of "pt" (points), "mm" (Default), "cm", "in"
>
> format One of 'a3', 'a4' (Default),'a5' ,'letter' ,'legal'
To set font size
> setFontSize(size)
>
> Sets font size for upcoming text elements.
>
> Parameters:
>
> {Number} size Font size in points.
Solution 3 - Javascript
My case was to print horizontal (landscape) summary section - so:
}).then((canvas) => {
const img = canvas.toDataURL('image/jpg');
new jsPDF({
orientation: 'l', // landscape
unit: 'pt', // points, pixels won't work properly
format: [canvas.width, canvas.height] // set needed dimensions for any element
});
pdf.addImage(img, 'JPEG', 0, 0, canvas.width, canvas.height);
pdf.save('your-filename.pdf');
});
Solution 4 - Javascript
For anyone trying to this in react. There is a slight difference.
// Document of 8.5 inch width and 11 inch high
new jsPDF('p', 'in', [612, 792]);
or
// Document of 8.5 inch width and 11 inch high
new jsPDF({
orientation: 'p',
unit: 'in',
format: [612, 792]
});
When i tried the @Aidiakapi solution the pages were tiny. For a difference size take size in inches * 72 to get the dimensions you need. For example, i wanted 8.5 so 8.5 * 72 = 612. This is for [email protected].