Idee: Konvertieren Sie die HTML-Seite mit html2canvas in ein Bild und generieren Sie dann mit jspdf Base64 des Bildes in einer PDF-Datei. 1. Installation und Einführung//Konvertiere das Seiten-HTML in ein Bild npm install html2canvas --save // Aus dem Bild ein PDF erstellen npm installiere jspdf --save Führen Sie die definierte Implementierungsmethode ein und registrieren Sie sie in der Hauptdatei main.js des Projekts importiere htmlToPdf aus „@/utils/htmlToPdf“; // Die Verwendung der Methode Vue.use() ruft die Installationsmethode in der Toolmethode Vue.use(htmlToPdf) auf. Portal: Prinzip und Verwendung von Vue.use() in Vue 2. So verpacken und exportieren Sie PDF-DateienKonfigurationsdetailspdf = neues jsPDF('p', 'pt', [pdfX, pdfY]); Der erste Parameter: l: horizontal p: vertikal Der zweite Parameter: Maßeinheit („pt“, „mm“, „cm“, „m“, „in“ oder „px“); Der dritte Parameter: kann folgendes Format haben, der Standard ist „a4“. Für ein benutzerdefiniertes Format übergeben Sie die Größe einfach als numerisches Array, etwa: [592,28, 841,89]; a0 bis a10 b0 - b10 c0 bis c10 dl Brief Regierungsbrief Rechtliches Junior-Rechtsanwalt Hauptbuch Boulevardzeitung Kreditkarte pdf.addPage() fügt dem PDF-Dokument eine neue Seite hinzu, die Standardgröße ist A4. Die Parameter sind wie folgt: pdf.addImage() fügt dem PDF ein Bild hinzu. Die Parameter sind wie folgt: Eine PDF-Seite löschen let targetPage = pdf.internal.getNumberOfPages(); //Gesamtseitenzahl abrufen pdf.deletePage(targetPage); //Zielseite löschen PDF-Dokument speichern pdf.save(`test.pdf`); Kapselung der Methode zum Exportieren von PDF-Dateien (utils/htmlToPdf.js)// Seite ins PDF-Format exportieren. html2Canvas von „html2canvas“ importieren. JsPDF aus „jspdf“ importieren Standard exportieren{ installieren (Vue, Optionen) { Vue.prototype.getPdf = Funktion () { // Wenn es beim Herunterladen der PDF-Datei nicht oben auf der Seite steht, ist der PDF-Stil falsch. Gehen Sie daher zurück zum Anfang der Seite und laden Sie es dann herunter. let top = document.getElementById('pdfDom'); wenn (oben != null) { top.scrollIntoView(); oben = null; } let title = this.exportPDFtitle; html2Canvas(document.querySelector('#pdfDom'), { allowTaint: wahr }).dann(Funktion (Leinwand) { // Breite und Höhe der Leinwand abrufen let contentWidth = canvas.width; Lassen Sie contentHeight = canvas.height; // Die Höhe der Leinwand, die von einer PDF-Seite generiert wird, auf der die HTML-Seite angezeigt wird; let Seitenhöhe = Inhaltsbreite / 841,89 * 592,28; //Höhe der HTML-Seite ohne PDF-Generierung let leftHeight = contentHeight; // Seitenoffset let position = 0; // Die Breite und Höhe des von der HTML-Seite im PDF generierten Canvas-Bildes (in diesem Fall: horizontales A4-Blatt [841,89, 592,28], die vertikale Größe muss geändert werden) sei imgWidth = 841,89; let imgHeight = 841,89 / Inhaltsbreite * Inhaltshöhe; : Lassen Sie pageData = canvas.toDataURL('image/jpeg', 1.0); let PDF = neues JsPDF('l', 'pt', 'a4'); // Es müssen zwei Höhen unterschieden werden: eine ist die tatsächliche Höhe der HTML-Seite und die andere ist die Höhe der generierten PDF-Seite. // Wenn der Inhalt den Bereich einer PDF-Seite nicht überschreitet, ist keine Seitennummerierung erforderlich if (leftHeight < pageHeight) { PDF.addImage(Seitendaten, 'JPEG', 0, 0, Bildbreite, Bildhöhe) } anders { während (linkeHöhe > 0) { PDF.addImage(Seitendaten, „JPEG“, 0, Position, Bildbreite, Bildhöhe) linkeHöhe -= Seitenhöhe; Position -= 592,28; // Vermeiden Sie das Hinzufügen leerer Seiten, wenn (leftHeight > 0) { PDF.addPage(); } } } PDF.speichern(Titel + '.pdf') }) } } } Anwendung in verwandten Komponenten<Vorlage> <div Klasse="wrap" > <div id="pdfDom" style="padding: 10px;"> <el-Tabelle :data="Tabellendaten" Grenze> <el-table-column prop="date" label="Datum" width="250"></el-table-column> <el-table-column prop="name" label="Tabelle" width="250"></el-table-column> <el-table-column prop="address" label="Adresse"></el-table-column> </el-Tabelle> </div> <button type="button" style="margin-top: 20px;" @click="btnClick">PDF exportieren</button> </div> </Vorlage> <Skript> Standard exportieren { Daten() { zurückkehren { exportPDFtitle: "Name der PDF-Datei zum Seitenexport", Tabellendaten: [ { Datum: '2016-05-06', Name: 'Wang Xiaohu', Adresse: „Huoju Avenue, Bezirk Jiulongpo, Chongqing“ }, { Datum: '2016-05-07', Name: 'Wang Xiaohu', Adresse: „Huoju Avenue, Bezirk Jiulongpo, Chongqing“ },{ Datum: '2016-05-03', Name: 'Wang Xiaohu', Adresse: „Nr. 1518, Jinshajiang Road, Bezirk Putuo, Shanghai“ }, { Datum: '2016-05-02', Name: 'Wang Xiaohu', Adresse: „Nr. 1518, Jinshajiang Road, Bezirk Putuo, Shanghai“ }, { Datum: '2016-05-04', Name: 'Wang Xiaohu', Adresse: „Nr. 1518, Jinshajiang Road, Bezirk Putuo, Shanghai“ }, { Datum: '2016-05-01', Name: 'Wang Xiaohu', Adresse: „Nr. 1518, Jinshajiang Road, Bezirk Putuo, Shanghai“ }, { Datum: '2016-05-08', Name: 'Wang Xiaohu', Adresse: „Nr. 1518, Jinshajiang Road, Bezirk Putuo, Shanghai“ }, { Datum: '2016-05-06', Name: 'Wang Xiaohu', Adresse: „Nr. 1518, Jinshajiang Road, Bezirk Putuo, Shanghai“ }, { Datum: '2016-05-06', Name: 'Wang Xiaohu', Adresse: „Nr. 1518, Jinshajiang Road, Bezirk Putuo, Shanghai“ }, { Datum: '2016-05-07', Name: 'Wang Xiaohu', Adresse: „Nr. 1518, Jinshajiang Road, Bezirk Putuo, Shanghai“ }, { Datum: '2016-05-01', Name: 'Wang Xiaohu', Adresse: „Nr. 1518, Jinshajiang Road, Bezirk Putuo, Shanghai“ }, { Datum: '2016-05-08', Name: 'Wang Xiaohu', Adresse: „Nr. 1518, Jinshajiang Road, Bezirk Putuo, Shanghai“ }, { Datum: '2016-05-06', Name: 'Wang Xiaohu', Adresse: „Nr. 1518, Jinshajiang Road, Bezirk Putuo, Shanghai“ }, { Datum: '2016-05-07', Name: 'Wang Xiaohu', Adresse: „Nr. 1518, Jinshajiang Road, Bezirk Putuo, Shanghai“ }, { Datum: '2016-05-06', Name: 'Wang Xiaohu', Adresse: „Jiangjun Avenue, Bezirk Jiangning, Nanjing“ }, { Datum: '2016-05-07', Name: 'Wang Xiaohu', Adresse: „Jiangjun Avenue, Bezirk Jiangning, Nanjing“ },, { Datum: '2016-05-04', Name: 'Wang Xiaohu', Adresse: „Nr. 1518, Jinshajiang Road, Bezirk Putuo, Shanghai“ }, { Datum: '2016-05-01', Name: 'Wang Xiaohu', Adresse: „Nr. 1518, Jinshajiang Road, Bezirk Putuo, Shanghai“ }, { Datum: '2016-05-08', Name: 'Wang Xiaohu', Adresse: „Nr. 1518, Jinshajiang Road, Bezirk Putuo, Shanghai“ }, { Datum: '2016-05-06', Name: 'Wang Xiaohu', Adresse: „Nr. 1518, Jinshajiang Road, Bezirk Putuo, Shanghai“ }, { Datum: '2016-05-07', Name: 'Wang Xiaohu', Adresse: „Nr. 1518, Jinshajiang Road, Bezirk Putuo, Shanghai“ },{ Datum: '2016-05-01', Name: 'Wang Xiaohu', Adresse: „Nr. 1518, Jinshajiang Road, Bezirk Putuo, Shanghai“ }, { Datum: '2016-05-08', Name: 'Wang Xiaohu', Adresse: „Nr. 1518, Jinshajiang Road, Bezirk Putuo, Shanghai“ }, { Datum: '2016-05-06', Name: 'Wang Xiaohu', Adresse: „Nr. 1518, Jinshajiang Road, Bezirk Putuo, Shanghai“ }, { Datum: '2016-05-08', Name: 'Wang Xiaohu', Adresse: „Cultural Avenue, Bezirk Hongshan, Wuhan“ }, { Datum: '2016-05-06', Name: 'Wang Xiaohu', Adresse: „Cultural Avenue, Bezirk Hongshan, Wuhan“ }, { Datum: '2016-05-07', Name: 'Wang Xiaohu', Adresse: „Cultural Avenue, Bezirk Hongshan, Wuhan“ }, { Datum: '2016-05-06', Name: 'Wang Xiaohu', Adresse: „Jiangjun Avenue, Bezirk Jiangning, Nanjing“ }, { Datum: '2016-05-07', Name: 'Wang Xiaohu', Adresse: „Cultural Avenue, Bezirk Hongshan, Wuhan“ }, ] } }, Methoden: { btnClick(){ dies.$nextTick(() => {this.getPdf();}) }, }, } </Skript> WirkungZu optimierende Teile
ZusammenfassenDies ist das Ende dieses Artikels zum Generieren und Herunterladen von PDFs im Vue-Frontend. Weitere relevante Inhalte zum Generieren und Herunterladen von PDFs im Vue-Frontend finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Beschreibung der Nginx-Zugriffsprotokoll- und Fehlerprotokollparameter
>>: Die HTML-Eingabedateisteuerung begrenzt den Typ der hochgeladenen Dateien
Es gibt auch zwei Server: Vorbereitung: Legen Sie...
Das Raspberry Pi-Modell ist 4b, 1 G RAM. Das Syst...
Würmer replizieren sich, wie der Name schon sagt,...
Inhaltsverzeichnis Spezifikation a. Die Auslageru...
Hintergrund Als ich heute mit anderen Projektteam...
Die Methoden zur Installation von Nginx und mehre...
Zuerst wollte ich den Stil der Bildlaufleiste des...
Sehen wir uns zunächst verschiedene Möglichkeiten...
Wenn Sie einen Docker-Container verwenden, ist vi...
CHAR- und VARCHAR-Typen sind ähnlich und untersch...
F1: Welche Indizes hat die Datenbank? Was sind di...
Methode 1: Verwenden Sie Tabellenattribute: Heade...
zabbix_agent-Bereitstellung: Empfehlung: zabbix_a...
So zentrieren Sie den gesamten Seiteninhalt und pa...
Ich war in den letzten beiden Tagen etwas beschäf...