Javascript 如何使文本在JSPDF的单元格中居中

Javascript 如何使文本在JSPDF的单元格中居中,javascript,pdf-generation,jspdf,Javascript,Pdf Generation,Jspdf,您好,我正在使用JSPDF通过创建单元格手动生成PDF 我必须指定单元格的高度,但当文本的大小大于单元格时,它会重叠单元格。我怎样才能避免这种情况 这是我的密码: var l = { orientation: 'l', unit: 'mm', format: 'a4', compress: true,

您好,我正在使用JSPDF通过创建单元格手动生成PDF

我必须指定单元格的高度,但当文本的大小大于单元格时,它会重叠单元格。我怎样才能避免这种情况

这是我的密码:

           var l = {
                    orientation: 'l',
                    unit: 'mm',
                    format: 'a4',
                    compress: true,
                    fontSize: 8,
                    lineHeight: 1,
                    autoSize: false,
                    printHeaders: true
                }, pdf = new jsPDF(l, '', '', ''), i, j, margins = {
                    top: 30,
                    bottom: 10,
                    left: 10,
                    width: 25
                };

                //initializing the cells
                pdf.cellInitialize();

                var lines = pdf.splitTextToSize(' This is large icon to f', 12);
                pdf.cell(margins.left, margins.top, 14, 8, lines, 0);

                pdf.save('Te.pdf');
现在我可以增加单元格的高度,但文本仍然覆盖单元格

下面是它的样子


有人能帮我吗。我正在使用JSPDF

你必须使用JSPDF吗

您可以在pdfmake()中轻松实现所需的功能

虽然原理有点不同,但pdfmake是一个声明性库,可以自动计算布局

基本表定义如下所示:

var docDefinition = {
  content: [
    {
      table: {
        // header rows are automatically repeated if the table spans over multiple pages
        // you can declare how many rows should be treated as headers
        headerRows: 1,
        widths: [ '*', 'auto', 100, '*' ],

        body: [
          [ 'First', 'Second', 'Third', 'The last one' ],
          [ 'Value 1', 'Value 2', 'Value 3', 'Value 4' ],
          [ { text: 'Bold value', bold: true }, 'Val 2', 'Val 3', 'Val 4' ]
        ]
      }
    }
  ]
};
还支持列/行跨距、不可拆分的行(以防当前页面上没有足够的空间)、自动大小、固定大小和星形大小的列


您可以查看

中的表格示例,我也遇到了同样的问题

但是如果你看一下jspdf.plugin.cell.js,它实际上是在画一个矩形,将文本封装在其中。换句话说,单元格本身是一个矩形

内部
jsPDFAPI.cell()
函数,
this.text(txt,x+3,y+h-3),,
这一行实际上控制文本在每个单元格侧面的显示位置

您可以这样做:
this.text(txt,x+3,y+h/2-3),则文本将在单元格中居中


希望这能有所帮助。

我甚至看过pdfmake,但它没有提供任何文档,也没有指定它将支持IE8+,目前大多数选项在。。。IE8-我得考虑一下;)谢谢:)IE8是最大的问题。谢谢你的帮助。很久以前,我已经通过对JSPDF的基本库进行一些更改来解决这个问题。