数据表 PDF 从右向左导出



我已经设法制作了一种新字体并将其添加到数据表中,但是当我生成PDF时,文本从左到右对齐,这与我想要的相反,是否有任何配置可以用来制作从右到左。此外,我正在使用服务器端处理和多列过滤,而PDF按钮仅打印当前页面,使其打印整个过滤结果的配置是什么。提前致谢

您需要使用特定的 pdfmake 配置选项来操作导出的 PDF:https://datatables.net/reference/button/pdfHtml5

这将使文本右

对齐,它不会使文本从右到左排列,但是:

buttons: [
  {
    extend: 'pdf',
    customize: function ( doc ) {
      doc.content[0].alignment = 'right';
    }
  }
]
嗨,

这是我的波斯语 ltr 到 rtl 的代码,这是一个可以在 DataTable 中用于导出为 pdf 的函数:

function buttonForDatatable(columns, margins, prtrait = "portrait",title='',message='') {
            return [
                 {
            extend: 'copy',
            text:"کپی",
            exportOptions: {
                columns: columns.reverse(),
            },
        },  {
            extend: 'csv',
            text:"سی اس وی",
            exportOptions: {
                columns: columns.reverse(),
            },
        },  {
            extend: 'print',
            text:"پرینت",
            exportOptions: {
                columns: columns.reverse(),
            },
        }, {
            extend: 'excel',
            text:"اکسل",
            exportOptions: {
                columns: columns,
            },
        }  ,{
                    extend: 'pdfHtml5',
                    orientation: prtrait,
                    footer: true,
                    alignment: "center",
                    title: title,
                    messageTop:message,
                    text: "PDF",
                    exportOptions: {
                        alignment: "center",
                        orthogonal: "PDF",
                        columns: columns,
                        modifier: {order: 'index', page: 'current'}
                    },
                    customize: function (doc) {
                        doc.styles.message.alignment = "right";
                        doc.styles.tableBodyEven.alignment = "center";
                        doc.styles.tableBodyOdd.alignment = "center";
                        doc.styles.tableFooter.alignment = "center";
                        doc.styles.tableHeader.alignment = "center";
                        doc.content[0]['text'] = doc.content[0]['text'].split(' ').reverse().join(' ');
                        doc.content[1].margin = margins;
                        doc.content[2].margin = margins;
                        for (var i = 0; i < doc.content[2].table.body.length; i++) {
                            // console.log(doc.content[1].table.body[i].length);
                            for (var j = 0; j < doc.content[2].table.body[i].length; j++) {
                                doc.content[2].table.body[i][j]['text'] = doc.content[2].table.body[i][j]['text'].split(' ').reverse().join(' ');
                            }
                        }
                    }
                }
            ];
        }

之后,您可以使用与此处相同的功能:

 table = $('#mydatatable').DataTable({
                language: language,
                "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "all"]],
                dom: 'Blfrtip',
                buttons: buttonForDatatable([2, 3, 4], [0, 0, 0, 0]),
                processing: true,
                serverSide: true,
.....

最新更新