How to align text in center using jspdf

Angular 6. Footer align to horizontally center

var doc = new jsPDF();
var pageHeight = doc.internal.pageSize.height || doc.internal.pageSize.getHeight();
var pageWidth = doc.internal.pageSize.width || doc.internal.pageSize.getWidth();


// FOOTER
let str = "Your footer text";
doc.setTextColor(100);
doc.setFontSize(10);
doc.text(str, pageWidth / 2, pageHeight  - 10, {align: 'center'});
doc.save("example.pdf");

If you are using the latest version (1.1.135) the api has changed some for the text function. It now reads as:

API.text = function(text, x, y, flags, angle, align);

If you don't need to use the flags or angle though, you can simply use:

var doc = new jsPDF();
doc.text('Hi How are you', 40, 250, 'center');

Keep in mind that the center call uses the x parameter now as the center of the text string, and not the left most border as it does when rendering left aligned.

Link to source

Edit:

Alternately you can calculate the proper x offset to just use the text function normally like so:

var text = "Hi How are you",
    xOffset = (doc.internal.pageSize.width / 2) - (doc.getStringUnitWidth(text) * doc.internal.getFontSize() / 2); 
doc.text(text, xOffset, 250);

Above answers didn't work for me, I ended up doing the following to center the text

let textX = (doc.internal.pageSize.getWidth() - doc.getTextWidth(text))/2
doc.text(text, textX, textY);

this worked:

var xOffset = doc.internal.pageSize.width / 2
        doc.text('hello world', xOffset, 8, {align: 'center'});

Tags:

Jspdf