An open API service indexing awesome lists of open source software.

https://github.com/my729/intopdf-demo

HTML转PDF,效果演示
https://github.com/my729/intopdf-demo

html2canvas jspdf pdf vue

Last synced: 5 months ago
JSON representation

HTML转PDF,效果演示

Awesome Lists containing this project

README

          

# intopdf

> A Vue.js project

## Build Setup

``` bash
# install dependencies
npm install

# serve with hot reload at localhost:8080
npm run dev

# build for production with minification
npm run build

# build for production and view the bundle analyzer report
npm run build --report

# run unit tests
npm run unit

# run e2e tests
npm run e2e

# run all tests
npm test
```

For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).

##  使用到的插件
# html2canvas

功能:将网页截图 (HTML 转成图片)

原理:脚本遍历它加载的页面的DOM,它收集所有元素的信息,然后用它来构建页面的,Dom节点在Canvas里边画出来

因此,它只能正确地呈现它理解的属性,这意味着有许多CSS属性不起作用。有关支持的CSS属性的完整列表,请查看 支持的功能页面

浏览器兼容性:

Firefox 3.5+
Google Chrome
Opera 12+
IE9+
Edge
Safari 6+
限制:

不支持iframe
不支持跨域图片
不能在浏览器插件中使用
部分浏览器上不支持SVG图片
不支持Flash
如果你想确认是否支持某个浏览器,可以用它访问 http://deerface.sinaapp.com/ 试试 )

文档: https://html2canvas.hertzen.com/

# jsPDF
功能:jsPDF支持在静态网页中直接将html代码转为pdf文件

限制:
1. 打印出来PDF不会保留原有的样式
2. 不支持中文字符,虽然可以通过addhtml的方式来变相实现,但转出来的PDF文件中所有内容都是图片,分辨率并不高
3. 默认不支持分页;尽管提供了分页的选项,但分页效果真的很差。
浏览器兼容:

浏览器支持HTML5就可以 低版本的IE浏览器不支持

文档:http://rawgit.com/MrRio/jsPDF/master/docs/global.html#addHTML

# html2canvas和jsPDF 结合 实现 HTML转pdf

安装 html2canvas:n

npm install --save html2canvas

安装 jsPDF :

npm install jspdf --save

使用:
```vue


点击

{{ msg }}


Essential Links



import html2canvas from 'html2canvas'
import JsPDF from 'jspdf'

export default {
name: 'HelloWorld',
data () {
return {
msg: 'Welcome to Your Vue.js App'
}
},
methods: {
// 实现HTML转PDF的方法
save() {
html2canvas(document.body).then(canvas => {
document.body.appendChild(canvas)
let pageData = canvas.toDataURL('image/jpeg', 1.0)
// 方向默认竖直,尺寸ponits,格式a4[595.28,841.89]
let pdf = new JsPDF('', 'pt', 'a4')
// addImage后两个参数控制添加图片的尺寸,此处将页面高度按照a4纸宽高比列进行压缩
pdf.addImage(pageData, 'JPEG', 0, 0, 595.28, 592.28 / canvas.width * canvas.height)
pdf.save('stone.pdf')
})
}
}
}

h1, h2 {
font-weight: normal;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}

```