How to calculate width and height of text in jspdf?

NFE picture NFE · Oct 1, 2013 · Viewed 26.6k times · Source

I'm facing some issues while creating tables in jspdf. I could not find any good related docs, but if anyone knows one, please share.

I found two related methods:

1) doc.getStringUnitWidth(text, {widths:12,kerning:2});

2) doc.getTextDimensions(text)

What does widths and kerning mean in the first method? What should I provide? Which method should I use to get the width and height of text?

My goal is to solve some issues related to overlapping cell content, wrapping of text and text overflow relative to the page width.

Answer

Simon Bengtsson picture Simon Bengtsson · Sep 5, 2014

You might want to look at the AutoTable plugin for generating tables with jsPDF. I found the built in plugin hard to work with and isn't documented at all.

The best way I have found to calculate the width is simply doing this:

var doc = new jsPDF();
var width = doc.getTextWidth('Text');
console.log(width);

If you really need to calculate the height getDimensions() might be an option. However, it is not pixel perfect and looking at the source I doubt it will work for anything but pt. Here is an example:

var doc = new jsPDF('p', 'pt');
var dim = doc.getTextDimensions('Text');
console.log(dim); // Object {w: 24.149968818897642, h: 19.499975433070865}