技术笔记:vue+pdfh5实现将pdf渲染到页面上

简介: 技术笔记:vue+pdfh5实现将pdf渲染到页面上

版本:pdfh5@1.4.7 vue2+.net Core 6.0webapi


首先安装依赖包:


?1npm install pdfh5 --save


简单使用


方法一:pdf文件在前端(直接通过pdfurl参数填写相对路径即可)


前端渲染


[/span>template

[/span>div id="demo"


[/span>script

import Pdfh5 from "pdfh5";


import "pdfh5/css/pdfh5.css";


export default {


data() {


return {


pdfh5: null,


};


},


mounted() {


this.pdfh5 = new Pdfh5("#demo", {


pdfurl: "/20220112_19_3.docx.pdf",


});


},


};



方式二:pdf文件在后端(常用)(需要后端获取文件二进制数组然后通过data参数填写返回的二进制数组)如果返回的是Base64编码则需要atob()转换为二进制字符串。


vue


[/span>template

[/span>div id="demo"


[/span>script

import Pdfh5 from "pdfh5";


import "pdfh5/css/pdfh5.css";


import { getPdf } from "@/api/student";


export default {


data() {


return {


pdfh5: null,


};


},


mounted() {


this.loadPdf();


},


methods: {


async loadPdf() {


let params = {


filePath: "Upload/Tables/SP_BPM_Report/2023/8/20220112_19_3.docx.pdf",


};


// 请求后端数据获取文件二进制数据


let response = await getPdf(params); // {"code":200,"byteArr":""}


if (!response) return;


this.pdfh5 = new Pdfh5("#demo", {


data: atob(response.byteArr), //如果PDF数据是BASE64编码的,请先使用atob()将其转换为二进制字符串。


});


},


},


};


.NET Core后端接口


using System.IO;


【HttpGet, Route("getpdf")】


public ActionResult getPdf(string filePath)


{


if (string.IsNullOrWhiteSpace(filePath)) return BadRequest("路径为空!");


string fullPath = Path.Combine(Path.GetFullPath("./wwwroot/"), filePath);


if (!File.Exists(fullPath)) return BadRequest("文件不存在!");


return Ok(new { byteArr = File.ReadAllBytes(fullPath), code=200 });


}


参数配置列表


this.pdfh5 = new Pdfh5("#demo", {


// 参数配置


pdfurl : './1.pdf',


responseType: 'blob',


...


});


参数名称类型取值作用


pdfurl


String


-


pdf地址


responseType


String


blob 、 arraybuffer 默认 blob


请求pdf数据格式


URIenable


Boolean


true、false, 默认false


true开启地址栏file参数


data


Array(arraybuffer)


-


pdf文件流 ,与pdfurl二选一(二进制PDF数据。使用类型化数组(Uint8Array)可以提高内存使用率。如果PDF数据是BASE64编码的,请先使用atob()将其转换为二进制字符串。)


renderType


String


"canvas"、"svg",默认"canvas"


pdf渲染模式


pageNum


Boolean


true、false, 默认true


是否显示左上角页码


backTop


Boolean


true、false, 默认true


是否显示右下角回到顶部按钮


maxZoom


Number


最大倍数3


手势缩放最大倍数


scale


Number


最大比例5,默认1.5


pdf渲染的比例


scrollEnable


Boolean


true、false, 默认true


是否允许pdf滚动


zoomEnable


Boolean


true、false, //代码效果参考:http://hnjlyzjd.com/xl/wz_24591.html

默认true

是否允许pdf手势缩放


cMapUrl


String


"


解析pdf时,特殊情况下显示完整字体的cmaps文件夹路径,例如 cMapUrl:"https://unpkg.com/pdfjs-dist@2.0.943/cmaps/"


limit


Number


默认0


限制pdf加载最大页数


logo


Object


{src:"pdfh5.png",x:10,y:10,width:40,height:40}src水印图片路径(建议使用png透明图片),width水印宽度,height水印高度,以每页pdf左上角为0点,x、y为偏移值。 默认false


给每页pdf添加水印logo(canvas模式下使用)


goto


Number


默认0


加载pdf跳转到第几页


textLayer


Boolean


true、false, 默认false


是否开启textLayer,可以复制文本(canvas模式下使用)【处于测试阶段,位置偏移严重】


background


Object


{color:"#fff",image:"url('pdfh5.png')",repeat:"no-repeat",position:"left top",size:"40px 40px"},和css的background属性语法相同,默认false


是否开启背景图模式


方法列表


this.pdfh5.scrollEnable(false);


this.pdfh5.show(() => {


console.log(1);


});


this.pdfh5.download("1.pdf", () => {


console.log("下载完成");


});


方法名传参传参取值作用


scrollEnable


Boolean


true、false, 默认true


是否允许pdf滚动(需要在pdf加载完成后使用)


zoomEnable


Boolean


true、false, 默认true


是否允许pdf手势缩放(需要在pdf加载完成后使用)


show


Function


带一个回调函数


pdfh5显示


hide


Function


带一个回调函数


pdfh5隐藏


reset


Function


带一个回调函数


pdfh5还原


destroy


//代码效果参考:http://hnjlyzjd.com/hw/wz_24581.html

Function

带一个回调函数


pdfh5销毁


on


(String, Function)


String:监听的事件名,Function:监听的事件回调


on方法监听所有事件


goto


Number


Number:要跳转的pdf页数


pdf跳转到第几页(pdf加载完成后使用)


download


(String, Function)


String:下载pdf的名称,默认download.pdf,Function:下载完成后的回调


下载pdf


on方法监听所有事件


this.pdfh5.on("scroll", function (scrollTop,currentNum) {


console.log("scrollTop:" + scrollTop);


console.log("currentNum:" + currentNum);


});


事件名回调作用


init


Function


监听pdfh5开始初始化


ready


Function


监听pdf准备开始渲染,此时可以拿到pdf总页数


error


Function(msg,time)


监听加载失败,msg信息,time耗时


success


Function(msg,time)


监听pdf渲染成功,msg信息,time耗时


complete


Function(status, msg, time)


监听pdf加载完成事件,加载失败、渲染成功都会触发。status有两种状态success和error


render


Function(currentNum, time, currentPageDom)


监听pdf渲染过程,currentPageDom当前加载的pdf的dom,currentNum当前加载的pdf页数,


zoom


Function(scale)


监听pdf缩放,scale缩放比例


scroll


Function(scrollTop,currentNum)


监听pdf滚动,scrollTop滚动条高度,currentNum当前页码


backTop


Function


监听回到顶部按钮的点击事件回调


zoomEnable


Function(flag)


监听允许缩放,flag:true,false


scrollEnable


Function(flag)


监听允许滚动,flag:true,false


show


Function


监听pdfh5显示


hide


Function


监听pdfh5隐藏


reset

相关文章
|
21小时前
|
JavaScript
Vue PDF预览(微信公众号,app也可用)
Vue PDF预览(微信公众号,app也可用)
6 0
|
4天前
|
移动开发 JavaScript 前端开发
必知的技术知识:JqueryMedia插件使用,解决在线预览及打开PDF文件
必知的技术知识:JqueryMedia插件使用,解决在线预览及打开PDF文件
|
2月前
|
Python
2024年最全用Python和PIL美化图像:文本覆盖技术实战,Python高级面试题pdf
2024年最全用Python和PIL美化图像:文本覆盖技术实战,Python高级面试题pdf
|
2月前
|
JSON JavaScript 前端开发
vue项目使用Print.js插件实现PDF文件打印
vue项目使用Print.js插件实现PDF文件打印
156 0
|
2月前
|
消息中间件 NoSQL Java
面试大揭秘!从技术面被“虐”到征服CTO,全凭这份强到离谱的pdf
程序员是最需要将终生学习贯彻到底的职业,一旦停止学习,离被淘汰,也就不远了。程序员工作都很忙,所以最好能在空闲的时候看看大厂的面试题,这些面试题的作用可能会超出你的想象,甚至能直接给你带来大厂的Offer。
|
2月前
|
Web App开发 JavaScript 前端开发
网页VUE纯前端在线预览编辑Office,支持doc/docx、xls/xlsx、ppt/pptx、pdf等格式
随着互联网技术的不断发展,越来越多的企业开始采用在线办公模式,微软Office Word 是最好用的文档编辑工具,然而doc、docx、xls、xlsx、ppt、pptx等格式的Office文档是无法直接在浏览器中直接打开的,如果可以实现Web在线预览编辑OffIce,肯定会还带来了更高效、便捷的办公体验,为我们的工作带来了更多可能性。
815 0
|
2月前
|
搜索推荐 定位技术 数据安全/隐私保护
方便、免费的PDF在线处理网站汇总:PDF合并、文字编辑、页面提取与删除、格式转换…
方便、免费的PDF在线处理网站汇总:PDF合并、文字编辑、页面提取与删除、格式转换…
|
2月前
|
XML Java Android开发
Android App开发手机阅读中PDF文件渲染器的讲解及使用(附源码 简单易懂)
Android App开发手机阅读中PDF文件渲染器的讲解及使用(附源码 简单易懂)
117 0
|
5天前
|
IDE Java 编译器
使用Java分割PDF文件
使用Java分割PDF文件
13 1
|
5天前
在线免费压缩pdf文件
在线免费压缩pdf文件
8 0