You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在jsPDF中围绕文本中心旋转文本?

实现jsPDF文本围绕自身中心旋转

要实现文本围绕自身中心旋转,可以通过先计算文本尺寸,再结合坐标系平移与旋转来绕过text方法的限制,具体实现如下:

核心思路

jsPDF默认以文本基线左端为旋转原点,我们可以通过坐标系变换:先把绘图原点平移到目标中心位置,旋转后再将文本的基线左端定位到原点的左上方,最终让文本整体以中心旋转。

完整代码示例

// 创建jsPDF实例
const doc = new jsPDF({
    orientation: 'p',
    unit: 'mm',
    format: [250, 180]
});

const targetText = "Text to rotate";
// 获取文本的宽高(新版本jsPDF支持getTextDimensions方法)
const textSize = doc.getTextDimensions(targetText);
const textWidth = textSize.w;
const textHeight = textSize.h;

// 文本要放置的中心坐标
const centerX = 80;
const centerY = 80;

// 保存当前绘图状态,避免后续操作受坐标系变换影响
doc.saveGraphicsState();

// 将绘图原点平移到目标中心
doc.translate(centerX, centerY);
// 围绕当前原点(即文本中心)旋转45度
doc.rotate(45, { origin: [0, 0] });
// 绘制文本:此时文本基线左端在(-textWidth/2, textHeight/2),整体中心与原点重合
doc.text(targetText, -textWidth / 2, textHeight / 2);

// 恢复之前的绘图状态
doc.restoreGraphicsState();

// 保存文档
doc.save();

适配旧版本jsPDF的方案

如果你的jsPDF版本没有getTextDimensions方法,可以用以下方式计算文本尺寸:

const fontSize = doc.getFontSize();
// 计算文本宽度
const textWidth = doc.getStringUnitWidth(targetText) * fontSize;
// 文本高度可根据字体比例近似估算(大部分字体取fontSize*1.2即可)
const textHeight = fontSize * 1.2;

内容的提问来源于stack exchange,提问作者Strider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 20:03:19