百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

如何使用 PDFKit 在 Node.js 中创建 PDF文件

yund56 2025-09-12 05:28 10 浏览

借助 PDFKit 的强大功能,只需使用几个简单的命令即可制作精美的 PDF 文档。


PDFKit 是一个 Node.js 库,可让开发人员轻松创建和使用 PDF 文件。 它提供了简单而有效的 API,用于生成 PDF 并向其中添加不同类型的内容,例如文本、图像和形状。

了解如何使用 PDF Kit 在 Node.js 中创建 PDF。

设置 PDFkit

您必须先在计算机上安装 Node.js 和 npm(Node.js 包管理器)。

通过运行以下终端命令确保您已安装这些工具:

node -v
npm -v

要开始在 Node.js 项目中使用 PDFKit,请运行以下 npm 命令安装:

npm install pdfkit

此命令将安装 PDFKit 并将其添加到项目的依赖项中。

使用 PDFKit 创建 PDF 文档

要使用 PDFKit 创建 PDF 文档,需要脚本文件中引入pdfkit 包和 fs(文件系统)模块:

const PDFDocument = require('pdfkit');
const fs = require('fs');

接下来,创建 PDFDocument 类的新实例。 这个类代表一个 PDF 文件:

const doc = new PDFDocument();

创建的实例是一个可读流,这意味着您可以使用 pipe() 方法将其内容保存到文件中。

为此,将 doc 实例通过管道传输到由 fs.createWriteStream 创建的可写流中:

doc.pipe(fs.createWriteStream('MyPDFDoc.pdf'));

createWriteStream 方法将 PDF 文件的内容保存到本地文件系统上的指定位置。

上面的代码块会将生成的 PDF 文件保存到您当前的工作目录,名称为 MyPDFDoc.pdf。

在向 PDF 添加内容后始终结束流很重要。 您可以使用以下命令执行此操作:

doc.end();

现在运行node.js命令 node [脚本名称] ,在当前工作目录中创建 PDF 文件 MyPDFDoc.pdf。

使用 PDFKit 添加文本

在通过管道保存它之前,您可以进行各种更改。 使用PDFKit向文档添加文本很简单,而且包含许多选项来自定义输出的显示。

要向文档添加文本,只需调用 text() 方法并将要添加的文本作为参数传递给这个函数:

doc.text("Coding is Easy!")

当 PDFKIT 向文档添加文本时,它会跟踪该文本的当前 X 和 Y 位置。 因此,无论何时调用 text 方法,PDFKit 都会在前一行下方添加一个新行。

但是,通过提供 X 和 Y 坐标,您可以更改其位置:

doc.text('Coding is Easy!', 100, 100)

要向上或向下移动一行,请使用文本应移动的行数调用 moveDown 或 moveUp 方法:

doc.moveDown(3);

doc.moveUp(); 

默认情况下,在不传递参数的情况下,调用方法都会导致它仅移动一行。

PDFKit 支持 PDF 格式定义的所有 14 种标准字体。 PDFKit 文本文档有这些标准字体的完整列表。

使用 font() 方法指定所需的字体。 只需将相应的字体名称作为字符串传入即可:

doc.font('Times-Roman')
   .text('Coding is Easy!');

您还可以分别使用 fontSize() 和 fillColor() 方法更改字体大小和文本颜色。

例如:

// 这会将文本颜色更改为红色并将其字体大小设置为 8
doc.fillColor('red')
   .fontSize(8)
   .text('Coding is Easy!');

使用 PDFKit 添加图像

要将图像添加到 PDF 文档,只需将其路径传递给文档实例上的image方法:

doc.image('path/to/image.jpeg')

PDFKit 允许您添加 JPEG 或 PNG 格式的图像。

默认情况下,PDFKit 将以其原始大小插入图像。 您可以通过提供包含键值对的对象作为 image() 方法的参数来更改图像的尺寸。 您可以指定宽度、高度以及水平和垂直对齐方式。

例如:

// 指定宽度
doc.image('path/to/image.jpg', { width: 300 });

// 指定宽度和高度
doc.image('path/to/image.jpg', { width: 300, height:200 })

使用 PDFKit 添加页面

要向 PDF 文档添加新页面,只需调用文档实例的 addPage 方法:

doc.addPage()

要在每次添加新页面时自动添加内容,请在文档实例上使用 pageAdded 事件。

例如:

doc.on('pageAdded', () => doc.text("Coding is Easy!"));

PDFKit 允许您在制作新文档或向现有文档添加新页面时指定页面尺寸。 PDFKit 纸张文档解释了几种预定义的页面大小。

要使用任何这些预定义的页面大小,请将对象传递给 PDFDocument 构造函数或 addPage() 方法。 使用 size 属性指定一个字符串,它是纸张尺寸的名称。

例如:

// 构造函数设置
const doc = new PDFDocument({ size: 'A5' });

// addPage 函数中设置
doc.addPage({ size: 'A7' });

将此选项对象传递给 PDFDocument 构造函数可设置整个文档的默认页面大小。 然后,您可以通过将不同的值传递给 addPage 方法来覆盖此默认值。

您可以在添加页面时通过将对象传递给 margins 属性来设置页边距。

margins 属性采用一个对象,该对象具有代表每个边距的 top、bottom、left 和 right 属性。

例如:

// 设置不同的边距
doc.addPage({
  margins: {
    top: 72,
    bottom: 72,
    left: 50,
    right: 50
  }
});

此代码将上下边距设置为 72 ,将左右边距设置为 50 。 请注意,PDFKit 创建的文档的默认边距是所有边上的 1 英寸(72 pt)边距。

要将所有上、下、左、右边距设置为相同的值,只需将一个具有 margin 属性的对象传递给 addPage 方法:

doc.addPage({ margin: 60 }) // 每个边设置边距为60

在 Node.js 中使用 PDFKit 创建 PDF 的优势

PDFKit 使您能够从 Node.js 应用程序生成标准和受支持的文档。 使用 PDFKit,您可以轻松处理复杂的文档。 此外,它可以促进向用户交付文档,并使它们更易于共享和打印。

相关推荐

SM小分队Girls on Top,女神战队少了f(x)?

这次由SM娱乐公司在冬季即将开演的smtown里,将公司的所有女团成员集结成了一个小分队project。第一位这是全面ACE的大姐成员权宝儿(BoA),出道二十年,在日本单人销量过千万,韩国国内200...

韩国女团 aespa 首场 VR 演唱会或暗示 Quest 3 将于 10 月推出

AmazeVR宣布将在十月份举办一场现场VR音乐会,观众将佩戴MetaQuest3进行体验。韩国女团aespa于2020年11月出道,此后在日本推出了三张金唱片,在韩国推出了...

韩网热议!女团aespa成员Giselle在长腿爱豆中真的是legend

身高163的Giselle,长腿傲人,身材比例绝了...

假唱而被骂爆的女团:IVE、NewJeans、aespa上榜

在韩国,其实K-pop偶像并不被认为是真正的歌手,因为偶像们必须兼备舞蹈能力、也经常透过对嘴来完成舞台。由于科技的日渐发达,也有许多网友会利用消音软体来验证K-pop偶像到底有没有开麦唱歌,导致假唱这...

新女团Aespa登时尚大片 四个少女四种style

来源:环球网

韩国女团aespa新歌MV曝光 画面梦幻造型超美

12月20日,韩国女团aespa翻唱曲《DreamsComeTrue》MV公开,视频中,她们的造型超美!WINTER背后长出一双梦幻般的翅膀。柳智敏笑容甜美。宁艺卓皮肤白皙。GISELLE五官精致...

女网友向拳头维权,自称是萨勒芬妮的原型?某韩国女团抄袭KDA

女英雄萨勒芬妮(Seraphine)是拳头在2020年推出的第五位新英雄,在还没有正式上线时就备受lsp玩家的关注,因为她实在是太可爱了。和其他新英雄不同的是,萨勒芬妮在没上线时就被拳头当成虚拟偶像来...

人气TOP女团是?INS粉丝数见分晓;TWICE成员为何在演唱会落泪?

现在的人气TOP女团是?INS粉丝数见分晓!现在爱豆和粉丝之间的交流方法变得多种多样,但是Instagram依然是主要的交流手段。很多粉丝根据粉丝数评价偶像的人气,拥有数百、数千万粉丝的组合作为全球偶...

韩国女团MVaespa Drama MV_韩国女团穿超短裙子跳舞

WelcometoDrama.Pleasefollow4ruleswhilewatchingtheDrama.·1)Lookbackimmediatelywhenyoufe...

aespa师妹团今年将出道! SM职员亲口曝「新女团风格、人数」

记者刘宛欣/综合报导南韩造星工厂SM娱乐曾打造出东方神起、SUPERJUNIOR、少女时代、SHINee、EXO等传奇团体,近年推出的aespa、RIIZE更是双双成为新生代一线团体,深受大众与粉丝...

南韩最活跃的女团aespa,新专辑《Girls》即将发布,盘点昔日经典

女团aespa歌曲盘点,新专辑《Girls》即将发布,期待大火。明天也就是2022年的7月8号,aespa新专辑《Girls》即将发行。这是继首张专辑《Savage》之后,时隔19个月的第二张专辑,这...

章泽天女团aespa出席戛纳晚宴 宋康昊携新片亮相

搜狐娱乐讯(山今/文玄反影/图科明/视频)法国时间5月23日晚,女团aespa、宋康昊、章泽天等明星亮相戛纳晚宴。章泽天身姿优越。章泽天肩颈线优越。章泽天双臂纤细。章泽天仪态端正。女团aespa亮...

Aespa舞台暴露身高比例,宁艺卓脸大,柳智敏有“TOP”相

作为SM公司最新女团aespa,初舞台《BlackMamba》公开,在初舞台里,看得出来SM公司是下了大功夫的,虽然之前SM公司新出的女团都有很长的先导片,但是aespa显然是有“特殊待遇”。运用了...

AESPA女团成员柳智敏karina大美女

真队内速度最快最火达成队内首个且唯一两百万点赞五代男女团中输断层第一(图转自微博)...

对来学校演出的女团成员语言性骚扰?韩国这所男高的学生恶心透了

哕了……本月4日,景福男子高中相关人士称已经找到了在SNS中上传对aespa成员进行性骚扰文章的学生,并开始着手调查。2日,SM娱乐创始人李秀满的母校——景福高中迎来了建校101周年庆典活动。当天,S...