Angular 7: конвертировать HTML в PDF - PullRequest
0 голосов
/ 11 февраля 2019

Я безуспешно пытаюсь преобразовать таблицу HTML в PDF.

Я использовал для этого jsPDF, но результат действительно плохой, и я пытаюсь понять, почему.

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

Я попробовал вот что:

const html = document.getElementById('resultTable');
const pdf = new jsPDF('landscape', 'px', 'a4');

pdf.addHTML(html, 0, 0, {
    'width': html.clientWidth,
    'height': html.clientHeight
}, () => { pdf.save('web.pdf'); });

IВы уже пытались использовать, как ширина и высота, размер страницы PDF (с pdf.internal.pageSize ) без успеха.И я уже пытался использовать «pt» и «mm» вместо «px».

Есть идеи?

Ответы [ 3 ]

0 голосов
/ 14 февраля 2019

Попробуйте .html() вместо.

<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.debug.js" 
        integrity="sha384-NaWTHo/8YCBYJ59830LTz/P4aQZK1sS0SneOgAvhsIl3zBu8r9RevNg5lHCHAuQ/"
        crossorigin="anonymous"></script>
<script src="https://html2canvas.hertzen.com/dist/html2canvas.min.js"></script>
<script>
    function convert() {
        let pdf = new jsPDF('l', 'pt', [tblWidth, tblHeight]);
        pdf.html(document.getElementById('resultTable'), {
            callback: function () {
                // pdf.save('web.pdf');
                window.open(pdf.output('bloburl')); // use this to debug
            }
        });
    }
</script>
0 голосов
/ 13 августа 2019
public downloadPdf() {
let doc = new jsPDF('p', 'pt', 'a4');
h2c(document.getElementById('printpdf')).then(function (canvas) {
  let width = doc.internal.pageSize.getWidth();
  let height = doc.internal.pageSize.getHeight();
  let dataURL = canvas.toDataURL('image/jpeg', 1.0);
  doc.addImage(dataURL, 'jpg', 0, 0, width, height, 'none');
  doc.save('mypdf.pdf');
  });
}
0 голосов
/ 11 февраля 2019

Это не так тривиальная задача.На сервере я пытался использовать wkhtmltopdf, но в итоге искал лучшее решение, потому что с ним я не могу использовать всю мощь CSS для печати.Я думаю, что это та же проблема с инструментами на стороне клиента, такими как jsPDF, вы не получите ожидаемого и последовательного результата.

Безголовый хром в Google Cloud - мой выбор прямо сейчас.

Вотхороший обзор доступных инструментов и технологий Современное преобразование HTML в PDF

ОБНОВЛЕНИЕ: Если вам нужно создать PDF-файл и вы ничего не можете установить на своем сервере, вы можете сделать это, используяБезголовый Chrome и Google Cloud Function.

https://rominirani.com/using-puppeteer-in-google-cloud-functions-809a14856e14 https://medium.com/@ebidel/puppeteering-in-firebase-google-cloud-functions-76145c7662bd

ОБНОВЛЕНИЕ 2: Кстати, у вас всегда есть возможность напечатать в PDF в браузере.Однако я не уверен, как это работает на планшетах Android, Safari для iOS может экспортировать в PDF.

...