javascript 如何在DataTable的pdfHtml5按钮中动态更改方向?

yxyvkwin  于 2023-04-10  发布在  Java
关注(0)|答案(2)|浏览(113)

我一直在尝试根据可见列的数量动态地更改DataTables中输出的方向。
我正在设置一个全局变量dynOrient,当用户显示/隐藏列时,我会计算它。然后我尝试在按钮选项中设置它:

buttons: [
    {
        extend: 'pdfHtml5',
        footer: true,
        text: 'Download PDF',
        orientation: dynOrient,    //HERE
        customize: function(doc) {
        ...
        }
    }
]

这似乎保留了创建按钮时dynOrient的任何内容,而不会在dynOrient更改时将其从横向更改为纵向。
我也试着把它放在自定义功能中:

doc.content[1].pageOrientation = dynOrient;

这没有做任何事情,只是保持默认的肖像,无论dynOrient是什么。
如何动态更改DataTables中pdfHtml 5输出的方向?

cx6n0qe3

cx6n0qe31#

我实际上只是想出了一个解决方案(我不知道这是否是正确的解决方案)。
我将按钮的信息放入一个全局变量中,每次显示或隐藏一列时,我都会重新计算方向,在按钮信息中手动设置方向,然后删除/重新创建按钮。

var buttonInfo = {
    extend: 'pdfHtml5',
    footer: true,
    text: 'Download PDF',
    orientation: dynOrient,
    customize: function(doc) {
    ...
    }
};

//some code...

$("input[name='showhideswitches']").click(function() {
    var col = $(this).data('col');
    myTable.column(col).visible($(this).prop("checked"));
    dynOrient = getOrientation();
    buttonInfo.orientation = dynOrient; //Manually overriding orientation
    myTable.button('0').remove();
    myTable.button().add(0, buttonInfo); //Re-create
}

也许有人能提供一个更好的解决方案,但在那之前,我打算把它放在这里,因为它现在工作。

k2fxgqgv

k2fxgqgv2#

在自定义部分更改pdf方向

extend: 'pdfHtml5',    
customize: function (doc) {
   doc.pageOrientation=yourOrientation;
}

注意:yourOrientation是您的方向参数或返回'landscape'或'portrait'的函数
导出到pdf时,始终调用定制部分

相关问题