前端PDF文件转图片方法
第一步:先下载pdfjs,网址:PDF下载地址,再引入到项目中,我是标签直接引用的
<script src="pdfjs/build/pdf.js"></script>
<script src="pdfjs/build/pdf.worker.js"></script>
第二步:html代码添加两行代码,一个是canvas用来绘图,一个是img用来最后展示转换后的pdf图片
<body>
<img :src="imgUrl" alt="" width="100%" height="auto">
<canvas id="the-canvas" style="display: none"></canvas>
</body>
第三步:js代码块,主要是将paf通过pdfjs插件绘制到canvas,然后再转换为base64格式的图片
//url参数是pdf地址,imgUrl是最后的base64格式图片
showPdf(url) {
let _this = this;
let imgArr = [];
pdfjsLib.workerSrc = 'pdf.worker.js';
let loadingTask = pdfjsLib.getDocument(url);
loadingTask.promise.then(function(pdf) {
console.log('PDF loaded');
let pageNum = pdf.numPages;
// console.log(pageNum);
for (let i=1; i<=pageNum; i++) {
pdf.getPage(i).then(function(page) {
console.log('Page loaded'); let scale = 1;
let viewport = page.getViewport(scale); // let canvas = document.getElementById('the-canvas');
let canvas = document.createElement("canvas");
let context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width; let renderContext = {
canvasContext: context,
viewport: viewport
};
let renderTask = page.render(renderContext);
renderTask.then(function () {
console.log('Page rendered');
let imgUrl = canvas.toDataURL('image/jpeg'); //转换为base64
if (imgUrl) {
imgArr[i-1] = imgUrl;
}
//pdf全部画完结束后操作
if (imgArr.length==pageNum&&!isEmpty(imgArr)) {
// let canvas2 = document.createElement("canvas");
let canvas2 = document.getElementById('the-canvas');
let context2 = canvas2.getContext('2d');
canvas2.height = viewport.height*pageNum;
canvas2.width = viewport.width;
let count = 0;
for (let j=0; j<imgArr.length; j++) {
let IMG = new Image();
IMG.src=imgArr[j];
IMG.width = viewport.width;
IMG.height = viewport.height;
IMG.onload = function () {
context2.drawImage(IMG,0,viewport.height*j);
count++;//确保所有img渲染结束后操作
if (count==pageNum) {
let canvas = document.getElementById('the-canvas');
//赋值给img
_this.imgUrl = canvas.toDataURL('image/jpeg');
}
}
}
}
});
});
}
}, function (reason) {
console.error(reason);
}); function isEmpty(arr) {
for(let i=0;i<arr.length;i++) {
if(!arr[i])
return true;
}
return false;
}
}
前端PDF文件转图片方法的更多相关文章
- 深入学习python解析并读取PDF文件内容的方法
这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...
- 【使用Itext处理PDF文档(新建PDF文件、修改PDF文件、PDF中插入图片、将PDF文件转换为图片)】
iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...
- 深入学习Python解析并解密PDF文件内容的方法
前面学习了解析PDF文档,并写入文档的知识,那篇文章的名字为深入学习Python解析并读取PDF文件内容的方法. 链接如下:https://www.cnblogs.com/wj-1314/p/9429 ...
- JavaWeb项目生成PDF文件添加水印图片并导出
一.前言 首先需要在Maven中添加相应的jar包依赖,若项目没用到Maven,也可自行下载相应所需的jar包(itextpdf.jar 与 itext-asian.jar),如下图所示.点此下载 M ...
- C#如何在PDF文件添加图片印章
文档中添加印章可以起一定的作用,比如,防止文件随意被使用,或者确保文档内容的安全性和权威性.C#添加图片印章其实也有很多实现方法,这里我使用的是免费的第三方软件Free Spire.PDF,向大家阐述 ...
- Java给图片和PDF文件添加水印(图片水印和文字水印)
有时候我们看到的图片或者PDF文件会自动加上水印.分为文字水印和图片水印. ----------------------------图片水印---------------------------- 1 ...
- 使用Python爬取微信公众号文章并保存为PDF文件(解决图片不显示的问题)
前言 第一次写博客,主要内容是爬取微信公众号的文章,将文章以PDF格式保存在本地. 爬取微信公众号文章(使用wechatsogou) 1.安装 pip install wechatsogou --up ...
- C# PDF文件转图片
参考:https://blog.csdn.net/lai124793549/article/details/53392281 https://www.cnblogs.com/xiewei123/p/1 ...
- 用 ghostscript 转化PDF文件为图片 的参数设置
example: gswin32 -dSAFER -dBATCH -dNOPAUSE -r300 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sDEVICE=jp ...
随机推荐
- pytorch固定BN层参数
背景:基于PyTorch的模型,想固定主分支参数,只训练子分支,结果发现在不同epoch相同的测试数据经过主分支输出的结果不同. 原因:未固定主分支BN层中的running_mean和running_ ...
- HCIP----静态实验
要求: 1.全网可达 2.拓扑中所需地址全部基于192.168.0.0/24划分所得 3.使用静态路由 4.R1有三个环回,需要汇总 5.PC1与PC3属于同一VLAN,PC2和PC4属于同一VLAN ...
- C# Json对象数组复杂JObject 序列化
tatic void Main(string[] args) { //先反序列化看看 string json = "{\"name\": true,\"age\ ...
- IIS放置的APP安装包在浏览器无法打开
无法打开的提示 操作步骤 1.将APP安装包放置到指定的文件夹中. 2.在IIS中MIME中添加MIME类型 扩展名:.apk MIME类型:application/vnd.android.pac ...
- 手摸手带你学CSS
好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star HTML常用标签总结 前言 在大一的时候,上过网页设计的课 ...
- SpringBoot默认首页配置
@Configuration public class DefaultView extends WebMvcConfigurerAdapter { @Override public void addV ...
- 入门oj 6451: The XOR Largest Pair之二
Description 今天小W用了1s不到的时候完成了这样一个题:在给定的N个整数 A_1,A_2,-,A_N中选出两个进行异或运算,得到的结果最大是多少?正当他志得意满时,L老师亮出了另一个题:给 ...
- LInux之Shell工具:Cut、Sed、Awk、Sort
一. cut cut的工作就是"剪",具体的说就是在文件中负责剪切数据用的.cut 命令从文件的每一行剪切字节.字符和字段并将这些字节.字符和字段输出. 1.基本用法 cut [选 ...
- idea配置scala编写spark wordcount程序
1.创建scala maven项目 选择骨架的时候为org.scala-tools.archetypes:scala-aechetype-simple 1.2 2.导入包,进入spark官网Docum ...
- hdp、cdh版本大数据maven仓库
Hdp版本: <repositories> <repository> <id>nexus</id> <name>local private ...