jsPDF с автоматической таблицей плагинов не подчиняется направлению текста справа налево от значений атрибута элемента html, таких как <html dir = "rtl" lang = "ar"> - PullRequest
0 голосов
/ 21 января 2020

Уважаемые,

У меня есть следующая HTML страница

<html dir="rtl" lang="ar">

с этой простой таблицей

<table id="my-table">

    <tr>
      <th>الشهر</th>
      <th>المدخرات</th>
    </tr>

    <tr>
      <td>يناير</td>
      <td>$100</td>
    </tr>
    <tr>
      <td>فبراير</td>
      <td>$80</td>
    </tr>

</table>

с использованием jsPDF с автоматически устанавливаемым плагином

function htmlToPDF() {
    const doc = new jsPDF({ filters: ['ASCIIHexEncode'] });

      doc.autoTable({
        html: '#my-table',
        theme: 'grid',
        styles: {
            font: 'Amiri',
            halign: 'right'
        },

      })

    doc.save('report.pdf');
}
</script>

, даже если я установил направление html в rtl, которое показывалось выше, оно все равно сохраняет файл в направлении ltr

Я пытался поместить атрибут dir в различные элементы HTML, такие как

<HTML>
<body>
<div>
<table>

без успеха

любая помощь будет оценена

спасибо

ОБНОВЛЕНИЕ: Я нашел это

doc.viewerPreferences({"Direction" : "R2L"}, true);

но это тоже не сработало!

1 Ответ

0 голосов
/ 28 марта 2020

Мне пришлось обратить вспять столбцы таблицы в клонированном объекте, используя JQuery

var rtlTable = $('#html-table').clone();
rtlTable.find('tr').each(function () {
    var tds = $(this).children('td,th').get().reverse();
    $(this).append(tds);
});

Затем я передал элемент html в функцию autotable

var pdf = new jsPDF();
pdf.autoTable({html: rtlTable.get()[0], styles: { halign: "left" });
pdf.save("reprt.pdf");
...