vue項目預覽pdf功能(解決動態文字無法顯示的問題)

最近,因為公司項目需要預覽pdf的功能,開始的時候找了市面上的一些pdf插件,都能用,但是,后面因為pdf變成了需要根據內容進行變化的,然后,就出現了需要動態生成的文字不顯示了。換了好多好多的插件,都無法顯示,直接無語了。 (pdf-vue3,pdf.js,vue3-pdfjs,vue-pdf-embed等插件無法顯示動態文字)

先看效果:

????????

?這個插件支持自定義功能,唯一的缺點就是有點龐大,其他的就很完美了。

········我先簡單來說一下設計思路吧,將查看pdf的這個頁面寫成一個組件,然后將組件綁定一個路由,當我們在列表頁點擊查看pdf功能時,將pdf的地址通過路由傳入到我們的查看pdf的組件當中,然后在組件中使用插件,從而渲染我們的pdf文件

按照下面的步驟開始進行操作

1,創建一個新的預覽pdf的組件

<template><div class="table-container"><!-- <PDF :src="url"  :disableFontFace="true"/> --><!-- <vue-pdf-embed :source="{cMapUrl: 'https://unpkg.com/pdfjs-dist/cmaps/',url: url,}"/> --><!-- <PdfViewer v-if="url" :url="url" :type="'canvas'" :pdfjsDistPath="'/src/components/pdfjsDistPath'" ></PdfViewer><pdf v-if="url" :url="url" :type="'canvas'" :pdfjsDistPath="'/src/components'" /> --><iframe :src="'static/pdf/web/viewer.html?file=' + url + '#page=1'" style="width: 100%; height: 100%"></iframe>  <!--!!!!注意這里,這里需要注意的地方有2個,第一個是我們的url,這個就是我們要預覽的pdf的地址,第二個是#page=1 ,這個是打開時默認先展示第一頁 --></div>
</template>
<script lang="ts">
import { defineComponent, onMounted, reactive, ref, toRefs } from 'vue'
import { useRoute } from 'vue-router'
// import pdf from '../../components/pdf/pdf'// import PDF from "pdf-vue3";// Plus
export default defineComponent({name: 'showpdf',directives: {},components: {},setup() {const route = useRoute()let url = ref()onMounted(() => {url.value = route.query.url// getNumPages(route.query.url)})// 思考 ref 響應式和 reactive 響應式的區別; 修改對象屬性值,是否會刷新數據return {url}}
})
</script>
<style lang="stylus" scoped>.table-container{height: 100%;overflow: scroll;}</style>

基本上稍微懂一點vue應該就能到上方代碼的寫法,這里就不多贅述了,有些要注意的地方會加上注釋

1,當創建好vue文件后,將該vue文件綁定在路由上

?3,我們在列表頁獲取到的pdf地址,通過路由傳遞到我們的pdf查看組件里。

       const examine = (item: any) => {router.push({path: '/report/showpdf',query: { url: item.fileUrl }})

4.在pdf路由組件里接收,并調用pdf查看器插件

?5,自定義

當我們渲染出pdf組件時,我們這時候看到,組件其實就是html渲染的,一般的都是畫布渲染,可能這就是能顯示動態文字的原因吧,既然是html渲染的,我們就能通過修改html來進行自定義功能啦,

?我們找到 web/viweer.html文件,找到我們需要操作的功能,注釋隱藏或者添加即可,在js里寫入功能即可

?6.結尾

后續我們把文件上傳到csdn里,供大家免費下載,如果出現下載需要條件的情況下,可以直接私聊我,獲取pdf預覽查看,當要使用插件時,一定要閱讀放插件文件夾里的提示文檔!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42908.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42908.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42908.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Flink安裝與使用

1.安裝準備工作 下載flink Apache Flink: 下載 解壓 [dodahost166 bigdata]$ tar -zxvf flink-1.12.0-bin-scala_2.11.tgz 2.Flinnk的standalone模式安裝 2.1修改配置文件并啟動 修改&#xff0c;好像使用默認的就可以了 [dodahost166 conf]$ more flink-conf.yaml 啟動 …

【辦公自動化】使用Python批量生成PPT版榮譽證書

&#x1f935;?♂? 個人主頁&#xff1a;艾派森的個人主頁 ?&#x1f3fb;作者簡介&#xff1a;Python學習者 &#x1f40b; 希望大家多多支持&#xff0c;我們一起進步&#xff01;&#x1f604; 如果文章對你有幫助的話&#xff0c; 歡迎評論 &#x1f4ac;點贊&#x1f4…

RocketMQ消費者可以手動消費但無法主動消費問題,或生成者發送超時

1.大多數是配置問題 修改rocketmq文件夾broker.conf 2.配置與集群IP或本地IPV4一樣 重啟 在RocketMQ獨享實例中支持IPv4和IPv6雙棧&#xff0c;主要是通過在網絡層面上同時支持IPv4和IPv6協議棧來實現的。RocketMQ的Broker端、Namesrv端和客戶端都需要支持IPv4和IPv6協議&…

Python土力學與基礎工程計算.PDF-螺旋板載荷試驗

python 求解代碼如下&#xff1a; 1. import numpy as np 2. 3. # 已知參數 4. p_a 100 # 標準壓力&#xff0c; kPa 5. p np.array([25, 50, 100, 200) # 荷載&#xff0c; kPa 6. s np.array([2.88, 5.28, 9.50, 15.00) / 10 # 沉降量&#xff0c; cm 7. D 10 # 螺旋板直…

C語言:選擇+編程(每日一練)

目錄 選擇題&#xff1a; 題一&#xff1a; 題二&#xff1a; 題三&#xff1a; 題四&#xff1a; 題五&#xff1a; 編程題&#xff1a; 題一&#xff1a;尼科徹斯定理 示例1 題二&#xff1a;等差數列 示例2 本人實力有限可能對一些地方解釋和理解的不夠清晰&…

Redis知識(一)

目錄 Redis過期刪除和內存淘汰策略&#xff1a; 過期刪除策略&#xff1a; 內存淘汰策略&#xff08;解決內存過大問題&#xff09;&#xff1a; LRU和LFU以及他們在Redis里的實現 主從復制 哨兵模式 緩存 緩存雪崩 緩存擊穿 緩存穿透 數據庫和緩存一致性問題 Redis…

windows下redis服務啟動及.bat文件中中redis服務的啟動

windows windows下redis服務的啟動 1、不配置環境變量 找到redis服務的安裝目錄進入命令行窗口并輸入命令redis-server.exe redis.windows.conf2、配置環境變量 將redis安裝目錄配置在path環境變量中之后就可以在cmd窗口的任意位置輸入redis-server命令就可以啟動redis服務…

材料行業可以轉IC設計后端嗎?

近來有許多材料行業的小伙伴通過后臺來問我對于職業規劃的看法&#xff0c;甚至有些小伙伴直接點明了某個行業適不適合自己&#xff0c;那么我這邊僅以近年來比較熱門的數字芯片設計來展開講講&#xff0c;材料適不適合轉行做IC呢。 對于理工科的同學而言&#xff0c;選擇哪個…

Graal 編譯器

一開始,我們來講一個故事。假設有一個名為 John 的開發人員,他正在嘗試編寫一些高性能的 Java 代碼。他遇到了一些性能和速度問題,因為他的應用需要經常從大量的數據源中獲取數據,并進行計算。他嘗試了許多優化工具和技術,但是仍然無法滿足他的需求。在這個時候,他聽說了…

公告:微信小程序備案期限官方要求

備案期限要求 1、若微信小程序未上架&#xff0c;自2023年9月1日起&#xff0c;微信小程序須完成備案后才可上架&#xff0c;備案時間1-20日不等&#xff1b; 2、若微信小程序已上架&#xff0c;請于2024年3月31日前完成備案&#xff0c;逾期未完成備案&#xff0c;平臺將按照…

Android Studio實現列表展示圖片

效果&#xff1a; MainActivity 類 package com.example.tabulation;import android.content.Intent; import android.os.Bundle; import android.view.View;import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; im…

解決 Maven 創建 Spring Boot 項目時出現 “Cannot access alimaven“ 錯誤的方法

系列文章目錄 文章目錄 系列文章目錄前言一、確認 Maven 配置二、創建 Spring Boot 項目三、修改項目的 Maven 配置四、清除 Maven 本地倉庫五、重新構建項目總結前言 Maven 是 Java 項目的構建工具,而 Spring Boot 則是用于快速構建 Spring 應用程序的框架。但有時,在創建 …

Redis擴容與一致性Hash算法解析

推薦閱讀 AI文本 OCR識別最佳實踐 AI Gamma一鍵生成PPT工具直達鏈接 玩轉cloud Studio 在線編碼神器 玩轉 GPU AI繪畫、AI講話、翻譯,GPU點亮AI想象空間 資源分享 「java、python面試題」來自UC網盤app分享&#xff0c;打開手機app&#xff0c;額外獲得1T空間 https://dr…

Java導出數據到Excel

系列文章目錄 文章目錄 系列文章目錄前言一、為什么需要導出數據到Excel?二、使用Java導出數據到Excel的步驟1.添加依賴2.編寫導出邏輯3.運行測試總結前言 當今數據處理的場景中,Excel仍然是一個不可或缺的工具,用于存儲、分析和共享數據。在Java應用程序中,有時候需要將數…

神經網絡基礎-神經網絡補充概念-04-梯度下降法

概念 梯度下降法是一種常用的優化算法&#xff0c;用于在機器學習和深度學習中更新模型參數以最小化損失函數。它通過迭代地調整參數&#xff0c;沿著損失函數的負梯度方向移動&#xff0c;從而逐步逼近損失函數的最小值。 基本思想 梯度下降法的基本思想是&#xff1a;在每…

JVM——引言+JVM內存結構

引言 什么是JVM 定義: Java VirtualMachine -java 程序的運行環境 (ava 二進制字節碼的運行環境) 好處: 一次編寫&#xff0c;到處運行自動內存管理&#xff0c;垃圾回收功能數組下標越界檢查&#xff0c;多態 比較: jvm jre jdk 學習jvm的作用 面試理解底層實現原理中…

神經網絡基礎-神經網絡補充概念-63-殘差網絡

概念 殘差網絡&#xff08;Residual Network&#xff0c;ResNet&#xff09;是一種深度卷積神經網絡結構&#xff0c;旨在解決深層網絡訓練中的梯度消失和梯度爆炸問題&#xff0c;以及幫助訓練非常深的網絡。ResNet 在2015年被提出&#xff0c;其核心思想是引入了"殘差塊…

前端-ES6

let 和 const 為了解決var的作用域的問題&#xff0c;而且var 有變量提升&#xff0c;會出現全局污染的問題 let 塊狀作用域&#xff0c;并且不能重復聲明const 一般用于聲明常量&#xff0c;一旦被聲明無法修改&#xff0c;但是const 可以聲明一個對象&#xff0c;對象內部的…

工作時使用redis,kafka查閱的資料鏈接

不分先后 一 、redis查閱地址 一篇文章講清楚RedisRedis原理介紹一篇詳文帶你入門 Redis內存耗盡后Redis會發生什么Redis 深入了解鍵的過期時間redis持久化機制Redis延遲問題全面排障指南一文搞定Redis高級特性與性能調優Redis 在 Linux 系統的配置優化Redis 的延遲問題&…

SpringBoot-lombok

為什么要使用lombok? Lombok是一個通過注解以達到減少代碼的Java庫,如通過注解的方式減少getter,setter方法,構造方法等。通過注解的形式自動生成構造器、getter/setter、equals、hashcode、toString等方法&#xff0c;并可以自動化生成日志變量&#xff0c;簡化java開發、提高…