提问人:Caeta 提问时间:11/16/2023 最后编辑:Peter MortensenCaeta 更新时间:11/17/2023 访问量:70
如何在jsPDF中旋转特定标题?
How can I rotate specific headers in jsPDF?
问:
我在jsPDF中的标题旋转中苦苦挣扎。我想将特定标头旋转 90 度,我已经阅读了此代码,但我不知道如何在我的代码中使用它。doc.text("-90 degrees rotated", 20, 160, null, -90);
import jsPDF from "jspdf";
import autoTable from 'jspdf-autotable'
class PdfHelper{
constructor(){}
buildPdf(){
var docDefinition = this.buildDocDefinition()
docDefinition = this.buildTable(docDefinition)
this.download(docDefinition)
}
buildDocDefinition(){
var docDefinition = jsPDF({
orientation: 'landscape'
})
docDefinition.setFontSize(12);
docDefinition.setTextColor(0);
return docDefinition
}
buildTable(docDefinition){
var header = [
[
{content: 'Hazard Identification', colSpan: 4, styles: {halign: 'center'}},
{content: 'Risk Evaluation', colSpan: 4, styles: {halign: 'center'}},
{content: 'Risk Control', colSpan: 7, styles: {halign: 'center'}},
],
[
{content: 'Ref', styles: {halign: 'center'}},
{content: 'Work Activity', styles: {halign: 'center'}},
{content: 'Hazard', styles: {halign: 'center'}},
{content: 'Possible Injury / ill-Health', styles: {halign: 'center'}},
{content: 'Existing Risk Controls', styles: {halign: 'center'}},
{content: 'Severity', styles: {halign: 'center'}},
{content: 'Likelihood', styles: {halign: 'center'}},
{content: 'IRPN', styles: {halign: 'center'}},
{content: 'Additional Controls', styles: {halign: 'center'}},
{content: 'Severity', styles: {halign: 'center'}},
{content: 'Likelihood', styles: {halign: 'center'}},
{content: 'IRPN', styles: {halign: 'center'}},
{content: 'Implementation Person', styles: {halign: 'center'}},
{content: 'Due Date', styles: {halign: 'center'}},
{content: 'Remarks', styles: {halign: 'center'}},
]
]
docDefinition.autoTable({
head: header,
headStyles: {
lineWidth: 0.25
},
body: []
});
return docDefinition
}
download(docDefinition){
docDefinition.save('demo.pdf');
}
}
export default PdfHelper
如果我想旋转标题“Severity”、“Likelihood”和“IRPN”,我应该在哪里执行 doc.text()?
我想实现这一点:
您推荐哪个库来生成 PDF?我正在使用 pdfmake,但它确实很有限,您必须为简单的事情做很多解决方法。现在我正在测试 jsPDF,似乎也有必要使用更多解决方法。
答:
要在 jsPDF 中旋转特定标题,您可以使用带有 rotation 选项的 doc.text()
方法。您需要在创建表格后调用 doc.text()
来添加旋转的标题。在本例中,您希望轮换标头“严重性”、“可能性”和“IRPN”。
下面介绍如何修改 buildTable
方法来实现此目的:
buildTable(docDefinition) {
var header = [
// ... (same as before)
];
docDefinition.autoTable({
head: header,
headStyles: {
lineWidth: 0.25,
},
body: [],
});
// Rotate specific headers
const rotatedHeaders = ["Severity", "Likelihood", "IRPN"];
const rotationAngle = -90;
const headerHeight = 10; // Adjust the height based on your needs
rotatedHeaders.forEach((headerText, index) => {
const xPosition = 20 + index * 30; // Adjust the X position based on your needs
docDefinition.text(headerText, xPosition, headerHeight, null, rotationAngle);
});
return docDefinition;
}
此代码片段假定标头“Severity”、“Likelihood”和“IRPN”位于连续列中。根据您的布局调整 xPosition 和其他参数。
关于您关于 PDF 生成库的第二个问题,jsPDF 是 JavaScript 中客户端 PDF 生成的热门选择。它在功能和易用性之间提供了良好的平衡。但是,如果您觉得它太麻烦或不符合您的特定要求,您可能需要考虑探索其他库,例如 pdfmake、pdf-lib,甚至是服务器端解决方案,例如 wkhtmltopdf 或带有无头 Chrome 的 Puppeteer。每个库都有其优点和缺点,因此最佳选择取决于您的具体用例和偏好。
评论