169 похожих чатов

Привет всем подскажите, как во vue можно сгенерировать PDF из DOM?

html + css

6 ответов

14 просмотров

import XLSX from 'xlsx' import { saveAs } from 'file-saver' import jsPDF from 'jspdf' import 'jspdf-autotable' export default class Download { constructor (arrayData, filename, headArray) { this.arrayData = arrayData this.filename = filename this.headArray = headArray this.EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8'; } downloadAsExel() { const worksheet = XLSX.utils.json_to_sheet(this.arrayData) const workbook = { Sheets: { 'data': worksheet}, SheetNames: ['data'] } const excelBuffer = XLSX.write(workbook, {bookType: 'xlsx', type: 'array'}) this.saveAsExcel(excelBuffer, this.filename) } saveAsExcel(buffer, filename) { const data = new Blob([buffer], {type: this.EXCEL_TYPE}) saveAs(data, filename + '.xlsx') } downloadAsPdf() { const asArray = this.arrayData.map(obj => Object.values(obj) ) const doc = new jsPDF() doc.autoTable({ head: [this.headArray], body: asArray }) doc.save(${this.filename}.pdf) } copyToClipboard() { const asArray = this.arrayData.map(obj => Object.values(obj) ) copy2DToClipboard(asArray); function copy2DToClipboard(array) { var csv = '', row, cell; for (row = 0; row < array.length; row++) { for (cell = 0; cell < array[row].length; cell++) { csv += (array[row][cell]+'').replace(/[\n\t]+/g, ' '); if (cell+1 < array[row].length) csv += '\t'; } if (row+1 < array.length) csv += '\n'; } copyTextToClipboard(csv); } function fallbackCopyTextToClipboard(text) { var textArea = document.createElement("textarea"); textArea.value = text; // Avoid scrolling to bottom textArea.style.top = "0"; textArea.style.left = "0"; textArea.style.position = "fixed"; document.body.appendChild(textArea); textArea.focus(); textArea.select(); try { var successful = document.execCommand('copy'); var msg = successful ? 'successful' : 'unsuccessful'; console.log('Fallback: Copying text command was ' + msg); } catch (err) { console.error('Fallback: Oops, unable to copy', err); } document.body.removeChild(textArea); } function copyTextToClipboard(text) { if (!navigator.clipboard) { fallbackCopyTextToClipboard(text); return; } navigator.clipboard.writeText(text).then(function() { console.log('Async: Copying to clipboard was successful!'); }, function(err) { console.error('Async: Could not copy text: ', err); }); } } }

Tmq- Автор вопроса
Bega
import XLSX from 'xlsx' import { saveAs } from 'fi...

воувоувоу, спасибо! буду пробовать)

Tmq- Автор вопроса
Bega
import XLSX from 'xlsx' import { saveAs } from 'fi...

Эта библиотека весит очень много

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта