PDF导出脚本:如何让输入的姓名文本居中对齐?
解决PDF文本居中问题
要实现文本水平居中,你需要先计算文本的实际宽度,再结合页面宽度算出居中的X坐标,具体步骤如下:
- 获取页面宽度:通过PDF页面对象的
getWidth()方法获取当前页面的宽度。 - 计算文本宽度:使用字体对象的
widthOfTextAtSize()方法,传入姓名和字体大小,得到文本的实际宽度。 - 计算居中X坐标:用页面宽度减去文本宽度,再除以2,就是水平居中的起始X坐标。
修改后的代码如下:
// 获取页面宽度 const pageWidth = firstPage.getWidth(); // 计算姓名文本的宽度 const textWidth = ArialFont.widthOfTextAtSize(name, 35); // 计算水平居中的X坐标 const centerX = (pageWidth - textWidth) / 2; firstPage.drawText(name, { x: centerX, // 使用计算后的居中X坐标 y: 245, size: 35, font: ArialFont, color: rgb(0, 0, 0), });
如果需要同时实现垂直居中,你可以用类似的逻辑:
const pageHeight = firstPage.getHeight(); // 计算文本高度(如需更精确可使用font.heightAtSize()) const textHeight = ArialFont.heightAtSize(35); const centerY = (pageHeight - textHeight) / 2; // 然后将drawText的y参数设为centerY即可
核心逻辑就是通过动态计算替代固定的X/Y值,确保文本始终处于目标区域的居中位置,不管姓名长短都能适配。
内容的提问来源于stack exchange,提问作者Garry78
相关产品推荐
相关产品推荐

