巧妙的运用了html2canvas的截图效果,然后把图片转化为pdf文件
html2canvas(document.querySelector('#boardPdf'), {
scale: 2,
dpi: window.devicePixelRatio * 2,
useCORS: true,
onrendered: function (canvas) {
var contentWidth = canvas.width
var contentHeight = canvas.height
var pageHeight = contentWidth / 592.28 * 841.89
var leftHeight = contentHeight
var position = 0
var imgWidth = 595.28
var imgHeight = 592.28 / contentWidth * contentHeight
var pageData = canvas.toDataURL('image/jpeg', 1.0)
var pdf = new jsPDF('', 'pt', 'a4')
if (leftHeight < pageHeight) {
pdf.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight)
} else {
while (leftHeight > 0) {
pdf.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)
leftHeight -= pageHeight
position -= 841.89
if (leftHeight > 0) {
pdf.addPage()
$('#pdf').attr('src', pdf.output('datauristring'))
background: '#fff'
欢迎点击: 个人官网博客基础效果图:demo源码使用html2canvas自动分页效果图:demo源码一、基础:1.先引入几个文件<script src="http://www.jq22.com/jquery/1.8.3/jquery.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/html2canvas/0.5.0-beta4/html2canvas.min.js"&g
简单强大之处,根据前端HTML只需window.print()浏览器调用直接输出,解决了后端输出图片必须绝对链接的问题
只要你懂一点前端,就能轻松实现,对比目前后端输出PDF的功能非常复杂和维护成本极高
Demo实现功能
功能 支持 页头 是 页脚 是 页码 是 图片是 超链接 是 自定义文件名 是
每页水印 是(可实现,demo未提供)
————————————————
版权声明:本文为CSDN博主「帅气小鱼囝」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011487477/article/details/106908739
jspdf.js和demo,jspdf.js,jspdf.min.js,pdf.js可以实现在html下直接浏览pdf文档,是一款开源的pdf文档读取解析插件。
pdf.js主要包含两个库文件,一个pdf.js和一个pdf.worker.js,一个负责API解析,一个负责核心解析。
基于html2canvas jspdf导出更加清晰的图片以及pdf
document.getElementById("btn").onclick = function() {
let cont=document.getElementById('postersbg');
html2canvas(cont, {
onrendered: function(canvas) {
//通过html2canvas将html渲染成canvas,然后获取图片数据
let imgData = canvas.toDataURL('image/jpeg',
JSPDF.JS引入中文字库引入jspdf.js写个简单的例子添加中文字库(ttf转js)直接引入ttf文件(未完成)
引入jspdf.js
github地址:https://github.com/MrRio/jsPDF
引入在线的库
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.debug.js...
介绍一下
纯jspdf用法,将一个图片列表
导出为
pdf文件,根据图片宽高计算在
pdf中的位置
jsPDF 是一个基于
HTML5的客户端解决方案,用于生成各种用途的
PDF 文档。
官网地址:https://rawgit.com/MrRio/
jsPDF/master/docs/
1、安装:npm install
jspdf
2、引入:import
jsPDF from "
jspdf"
3、使用:
let
pdf = new
jsPDF('p', 'pt', [
pdfX,
pdfY]);
vue.js+jspdf.js+html2pdf.js 实现页面导出PDF
原本是导出word但客户考虑到问到的安全性要求改成了PDF,由于之前的word导出也是有前端生成的,所以为了不增加工作量导出依旧有前端完成。起初在网上找了很多方法都无法实现,都想放弃了让后端写,后来看到了关于jspdf.js+html2canvas.js的文章,想着试试看吧。对于前端导出PDF我就是个小白,啥也不会。按着文章一步步写吧。
安装插件html2canvas和jspdf
npm install html2canvas--s
output在新的窗口显示在本页面插入文件名称设置
使用jspdf生成的pdf文档,网上一般都是如何下载到本地中,使用save()方法,但是现在并不想下载,而是直接显示在页面中。
output
查找了官方文档,发现可以使用output方法:
output(type, options) → {string|window|ArrayBuffer|Blob|jsPDF|null|undefined}
源码: jspdf.js, line 3010
生成PDF文档。
若类型参数未定义,则输出是以字符串作为.
最近在项目中,有一个
导出pdf功能,需要
纯前端来实现,调研了多种
pdf导出方式,最终决定使用
html2canvas+
jsPDF来实现需求。
本文就简单介绍一下
html2canvas+
jsPDF导出pdf的实现,网上大部分实现
导出pdf都是以
分页为主的,本文还将附上不
分页导出pdf的实现方法。(只附
js代码)
html2canvas+
jsPDF导出pdf原理:通过
html2canvas将遍历页面元素,并渲染生成canvas,然后将canvas图片格式添加到
jsPDF实例,生成
pdf。
function exportCode(code) {
var blob = new Blob([code], {type: 'text/plain'});
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = 'code.
js';
link.click();
该函数接收一个字符串作为代码,然后使用 Blob 创建一个二进制对象,该对象表示文本文件。接下来,使用 createObjectURL() 创建一个 URL,该 URL 指向 Blob 对象。最后,使用超链接元素并设置它的属性下载文件。