Я использую jsPDF с autotable, я пытаюсь центрировать таблицу с фиксированной шириной на сгенерированной странице PDF. Кажется, я не могу найти решение для этого, везде, где я смотрю, это просто полная ширина, я не хочу, чтобы мой стол был полной шириной. Я попробовал с опцией полей, но это не очень точно, и я не совсем уверен, как рассчитать поля от А4 до горизонтального центрирования моей таблицы.

Скриншот: введите описание изображения здесь

document.querySelector(".report-btn").addEventListener("click", () => {
  const pdfDoc = new jsPDF();
  const list = createListforPdf(); // function to generate list

  pdfDoc.autoTable({
    theme: "grid",
    tableWidth: 100,
    styles: { halign: "center" },
    columnStyles: {
      0: { cellWidth: 85, halign: "left" },
      1: { cellWidth: 15 }
    },

    head: [["MRZ Check number", "is OK?"]],
    body: [[list[0], "YES"], [list[1], "NO"]]
  });

  pdfDoc.save();
});
0
damyco 19 Авг 2019 в 13:38

2 ответа

Лучший ответ

Вы можете рассчитать поля следующим образом:

let doc = new jsPDF();

let wantedTableWidth = 100;
let pageWidth = doc.internal.pageSize.width;
let margin = (pageWidth - wantedTableWidth) / 2;

doc.autoTable({
    head: [['Name', 'Country']],
    body: [
        ['Leon', 'Sweden'],
        ['Magnus', 'Norway'],
        ['Juan', 'Argentina'],
    ],
    margin: {left: margin, right: margin}
});

doc.save('table.pdf');
0
Simon Bengtsson 19 Авг 2019 в 14:40

Оберните таблицу элементом div.

<div class="table-container">
    <table id="my-table"><!--...--></table>
</div>

В CSS напишите класс для центрирования таблицы внутри контейнера.

div.table-container {
    display: flex;
    justify-content: center;
}
0
Dishon 19 Авг 2019 в 11:09