搜索引擎优化pdf(PDFKit搜索安装使用创建PDFKit文档非常简单的实例是可读的节点流 )
优采云 发布时间: 2022-01-23 22:02搜索引擎优化pdf(PDFKit搜索安装使用创建PDFKit文档非常简单的实例是可读的节点流
)
介绍
PDFKit 是一个用于 Node 和浏览器的 PDF 文档生成库,可以轻松创建复杂的多页可打印文档。API 收录可链接性,包括低级功能以及高级功能的抽象。PDFKit API 的设计很简单,因此生成复杂的文档通常只需几个函数调用即可。最直接的好处就是节省了服务端资源,让生成工作在本地完成!
如何得到它?
最近因为限制很多,不方便直接放链接,截图也不够用。可以直接在 Github 上搜索
安装和使用
npm install pdfkit
创建 PDFKit 文档非常简单。只需引用 pdfkit 的 JavaScript 源文件中的模块并创建 PDFDocument 类的实例
const PDFDocument = require('pdfkit');
const doc = new PDFDocument;
PDFDocument 实例是可读的节点流。它们不会自动保存在任何地方,但您可以调用 pipe 方法将 PDF 文档的输出发送到正在写入的另一个可写节点流。完成文档后,调用 end 方法完成它。以下是如何通过管道传输文件或 HTTP 响应的示例。
doc.pipe(fs.createWriteStream('/path/to/file.pdf')); // 写pdf
doc.pipe(res); // HTTP响应
// 添加内容
doc.end();
在浏览器中使用 PDFKit 与在 Node 中使用它完全相同,除非您要将输出通过管道传输到浏览器支持的目标,例如 Blob。Blob 可用于生成 URL,以允许生成的 PDF 通过 iframe 直接显示在浏览器中,或者它们可用于将 PDF 上传到服务器,或在用户的浏览器中触发下载。
// 引入依赖
const PDFDocument = require('pdfkit');
const blobStream = require('blob-stream');
// 同样的创建方式
const doc = new PDFDocument;
//传输文档到Blob
const stream = doc.pipe(blobStream());
//像以往一样将内容添加到文档
// 最终得到Blob
doc.end();
stream.on('finish', function() {
// 得到一个可以随心所欲的Blob
const blob = stream.toBlob('application/pdf');
//或获取blob URL以在浏览器中显示
const url = stream.toBlobURL('application/pdf');
iframe.src = url;
});
在这个地方,除非你设置了autoFirstPage: false,否则PDFkit会自动给你添加第一页,后面的页面需要你自己添加
doc.addPage()
//事件*敏*感*词*
doc.on('pageAdded', () => doc.text("Page Title"));
您还可以为页面设置一些选项,例如其大小和方向以及边距等。
// 所有页面添加50边距
doc.addPage({
margin: 50});
// 在每一侧添加不同的边距
doc.addPage({
margins: {
top: 50,
bottom: 50,
left: 72,
right: 72
}
});
bufferPages: true// 配置
//调用
doc.switchToPage(pageNumber)
<p>// 创建一个文档,bufferPages设置为true
let i;
let end;
const doc = new PDFDocument({
bufferPages: true});
// 添加一些内容
doc.addPage();
// ...
doc.addPage();
//查看缓冲页面的范围
const range = doc.bufferedPageRange(); // => { start: 0, count: 2 }
for (i = range.start, end = range.start + range.count, range.start