pdfh5 pdf

踩坑1: 渲染失败

(1)在vue项目中,读取本地的pdf文件需要放到public下static文件夹中,不能放在别的地方;

(2)引用时,不能使用相对路径,因为使用public文件下面的资源,是不会被webpack处理的,它们会被直接复制到最终的打包目录下面,且必须使用绝对路径来引用这些文件。写法:“/static/pdf/show.pdf",/即表示public文件夹(需略去public);

文档:

https://www.npmjs.com/package/pdfh5

安装:

npm install pdfh5 --legacy-peer-deps
npm install --save canvas --legacy-peer-deps
<script setup>
import { ref } from 'vue'
import Pdfh5 from 'pdfh5'
import 'pdfh5/css/pdfh5.css'// pdfh5实例
const pdfh5 = ref(null)// pdf预览
const handlePreview = () => {pdfh5.value = new Pdfh5('#demo', {pdfurl: '/static/1.pdf',  // 读取本地的pdf文件需要放到public下static文件夹中})
}const beforeRead = (file) => {if (file.type == 'application/pdf') {// 使用类型化数组(Uint8Array)可以提高内存使用率。let reader = new FileReader()reader.readAsArrayBuffer(file)reader.onload = (loadEvent) => {let arrayBuffer = loadEvent.target.resultpdfh5.value = new Pdfh5('#demo', {data: arrayBuffer,})}}return true
}const afterRead = (file) => {// file.content是BASE64// PDF数据是BASE64编码的,请先使用atob()将其转换为二进制字符串// const data = atob(file.content.replace('data:application/pdf;base64,', '')) // 去除BASE64编码的头// pdfh5.value = new Pdfh5('#demo', {//   data// })
}
</script><template><div class="home-page"><header class="header"><van-button type="default" @click="handlePreview" style="margin-right: 8px;">通过pdfurl预览</van-button><van-uploader accept=".pdf" :before-read="beforeRead" :after-read="afterRead"><van-button icon="plus" type="primary">通过pdf文件流预览</van-button></van-uploader></header><main class="main"><div id="demo"></div></main></div>
</template><style>
.home-page {width: 100%;height: 100%;.header {height: 50px;display: flex;align-items: center;}.main {height: calc(100% - 50px);}#demo {width: 100%;height: 100%;}
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/73756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6.5 模拟专题:LeetCode 38. 外观数列

1. 题目链接 LeetCode 38. 外观数列 2. 题目描述 给定一个正整数 n&#xff0c;生成外观数列的第 n 项。外观数列的定义如下&#xff1a; 第 1 项为 "1"。第 n 项是对第 n-1 项的描述。例如&#xff0c;第 2 项描述第 1 项&#xff08;"1"&#xff09;为…

什么是具身智能

具身智能&#xff08;Embodied Intelligence&#xff09;是人工智能与机器人学交叉的前沿领域&#xff0c;强调智能体通过身体与环境的动态交互实现自主学习和进化&#xff0c;其核心在于将感知、行动与认知深度融合‌。通俗地讲&#xff0c;就是机器人或者智能系统在物理环境中…

git命令使用小记(打补丁)

需求&#xff1a;需要从开发分支提取本人提交代码&#xff0c;然后合并到主分支 一、制作补丁包 mkdir -p patches for commit in $(git log commitA..commitB --author"username" --reverse --prettyformat:"%h"); do …

mapbox基础,加载popup弹出窗

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️popup 弹出窗 api1.3.1 ☘️构造函数1.…

C++11--(1)

目录 1.列表初始化 {}初始化 C98中 C11中 内置置类型和自定义类型 创建对象也适用 std::initializer_list 2.变量类型推导 auto C98 C11 decltype nullptr 3.范围for循环 4.STL中一些变化 array 1.创建和初始化 2.访问元素 ​编辑 3.修改操作 4.支持迭代器…

Promise的状态和方法是什么?

Promise 的状态和方法 1. Promise 的状态 一个 Promise 可以处于以下三种状态之一&#xff1a; - Pending&#xff08;待定&#xff09;&#xff1a;初始状态&#xff0c;表示异步操作正在进行中&#xff0c;Promise 还没有被解决或拒绝。 - Fulfilled&#xff08;已完成&…

Windows云服务器支持哪些数据库管理系统?

Windows云服务器因其良好的兼容性和企业级支持&#xff0c;广泛用于网站托管、企业管理系统、金融应用、数据分析等场景。在这些应用中&#xff0c;数据库管理系统(DBMS)起着至关重要的作用。Windows 服务器支持多种数据库&#xff0c;包括关系型数据库(SQL)和非关系型数据库(N…

MongoDB 实际工作中应用场景

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

03 相机标定图像采集

学完本文,您将获取一下技能: 1:如何提升标定质量,如选择标定板,标定图像采集的注意事项, 2:实现标定图像自动筛选的代码 3:量产场景如何通过一张图像来标定相机 为了实现良好的标定效果,以下因素在标定数据采集前必须设置得当。 标定板选择 标定板尺寸准确材料平…

GitHub美化个人主页3D图表显示配置操作

这个功能主要是用的这个开源仓库&#xff1a;https://github.com/yoshi389111/github-profile-3d-contrib 想看效果的话&#xff0c;我的个人主页&#xff1a;https://github.com/Sjj1024 开始操作 1.创建自己的github主页属性项目——跟你github用户名一致即可&#xff0c;…

buu-jarvisoj_fm-好久不见52

格式化字符串漏洞题 x等于4x等于4​​​​​​​x等于4​​​​​​​x等于4 可以知道是第11个参数&#xff0c;%11$ 定位到这个位置&#xff0c;然后%n往这个位置写入4 1.先用pwndbg调试得到偏移量 2.查看获取x的地址 3.构造ROP链&#xff0c;发送连接 from pwn import *# …

AwesomeQt分享3(含源码)

AwesomeQt 这个项目包含了多个Qt组件的使用示例&#xff0c;旨在展示Qt各种强大功能的实现方式。 源码分享 github: awesome_Qtgitee: 后续同步 项目进度 QCustomPlot曲线控件示例 支持排序和筛选的列表控件示例 支持排序和筛选的表格控件示例 属性表示例 Dock窗口示例 自绘…

ubuntu 安装 g++

文章目录 前提一、安装 g1.1 安装1.2 验证 前提 安装 tflite_support 报错 error: subprocess-exited-with-error RuntimeError: Unsupported compiler -- at least C11 support is needed!一、安装 g 1.1 安装 # 安装编译工具链&#xff08;如g&#xff09;和依赖库 sudo …

【NLP 50、损失函数 KL散度】

目录 一、定义与公式 1.核心定义 2.数学公式 3.KL散度与交叉熵的关系 二、使用场景 1.生成模型与变分推断 2.知识蒸馏 3.模型评估与优化 4.信息论与编码优化 三、原理与特性 1.信息论视角 ​2.优化目标 3.​局限性 四、代码示例 代码运行流程 核心代码解析 抵达梦想靠的不是狂热…

使用QT画带有透明效果的图

分辨率&#xff1a;24X24 最大圆 代码: #include <QApplication> #include <QImage> #include <QPainter>int main(int argc, char *argv[]) {QImage image(QSize(24,24),QImage::Format_ARGB32);image.fill(QColor(0,0,0,0));QPainter paint(&image);…

【Unity网络编程知识】使用Socket实现简单TCP通讯

1、Socket的常用属性和方法 创建Socket TCP流套接字 Socket socketTcp new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 1.1 常用属性 1&#xff09;套接字的连接状态 socketTcp.Connected 2&#xff09;获取套接字的类型 socketTcp.So…

青少年编程与数学 02-013 初中数学知识点 02课题、概要

青少年编程与数学 02-013 初中数学知识点 02课题、概要 一、数与代数二、图形与几何三、统计与概率四、综合与实践五、课程理念与目标 根据2022年版义务教育数学课程标准&#xff0c;初中数学知识点可以总结为以下四大领域。 一、数与代数 数与式 有理数与实数&#xff1a;理解…

深入探索 libarchive

深入探索 libarchive&#xff1a;跨平台归档处理的终极解决方案 一、背景与历史沿革 1.1 归档处理的演进之路 从1979年tar格式的诞生到现代云存储时代&#xff0c;归档技术经历了四个关键阶段&#xff1a; Unix时代&#xff1a;tar/cpio主导系统备份互联网黎明期&#xff1…

2025最新“科研创新与智能化转型“暨AI智能体开发与大语言模型的本地化部署、优化技术实践

第一章、智能体(Agent)入门 1、智能体&#xff08;Agent&#xff09;概述&#xff08;什么是智能体&#xff1f;智能体的类型和应用场景、典型的智能体应用&#xff0c;如&#xff1a;Google Data Science Agent等&#xff09; 2、智能体&#xff08;Agent&#xff09;与大语…

Yolo_v8的安装测试

前言 如何安装Python版本的Yolo&#xff0c;有一段时间不用了&#xff0c;Yolo的版本也在不断地发展&#xff0c;所以重新安装了运行了一下&#xff0c;记录了下来&#xff0c;供参考。 一、搭建环境 1.1、创建Pycharm工程 首先创建好一个空白的工程&#xff0c;如下图&…