Vue-pdf implementiert eine Online-Vorschau von PDF-Dateien

Vue-pdf implementiert eine Online-Vorschau von PDF-Dateien

Vorwort

In den meisten Projekten werden Sie auf eine Online-Vorschau von PDF-Dateien stoßen. Das Projekt verwendet Element UI und wird mit vue-pdf implementiert.

Abhängigkeiten installieren

npm install --save vue-pdf

Verwandte Parameter

Parametereinführung:

  • URL: Der Pfad der PDF-Datei, der ein lokaler oder ein Online-Pfad sein kann.
  • Seite: die Nummer der aktuell angezeigten Seite, zum Beispiel die erste Seite Seite=1
  • Drehen: Drehwinkel, z. B. bedeutet 0 keine Drehung, +90 und -90 bedeuten horizontale Drehung.
  • Fortschritt: Der Ladefortschritt der aktuellen Seite, im Bereich von 0 bis 1. Wenn er 1 ist, bedeutet dies, dass die aktuelle Seite vollständig geladen wurde.
  • Seite geladen: Rückruffunktion für erfolgreiches Laden der Seite, selten verwendet.
  • num-pages: Gesamtseitenzahl
  • Fehler: Rückruf für Ladefehler
  • Link angeklickt: Links innerhalb einer eigenständigen PDF-Datei werden ausgelöst.
  • drucken Dies ist die Druckfunktion. Hinweis: Google Chrome zeigt verstümmelte Zeichen an, was mit der Schriftart zusammenhängt.

erreichen

<Vorlage>
    <div>
        <el-Zeile>
            <el-button @click="onPreview" size="small">Vorschau</el-button>
        </el-row>
        <el-dialog title="Vertragsanhang Vorschau anzeigen" :visible.sync="viewVisible" center width="60%" @close='closePreview'>
            <el-row :gutter="20">
                <span>Insgesamt {{pageCount}} Seiten, aktuelle Seite {{pdfPage}}</span>
                <el-button type="text" size="mini" @click.stop="previousPage">Vorherige Seite</el-button>
                <el-button type="text" size="mini" @click.stop="nextPage">Nächste Seite</el-button>
            </el-row>
            <div>
                <pdf :src="src" :page="pdfPage" @num-pages="Seitenanzahl = $event" @page-loaded="pdfPage = $event" style="Anzeige: Inline-Block; Breite: 100 %"></pdf>
            </div>
        </el-dialog>
    </div>
</Vorlage>
<Skript>
PDF aus „vue-pdf“ importieren
Store aus '@/store/' importieren
Standard exportieren {
    Komponenten: {
        pdf
    },
    Daten(){
        zurückkehren {
            viewVisible: false,
            quelle: null,
            pdfSeite: 1,
            Seitenanzahl: 0,
            Token: store.getters.access_token,
        }
    },
    Methoden:{
        beiVorschau(){
            diese.src = pdf.createLoadingTask({
                URL: „http://localhost:8082/file/demo.pdf“,
                httpHeaders: {Authorization:'Bearer '+ dieses.token}
            });
            dies.src.promise.then(pdf => {
                Dies.viewVisible = true;
            });
        },
        Vorschau schließen(){
            diese.pdfSeite = 1;
        },
        vorherigeSeite(){
            let p = diese.pdfSeite
            p = p > 1 ? p-1 : diese.Seitenanzahl
            diese.pdfSeite = p
        },
        nächsteSeite(){
            let p = diese.pdfSeite
            p = p < diese.Seitenanzahl ? p+1 : 1
            diese.pdfSeite = p
        }
    }
}
</Skript>

Wirkung

Notiz

1. URL

URL ist der Dateiadressenpfad

diese.src = pdf.createLoadingTask({
    URL: „http://localhost:8082/file/demo.pdf“,
});

2. Setzen Sie den Anforderungsheader

Sie können Parameter wie Token über httpHeaders festlegen

httpHeaders: {Authorization:'Bearer '+ dieses.token}

3. Quelle

Das ist wichtiger. Viele Beiträge im Internet lauten wie dieser.

dies.src.then(pdf => {
    Dies.viewVisible = true;
})

Meldet TypeError: this.src.then ist keine Funktion

TypeError: this.src.then ist keine Funktion
    bei VueComponent.onPreview (index.vue?6ced:241)
    beim Klicken (index.vue?aaff:261)
    bei invokeWithErrorHandling (vue.runtime.esm.js?2b0e:1854)
    bei VueComponent.invoker (vue.runtime.esm.js?2b0e:2179)
    bei invokeWithErrorHandling (vue.runtime.esm.js?2b0e:1854)
    bei VueComponent.Vue.$emit (vue.runtime.esm.js?2b0e:3888)
    bei VueComponent.handleClick (element-ui.common.js?5c96:9413)
    bei invokeWithErrorHandling (vue.runtime.esm.js?2b0e:1854)
    bei HTMLButtonElement.invoker (vue.runtime.esm.js?2b0e:2179)
    bei HTMLButtonElement.original._wrapper (vue.runtime.esm.js?2b0e:6917)

Die richtige Antwort ist diese

dies.src.promise.then(pdf => {
    Dies.viewVisible = true;
});

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Vue implementiert Online-Vorschau von PDF-Dateien und Download (pdf.js)
  • Vue implementiert die Online-Vorschaufunktion von PDF-Dokumenten
  • Vue-Plugin-Entwicklung: So verwenden Sie pdf.js, um eine Online-Vorschau von PDF-Dokumenten auf Mobiltelefonen zu realisieren
  • Vue-Beispielcode für die Online-Vorschau von Office-Dateien
  • Vue implementiert eine Online-Vorschau von PDF-Dateien (mithilfe von pdf.js/iframe/embed)
  • vue Beispielcode zur Verwendung von vue-pdf zur Implementierung einer PDF-Onlinevorschau
  • vue-pdf realisiert Online-Dateivorschau
  • Online-Vorschau von drei gängigen Dateitypen in Vue-Projekten (PDF-/Word-/Excel-Tabellen)

<<:  So lesen Sie die regionalen Informationen einer IP mithilfe des Nginx- und GeoIP-Moduls

>>:  MySQL Community Server 5.6 Installations- und Konfigurations-Tutorial unter Windows 8

Artikel empfehlen

Detaillierte Erklärung unsichtbarer Indizes in MySQL 8.0

Wort Seit der ersten Version von MySQL 8.0 liegen...

So zeichnen Sie die Zeitleiste mit Vue+Canvas

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Analyse des Event-Bubbling-Mechanismus in JavaScript

Was ist Blubbern? Es gibt drei Phasen im DOM-Erei...

Häufige Tomcat-Ausnahmen und Lösungscodebeispiele

Das Unternehmensprojekt wurde in Java entwickelt ...

Zwei Lösungen für das 404-Problem beim Aktualisieren des Vue-Paket-Upload-Servers

1: Nginx-Serverlösung, ändern Sie die .conf-Konfi...

So erstellen Sie einen DHCP-Server in Linux

Inhaltsverzeichnis 1. Grundkenntnisse: 2. DHCP-Se...

Beispiel zum Festlegen der pseudostatischen WordPress-Eigenschaft in Nginx

Zitat aus Baidus Erklärung zu Pseudostatik: Pseud...

Tutorial zur Installation der Dekomprimierungsversion von MySQL 8.0.12

In diesem Artikel finden Sie das Installations-Tu...

30 kostenlose hochwertige englische Ribbon-Schriftarten

30 kostenlose englische Ribbon-Schriftarten in hoh...

So spielen Sie lokale Mediendateien (Video und Audio) mit HTML und JavaScript ab

Erstens kann JavaScript aus Sicherheitsgründen ni...

MySQL-Optimierung: Cache-Optimierung

Ich freue mich, dass einige Blogger meinen Artike...