pdfkit
0、准备
需要引入两个包,首先要npm install pdfkit安装pdfkit包
const PDF = require('pdfkit');
const fs = require('fs');
通过下面方法创建pdf对象,如果没有传入任何的参数,默认自动创建第一页,页面大小为A4
doc = new PDF();
通过管道流创建名为test.pdf的文件
doc.pipe(fs.createWriteStream('test.pdf')); 
写入内容
doc.text('test')
结束写入,生成文件
doc.end()
1、页面和文本设置
首先要解决的问题就是页面的设置了,在这里我们要求的是16:9的页面比例,而并非默认的A4纸的页面。
- 创建对象,取消生成第一页 - doc = new PDF({ autoFirstPage: false });
- 添加页面,设置页面大小 - doc.addPage({ margin: 10, size: [960,540] });
- 设置中文字体,支持中文 - 此时,需要有一个本地中文文件,在 - C:\Windows\Fonts中可以找到,这里使用的是微软雅黑- doc.font('../WeiRuanYaHei-1.ttf');
- 在输入文本前,创建文件流 - doc.pipe(fs.createWriteStream('test.pdf'));
- 插入文本 - doc.text('Hello world!')
 doc.text('Hello world!', 100, 100) //设定文本位置,如果要上下移动,只需要使用您要移动的行数(默认为1)调用moveDownor moveUp方法。
 doc.lineGap(4);
 - 文本属性(同样的可以直接配置doc的属性作为全局属性) - lineBreak-设置为- false禁用所有换行
- width-文本应换行的宽度(默认情况下,页面宽度减去左右边距)
- height-文本应剪切到的最大高度
- ellipsis-太长时显示在文本末尾的字符。设置为- true使用默认字符。
- columns-文本流入的列数
- columnGap-每列之间的间距(默认为1/4英寸)
- indent-以PDF磅为单位(每英寸72英寸)的缩进量
- paragraphGap-文本各段之间的间距
- lineGap-每行文字之间的间距
- wordSpacing-文本中每个单词之间的间距
- characterSpacing-文本中每个字符之间的间距
- fill-是否填写文字(- true默认情况下)
- stroke-是否描边文本
- link-链接此文本的URL(创建注释的快捷方式)
- underline-是否在文字下划线
- strike-是否删除文字
- oblique-是否倾斜文字(角度或度数- true)
- baseline-文本相对于其插入点的垂直对齐方式(值为canvas textBaseline)
 - 可以连续对文本进行操作 - doc.fillColor('green')
 .text(lorem.slice(0, 500), {
 width: 465,
 continued: true
 }).fillColor('red')
 .text(lorem.slice(500));
 
 
2、插入图片和图形
doc.image('image/img.png', x, y, {width: 100, height: 100}) // 插入图片,并设置图片大小
doc.rect(100, 100, 90, 100).dash(3, {space: 3}).fillAndStroke("#11487B"); // 在(100, 100)处,画一个90*100的方形,并用#11487B颜色填充,设置边框为曲线,space为线条长度。
- image方法可以插入图片 
- rect可以画一个方形,可以使用dash使边框变为虚线,undash再变为实线。 
- fillAndStroke填充颜色,第二个参数为描边颜色 
const PDF = require('pdfkit');
const fs = require('fs');
const doc = new PDF({ autoFirstPage: false });//creating a new PDF object
doc.lineGap(4);
doc.addPage({ margin: 10, size: [960,540] });
doc.font('./WeiRuanYaHei-1.ttf');
doc.pipe(fs.createWriteStream('test.pdf'));  //creating a write stream
const x = 30
doc.rect(x, 85, 315, 145).dash(3, {space: 3}).strokeColor("#808080").stroke();
doc.image('./kit/banner.png', x+110, 110, { width: 90 });
doc.end()
上述代码生成结果:

pdfkit的更多相关文章
- 使用webdriver + phantomjs + pdfkit 生成PDF文件
		实例 #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on Dec 6, 2013 @author: Jay <smile665@gm ... 
- pdfkit安装使用
		centos 安装pdfkit1.先安装pdfkit依赖包 wkhtmltopdf 安装方式: # wget http://download.gna.org/wkhtmltopdf/0.12/0.12 ... 
- PDF之pdfkit
		说起pdf就想到了一款很适用的工具,那就是pdfkit,在前几天的项目中,有一个功能要实现,为了实现这一个功能,于是我大海茫茫中查询各种百科,不负众望的让我找到了我心怡的工具,想必也就是它了.好了废话 ... 
- python之使用 wkhtmltopdf 和 pdfkit 批量加载html生成pdf,适用于博客备份和官网文档打包
		0. 1.参考 Python 爬虫:把廖雪峰教程转换成 PDF 电子书 https://github.com/lzjun567/crawler_html2pdf wkhtmltopdf 就是一个非常好 ... 
- python pdfkit html转pdf响应式轮子 django例
		pip install pdfkit 本例用django做的请求,换成对应框架即可 此方法可将html页面转成pdf下载 #!/usr/bin/env python # coding:utf-8 im ... 
- Centos7+安装python3+wkhtmltoPdf+pdfkit
		前言 这几天要做一个将HTML转化为PDF的小功能.期间经历了颇多的挫折,刚开始是通过java做的,后来发现java库做这个事情实在是效果不理想,前端做好了样式转完之后会出现很多问题.后来我想起来py ... 
- 爬虫实战【3】Python-如何将html转化为pdf(PdfKit)
		前言 前面我们对博客园的文章进行了爬取,结果比较令人满意,可以一下子下载某个博主的所有文章了.但是,我们获取的只有文章中的文本内容,并且是没有排版的,看起来也比较费劲... 咋么办的?一个比较好的方法 ... 
- [Tools] Convert SVG to a PDF in Node with PDFKit and SVG.js
		Given a epxress application and an svg template, we want to draw some text, date onto it and convert ... 
- Python pdfkit
		序言 住在地下室的人,依然有仰望星空的权利. pdfkit python使用pdfkit中,如果使用pdfkit.fromurl 或者pdfkit.fromstring等,就会出现上述错误.而且如果你 ... 
- Python模块之pdfkit
		1.安装依赖 pip install python-docx #Python下的Microsoft Word 2007工具 pip install PyPDF2 #Python下的PDF工具 pip ... 
随机推荐
- 常用内置模块(四)——subprocess、re
			常用模块(四) 一.subprocess模块 1.subprocess为子流程模块,用于执行系统命令,该模块在Python全栈开发中不常用 2.常用方法 run 返回一个表示执行结果的对象 call ... 
- redis集群创建时报错:Sorry, can't connect to node
			1.redis集群创建时报错:Sorry, can't connect to node ip,端口等都配置正确的话,还需要将redis.conf文件中的密码注释掉 # requirepass 1 ... 
- Android Telephony分析(六) ---- 接口扩展(实践篇)
			本文将结合前面五篇文章所讲解的知识,综合起来,实现一个接口扩展的功能.如果还没有阅读过前面五篇文章的内容,请先阅读:<Android Telephony分析(一) — Phone详解 >& ... 
- Organizing Containers of Balls
			题目 David has several containers, each with a number of balls in it. He has just enough containers to ... 
- jquery插件小集合
			一.滑动轮播插件Swiper Swiper官网http://www.swiper.com.cn/, 这款插件移动端,pc端均试用 二.jquery-tmpl----让你从拼接字符串中解放出来 官方下载 ... 
- apache+tomcat配置负载均衡,实现http与websocket接口分压
			一.应用场景 在生产环境中,应用服务器(此文以tomcat为例)不免面临高访问量的压力,相比而言web服务器(此文以apache为例)能够承担更大的并发量.Apache本身带有一些模块,可以完成对应用 ... 
- Mybatis_环境搭建
			1.配置pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ... 
- Loop Sql
			-- Numeric FOR loop -- set serveroutput on -->> do not use in TOAD -- DECLARE k ; BEGIN .. LOO ... 
- 记一次Mysql占用内存过高的优化过程
			一.环境说明: 操作系统:CentOS 6.5 x86_64 数据库:Mysql 5.6.22 服务器:阿里云VPS,32G Mem,0 swap 二.问题情况: 1.某日发现公司线上系统的Mysql ... 
- winfrom设置webBrowser框架默认的IE内核版本
			要实现设置webBrowser框架默认的IE内核版本的功能需要三个方法 1:修改注册表信息来兼容当前程序 /// <summary> /// 修改注册表信息来兼容当前程序 /// /// ... 
