Maison > interface Web > Voir.js > Comment Vue3+Vue-PDF implémente l'aperçu en ligne des fichiers PDF

Comment Vue3+Vue-PDF implémente l'aperçu en ligne des fichiers PDF

PHPz
Libérer: 2023-05-13 22:04:04
avant
2524 Les gens l'ont consulté

Créer un projet vue3

Nous créons d'abord un projet Vue3, entrons la commande dans le terminalVue3 项目, 在终端中输入命令

pnpm create vite vue-pdf-preview
Copier après la connexion

选择 vue-ts 回车,cd 进入项目根目录,执行 pnpm install, 等待项目依赖包安装完成。

项目依赖包安装完成后,我们来启动项目, 执行命令 pnpm run dev ,可以看到控制台输入出了如下内容

  vite v2.9.9 dev server running at:
  > Local: http://localhost:3000/
  > Network: use `--host` to expose
  ready in 780ms.
Copier après la connexion

按住 control/command + 鼠标左键,项目在浏览器中打开了

Comment Vue3+Vue-PDF implémente laperçu en ligne des fichiers PDF

项目启动成功

添加 PDF 预览插件

项目启动成功后,我们安装 PDF 预览插件

pnpm install vue-pdf-embed
pnpm install vue3-pdfjs
Copier après la connexion

我们在 src 下新建一个文件 src/components/pdfPreview.vue,添加一些代码,初始化 vue-pdf 预览,代码如下

<template>
    <div class="pdf-preview">

    </div>
</template>
<script setup lang="ts">
import { reactive, onMounted, computed } from "vue";

const props = defineProps({
    pdfUrl: {
        type: String,
        required: true
    }
})
onMounted(() => {
});
</script>
<style lang="css" scoped>
.pdf-preview {
    position: relative;
    height: 100vh;
    padding: 20px 0;
    box-sizing: border-box;
    background: rgb(66, 66, 66);
}
.vue-pdf-embed {
    text-align: center;
    width: 515px;
    border: 1px solid #e5e5e5;
    margin: 0 auto;
    box-sizing: border-box;
}
</style>
Copier après la connexion

添加完成后,我们将 PDF 预览组件引入到 App.vue 文件中,并将提前准备的 PDF 文件也引入,如下所示:

<template>
<div>
    <PDFView :pdfUrl="jsPdf" />
</div>
</template>
<script setup lang="ts">
import PDFView from "./components/pdfPreview.vue"
import jsPdf from "./Javascript.pdf"
</script>
Copier après la connexion

接下来我们回到刚刚新建的 PDF 预览组件页面,来完善预览功能

我们先引入 PDF 预览插件:

import VuePdfEmbed from "vue-pdf-embed";
import { createLoadingTask } from "vue3-pdfjs/esm"; // 获得总页数
Copier après la connexion

使用 vue3reactive 定义一些页数,页码,PDF文件预览地址变量

const state = reactive({
    source: props.pdfUrl, 预览pdf文件地址
    pageNum: 1, 当前页面
    scale: 1, // 缩放比例
    numPages: 0, // 总页数
});
Copier après la connexion

OnMounted

 const loadingTask = createLoadingTask(state.source);
    loadingTask.promise.then((pdf:{numPages: number}) => {
        state.numPages = pdf.numPages;
    });
Copier après la connexion
Sélectionnez vue-ts et appuyez sur Entrée, cd pour entrer la racine du projet répertoire et exécutez pnpm install, attendez que le package de dépendances du projet soit installé.

Une fois le package de dépendances du projet installé, démarrons le projet et exécutons la commande pnpm run dev. Vous pouvez voir que le contenu suivant est entré sur la console

 <div class="pdf-wrap">
     <vue-pdf-embed :source="state.source"  : class="vue-pdf-embed" :page="state.pageNum" />
</div>
Copier après la connexion
Maintenez control/command + gauche. bouton de la souris

, le projet est ouvert dans le navigateur

Comment implémenter Vue3+ Aperçu en ligne du fichier PDF Vue-PDF

Le projet a démarré avec succès

Ajoutez le plug-in de prévisualisation

PDF

Après le démarrage réussi du projet, nous avons installé le plug-in de prévisualisation

PDF

<div class="page-tool">
    <div class="page-tool-item" >上一页</div>
    <div class="page-tool-item">下一页</div>
    <div class="page-tool-item">{{state.pageNum}}/{{state.numPages}}</div>
    <div class="page-tool-item" >放大</div>
    <div class="page-tool-item">缩小</div>
</div>
Copier après la connexion
Nous avons créé un nouveau sous src Fichier src/components/pdfPreview.vue, ajoutez du code, initialisez l'aperçu vue-pdf, le code est le suivant
.pdf-preview {
    position: relative;
    height: 100vh;
    padding: 20px 0;
    box-sizing: border-box;
    background-color: e9e9e9;
}
.pdf-wrap{
    overflow-y:auto ;
}
.vue-pdf-embed {
    text-align: center;
    width: 515px;
    border: 1px solid #e5e5e5;
    margin: 0 auto;
    box-sizing: border-box;
}

.page-tool {
    position: absolute;
    bottom: 35px;
    padding-left: 15px;
    padding-right: 15px;
    display: flex;
    align-items: center;
    background: rgb(66, 66, 66);
    color: white;
    border-radius: 19px;
    z-index: 100;
    cursor: pointer;
    margin-left: 50%;
    transform: translateX(-50%);
}
.page-tool-item {
    padding: 8px 15px;
    padding-left: 10px;
    cursor: pointer;
}
Copier après la connexion

Une fois l'ajout terminé, nous présenterons le composant d'aperçu 🎜PDF🎜. Accédez au fichier App.vue et importez le fichier 🎜PDF🎜 préparé à l'avance, 🎜comme indiqué ci-dessous : 🎜🎜
const scale = computed(() => `transform:scale(${state.scale})`)
function lastPage() {
    if (state.pageNum > 1) {
        state.pageNum -= 1;
    }
}
function nextPage() {
    if (state.pageNum < state.numPages) {
        state.pageNum += 1;
    }
}
function pageZoomOut() {
    if (state.scale < 2) {
        state.scale += 0.1;
    }
}
function pageZoomIn() {
    if (state.scale > 1) {
        state.scale -= 0.1;
    }
}
Copier après la connexion
🎜Ensuite, nous revenons à la page du composant d'aperçu 🎜PDF🎜 nouvellement créée. Pour améliorer la fonction d'aperçu🎜🎜🎜Nous introduisons d'abord le plug-in d'aperçu PDF : 🎜🎜
<div class="page-tool-item" @click="lastPage">上一页</div>
<div class="page-tool-item" @click="nextPage">下一页</div>
<div class="page-tool-item">{{state.pageNum}}/{{state.numPages}}</div>
<div class="page-tool-item" @click="pageZoomOut">放大</div>
<div class="page-tool-item" @click="pageZoomIn">缩小</div>
Copier après la connexion
🎜Utilisez le réactif de 🎜vue3🎜. code> pour définir un numéro de page, un numéro de page, des variables d'adresse d'aperçu du fichier PDF🎜rrreee🎜dans <code> OnMounted Utilisez 🎜createLoadingTask🎜 dans la fonction hook pour obtenir le nombre total de pages du fichier d'aperçu 🎜rrreee🎜 🎜Ajoutez le code du plug-in d'aperçu au modèle : 🎜🎜rrreee🎜Ouvrez le navigateur et vous pouvez voir que le fichier PDF a été chargé. Mais le style n'est pas très beau. Nous optimiserons le style à l'étape suivante. et améliorez la fonction de tournage de page, la fonction de zoom et la fonction d'affichage de la page actuelle/du nombre total de pages du fichier PDF🎜🎜Ajoutez le code suivant à 🎜tempate🎜🎜rrreee🎜🎜 Style d'embellissement : 🎜🎜rrreee🎜Ajoutez une fonction de rotation de fichier, fonction zoom, fonction d'affichage de la page actuelle/du nombre total de pages ajoutée et améliorée🎜rrreee🎜🎜tempalte🎜🎜rrreee

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal