Where to change default pdf page width and font size in jspdf.debug.js?

JavascriptJqueryHtmlJspdf

Javascript 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].

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser3428816View Question on Stackoverflow
Solution 1 - JavascriptAidiakapiView Answer on Stackoverflow
Solution 2 - JavascriptRameshView Answer on Stackoverflow
Solution 3 - JavascriptKurkov IgorView Answer on Stackoverflow
Solution 4 - Javascriptlevif1View Answer on Stackoverflow