Can I mix font weights in the same paragraph when using pdfkit?

9.2k views Asked by At

I'm trying to find a way to use bold font weights for inline emphasis in pdfkit

Unfortunately I cannot find a way to change the font without forcing a line break (bad for inline emphasis...).

I was trying something like:

pdf.text('Hello ', LEFT, 200).font(bold).text('World!');

but this will output

Hello

World

I also digged through the source but could not find any option to prevent this.

Anyone has any idea or workaround to tackle this problem?

EDIT:

All I could come up with by now is a ugly hack looking like this:

pdf.text('Hello ', LEFT, 200).moveUp(1).font(bold).text('World!', {indent: pdf.widthOfString('Hello ')});

which is working but far from flexible and maintainable.

2

There are 2 answers

1
Hart Liddell On BEST ANSWER

The documented way to handle this is continued.

pdf.font('Helvetica-Bold').text('Hello ', {
    continued: true
}).font('Helvetica').text('World!');

http://pdfkit.org/docs/text.html

2
Andrew On

Basically you need to set options with lineBreak : false,

pdf.text('Hello ', LEFT, 200, {
    //here it is, 
    lineBreak : false
}).font(bold).text('World!');

This will make the Hello not break line, so the next World will print on the same line.

I found this in:

node_modules\pdfkit\js\mixins\text.js, line 130

pdfkit version: 0.2.6