技术笔记: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

相关文章
|
5月前
|
开发框架 前端开发 JavaScript
在Vue&Element前端项目中,使用FastReport + pdf.js生成并展示自定义报表
在Vue&Element前端项目中,使用FastReport + pdf.js生成并展示自定义报表
|
3月前
|
Python
Python办公自动化:删除任意页数pdf页面
Python办公自动化:删除任意页数pdf页面
97 1
Python办公自动化:删除任意页数pdf页面
|
3月前
|
机器学习/深度学习 算法
概率分布深度解析:PMF、PDF和CDF的技术指南
本文将深入探讨概率分布,详细阐述概率质量函数(PMF)、概率密度函数(PDF)和累积分布函数(CDF)这些核心概念,并通过实际示例进行说明。
240 15
概率分布深度解析:PMF、PDF和CDF的技术指南
|
2月前
|
索引 Python
PDF文件页面提取操作小指南
PDF文件页面提取操作小指南
|
2月前
|
Python
Python对PDF文件页面的旋转和切割
Python对PDF文件页面的旋转和切割
|
2月前
|
Python
EasyGUI+PyDF2应用小示例—PDF页面提取应用程序
EasyGUI+PyDF2应用小示例—PDF页面提取应用程序
|
2月前
|
JavaScript 前端开发 容器
Vue生成PDF文件攻略:html2canvas与jspdf联手,中文乱码与自动换行难题攻克
Vue生成PDF文件攻略:html2canvas与jspdf联手,中文乱码与自动换行难题攻克
128 0
|
3月前
|
JavaScript
vue导出pdf(接口)
vue导出pdf(接口)
25 3
|
4月前
|
移动开发 资源调度 JavaScript
Vue移动端网页(H5)预览pdf文件(pdfh5和vue-pdf)
这篇文章介绍了在Vue移动端网页中使用`pdfh5`和`vue-pdf`两个插件来实现PDF文件的预览,包括滚动查看、缩放、添加水印、分页加载、跳转指定页数等功能。
3067 0
Vue移动端网页(H5)预览pdf文件(pdfh5和vue-pdf)
|
4月前
|
JavaScript 前端开发
vue导出pdf(大数量可能有问题)
vue导出pdf(大数量可能有问题)
186 2