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
pssh ist eine in Python implementierte Open-Sourc...
Ich habe MySQL vorher nicht sehr oft verwendet un...
Hintergrund Ein spezielles Gerät wird verwendet, ...
So installieren Sie das Linux CentOS 7.7-System i...
Code kopieren Der Code lautet wie folgt: <!DOC...
Ein während des Entwicklungsprozesses häufig auft...
Inhaltsverzeichnis 1. MySQL-Kompilierung und -Ins...
Wenn auf einer Seite mehrere Bilder eingefügt wer...
Ein Trick zum Umgang mit dieser Art von Fehlern be...
Inhaltsverzeichnis Vorwort Tatsächlicher Kampf 1....
Inhaltsverzeichnis Grundtypen jeder Typ Arrays Tu...
Vorwort Jeder Entwickler, der mit JS in Berührung...
Inhaltsverzeichnis 1. Grundkenntnisse der Indizie...
In der SQL-ähnlichen Anweisung beispielsweise SEL...
So schreiben Sie mithilfe von Filtern transparente...