如何使用jsPDF将文本居中对齐。
var doc = new jsPDF();
doc.text(40, 250, 'Hi How are you');
API.text = function(text, x, y, flags, angle, align);
如果您不需要使用旗帜或角度,您可以简单地使用:
var doc = new jsPDF();
doc.text('Hi How are you', 40, 250, 'center');
请记住,现在中心调用将x参数作为文本字符串的中心使用,而不是呈现左对齐时使用的最左边框。
编辑:
或者您可以计算适当的x偏移量,正常使用文本函数,方法如下:
var text = "Hi How are you",
xOffset = (doc.internal.pageSize.width / 2) - (doc.getStringUnitWidth(text) * doc.internal.getFontSize() / 2);
doc.text(text, xOffset, 250);
Angular 6.页脚横向居中对齐
var doc = new jsPDF();
var pageHeight = doc.internal.pageSize.height || doc.internal.pageSize.getHeight();
var pageWidth = doc.internal.pageSize.width || doc.internal.pageSize.getWidth();
// FOOTER
let str = "Your footer text";
doc.setTextColor(100);
doc.setFontSize(10);
doc.text(str, pageWidth / 2, pageHeight - 10, {align: 'center'});
doc.save("example.pdf");
上述答案对我没有用,最终我采取了以下方法来居中文本
let textX = (doc.internal.pageSize.getWidth() - doc.getTextWidth(text))/2
doc.text(text, textX, textY);
这个有效:
var xOffset = doc.internal.pageSize.width / 2
doc.text('hello world', xOffset, 8, {align: 'center'});
2022: 假设您的页面宽度为210(默认A4),此方法有效。
doc.text("This is centred text.", 105, 80, null, null, "center");
以下是README中提供的在线演示链接:
第一个答案是正确的。但我执行了稍微不同的任务。我想让我的文本居中对齐或页面对齐,为此编写了以下代码:
var width = doc.internal.pageSize.getWidth();
let totalIncomePDF = "I am Usama";
doc.text(width/2, 195, totalIncomePDF, {align: 'center'});
let thresholdPDF = "I am from Pakistan";
doc.text(width/2, 245, thresholdPDF, {align: 'center'});
我得到的结果如下:
这个方法有点用,但不是很精确,如果您知道原因,请告诉我。
我计算文本的宽度以便自己居中。
为此,我使用了我的jsPDF对象上的getTextDimensions()方法。
var pdf = new jsPDF({
orientation : 'p',
unit: 'px',
format: [500, 750],
putOnlyUsedFonts:true
});
var textDimensions = pdf.getTextDimensions('MyText');
现在您可以使用textDimensions.w
获取文本宽度和textDimensions.h
获取高度
然后使用此方法来居中您的文本。
var textWidth = textDimensions.w;
pdf.text('MyText', (pdfWidth / 2) - (textWidth / 2), 100);
但是:你需要知道你的PDF的宽度才能做到这一点。
我通过自己定义高度和宽度来“解决”这个问题,但你可以很容易地在网上找到常见格式的高度和宽度。
比如A4纸:210毫米*297毫米。
只需在创建jsPDF时设置unit: 'mm'
即可。
var doc = new jsPDF();
// set midPage for variable use
var midPage = doc.internal.pageSize.getWidth()/2
// Default is 210 mm so default midway by value is 105
doc.setFontSize(40);
doc.text("Octonyan loves jsPDF", 105, 15, null, null, "center");
// Better to use a variable "midPage" (from above)
doc.setFontSize(30);
doc.text("Centered (USA), Centred (UK)", midPage , 30, null, null, "center");
这对我有用。
pdf.text(`For Species: ${specieName}`, 300, finalY + 50, **{ align: 'center' }**);
specieName
加粗,而其余部分保持正常? - Santoshwindow.jsPDF = window.jspdf.jsPDF;
,但在文档中没有提到,我不得不逐个下载示例找到它。现在我发现居中文本函数不起作用。在两个不同的本地环境和一个JSFiddle上,在多个浏览器上实施align:center选项时,会将文本发送到页面的左侧。虽然上述解决方案有效,但如果文本超过一行,它就会失效,这恰好是另一个开箱即用的错误-文本超出文档而不是换行,也没有换行选项。因此,经过所有这些小时后,我的运气不好,我将不得不走另一条路线。插件未得到维护,这应在文档中说明。建议不要浪费您的时间。