使用 pdfkit 时,我可以在同一段落中混合字体粗细吗?

Posted

技术标签:

【中文标题】使用 pdfkit 时,我可以在同一段落中混合字体粗细吗?【英文标题】:Can I mix font weights in the same paragraph when using pdfkit? 【发布时间】:2014-01-03 02:55:42 【问题描述】:

我正在尝试找到一种方法,在 pdfkit

中使用粗体字重进行内联强调

不幸的是,我无法找到一种在不强制换行的情况下更改字体的方法(不利于内联强调...)。

我正在尝试类似:

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

但这会输出

你好

世界

我也挖掘了源代码,但找不到任何选项来防止这种情况发生。

任何人有任何想法或解决方法来解决这个问题?

编辑

我现在只能想出一个看起来像这样的丑陋黑客:

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

这是可行的,但远非灵活和可维护。

【问题讨论】:

【参考方案1】:

处理此问题的记录方法

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

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

【讨论】:

这应该设置为真正的解决方案。谢谢【参考方案2】:

基本上你需要用 lineBreak 设置选项:false,

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

这将使 Hello 不中断行,因此下一个 World 将打印在同一行上。

我在以下位置找到了这个:

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

pdfkit 版本:0.2.6

【讨论】:

太棒了!有趣的是,文档中根本没有提到这一点:pdfkit.org/docs/text.html#styling 即使它适用于同一行,它也会弄乱下一行。

以上是关于使用 pdfkit 时,我可以在同一段落中混合字体粗细吗?的主要内容,如果未能解决你的问题,请参考以下文章

在节点 js 中使用 pdfkit 指定 PDF 页面大小

如何使用 PDFKit 突出显示 pdf 中的选定文本?

如何在 javascript 中成功更改标题/段落的字体? [关闭]

如何使用 PDFkit 检测滚动到 PDF 中的另一个页面

如何从使用 pdfkit 相机拍摄的图像创建 pdf

spiredoc设置段落字体大小