PDFKit基于Node.js的PDF工具包

联合创作 · 2023-09-23 19:05

PDFKit 是一个用于Node和浏览器的PDF文档生成库,可以轻松创建复杂的多页面可打印文档。 API包含可链接性,包括低级功能以及更高级功能的抽象。 PDFKit API设计简单,因此生成复杂文档通常与一些函数调用一样简单。


主要特性:



  • Vector graphics

    • HTML5 canvas-like API

    • Path operations

    • SVG path parser for easy path creation

    • Transformations

    • Linear and radial gradients


  • Text

    • Line wrapping

    • Text alignments

    • Bulleted lists


  • Font embedding

    • Supports TrueType (.ttf), OpenType (.otf), WOFF, WOFF2, TrueType Collections (.ttc), and Datafork TrueType (.dfont) fonts

    • Font subsetting

    • See fontkit for more details on advanced glyph layout support.


  • Image embedding

    • Supports JPEG and PNG files (including indexed PNGs, and PNGs with transparency)


  • Annotations

    • Links

    • Notes

    • Highlights

    • Underlines

    • etc.


  • Outlines

  • PDF security

    • Encryption

    • Access privileges (printing, copying, modifying, annotating, form filling, content accessibility, document assembly)



安装:npm install pdfkit


示例代码:



const PDFDocument = require('pdfkit');

// Create a document
const doc = new PDFDocument;

// Pipe its output somewhere, like to a file or HTTP response
// See below for browser usage
doc.pipe(fs.createWriteStream('output.pdf'));

// Embed a font, set the font size, and render some text
doc.font('fonts/PalatinoBold.ttf')
.fontSize(25)
.text('Some text with an embedded font!', 100, 100);

// Add an image, constrain it to a given size, and center it vertically and horizontally
doc.image('path/to/image.png', {
fit: [250, 300],
align: 'center',
valign: 'center'
});

// Add another page
doc.addPage()
.fontSize(25)
.text('Here is some vector graphics...', 100, 100);

// Draw a triangle
doc.save()
.moveTo(100, 150)
.lineTo(100, 250)
.lineTo(200, 250)
.fill("#FF3300");

// Apply some transforms and render an SVG path with the 'even-odd' fill rule
doc.scale(0.6)
.translate(470, -380)
.path('M 250,75 L 323,301 131,161 369,161 177,301 z')
.fill('red', 'even-odd')
.restore();

// Add some text with annotations
doc.addPage()
.fillColor("blue")
.text('Here is a link!', 100, 100)
.underline(100, 100, 160, 27, {color: "#0000FF"})
.link(100, 100, 160, 27, 'http://google.com/');

// Finalize PDF file
doc.end();

 

浏览 48
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报