Skip to content

参考

pdf-lib 常用 API、绘制选项、表单方法、字体与颜色辅助函数速查。版本基线 1.17.1。坐标系:原点左下、y 向上、单位 point(72pt = 1 英寸)。

一、PDFDocument 静态方法

方法作用备注
PDFDocument.create(opts?)新建空文档返回 Promise<PDFDocument>
PDFDocument.load(input, opts?)载入既有 PDFinput:Uint8Array/ArrayBuffer/base64 字符串

load 选项(LoadOptions)

选项默认含义
ignoreEncryptionfalse加密 PDF 默认抛 EncryptedPDFError;设 true 强行解析(不解密,结果可能异常)
updateMetadatatrue保存时是否刷新 ModDate/Producer;设 false 原样保留原元数据
parseSpeedSlowParseSpeeds.{Slow,Medium,Fast,Fastest},越快越少让出事件循环

二、PDFDocument 实例方法

页面

方法作用
addPage(page?)末尾加页;传 [w,h] 指定尺寸,或传 PDFPage
insertPage(i, page?)在索引 i 处插页
removePage(i)删除索引 i 的页
getPages()返回 PDFPage[]
getPage(i) / getPageCount()取单页 / 取页数
getPageIndices()返回 [0,1,...,n-1],便于复制全部页
copyPages(srcDoc, indices)跨文档复制页 → 返回属于本文档的 PDFPage[](再 addPage 放入)

嵌入资源

方法作用
embedFont(input, opts?)嵌字体:StandardFonts 枚举或 TTF/OTF 字节;opts { subset, customName, features }
embedStandardFont(font, name?)嵌标准 14 字体(无需 fontkit)
embedPng(input) / embedJpg(input)嵌图片 → PDFImage(input:字节/base64)
embedPdf(input, indices?)嵌入另一 PDF 的若干页 → PDFEmbeddedPage[]
embedPage(page) / embedPages(pages)把 PDFPage 变为可 drawPage 的嵌入页
registerFontkit(fontkit)嵌入自定义字体前必须先注册 @pdf-lib/fontkit
attach(bytes, name, opts)添加文档级附件(opts { mimeType, description, creationDate, ... }

输出与元数据

方法作用
save(opts?)序列化 → Promise<Uint8Array>
saveAsBase64(opts?)→ base64 字符串;{ dataUri: true } 返回完整 data: URI
getForm()PDFForm
setTitle/setAuthor/setSubject设元数据(字符串)
setKeywords(string[])设关键词(数组
setProducer/setCreator设生成者/创建者
setCreationDate(Date) / setModificationDate(Date)设日期
getTitle() / getAuthor()读对应元数据

save 选项(SaveOptions)

选项默认含义
useObjectStreamstrue对象流压缩(体积更小,PDF 1.5+);老旧阅读器不兼容时设 false
addDefaultPagetruecreate 的空文档保存时若无页是否补一张
objectsPerTick50每个事件循环 tick 处理的对象数(大=快但易阻塞)
updateFieldAppearancestrue保存时是否重绘表单字段外观

三、PDFPage 绘制方法

方法作用
drawText(text, opts)画文字(支持多行 \n、自动换行 maxWidth)
drawImage(image, opts)画图片(先 embedPng/embedJpg)
drawPage(embedded, opts)画嵌入页(先 embedPage/embedPdf)
drawRectangle(opts)画矩形
drawLine(opts)画线(start/end{x,y}
drawCircle(opts)画圆(x/y 圆心、size 半径)
drawEllipse(opts)画椭圆(xScale/yScale
drawSvgPath(d, opts)画 SVG path(传 d 字符串)
getSize() / getWidth() / getHeight()取尺寸
setSize(w,h) / setWidth / setHeight改尺寸
setRotation(degrees(n)) / getRotation()页面旋转(90 的倍数)
setFont / setFontSize / setFontColor设页级默认字体/字号/色
translateContent(x,y) / scale(x,y)内容平移 / 页面缩放
moveTo / moveUp / moveDown / resetPosition默认绘制位置

drawText 选项

选项含义
x / y起点坐标(左下原点、y 向上)
size字号
fontPDFFont 对象(须先 embed,不能传字符串名)
colorrgb()/cmyk()/grayscale()(默认黑)
lineHeight多行行距
maxWidth超宽时自动按词换行
rotatedegrees(n) / radians(n)
opacity不透明度 0~1(做水印)
blendMode混合模式

drawRectangle / drawLine / drawCircle 关键选项

形状关键选项
drawRectanglex,y,width,heightcolor(填充)、borderColorborderWidthopacityborderOpacityrotate
drawLinestart:{x,y}end:{x,y}thicknesscoloropacitydashArray
drawCirclex,y(圆心)、size(半径)、colorborderColorborderWidth
drawImage / drawPagex,y,width,height(或 xScale/yScale)、opacityrotate

四、PDFFont(字体测量)

方法作用
widthOfTextAtSize(text, size)文本在该字号下的宽度(做居中/换行)
heightAtSize(size)行高
sizeAtHeight(height)由目标高度反算字号

五、PDFImage(图片)

方法作用
scale(factor)返回等比缩放后的 { width, height }
scaleToFit(w, h)返回适配框内的 { width, height }
size()原始 { width, height }

六、PDFForm(表单)

方法作用
getTextField(name)取文本框
getCheckBox(name)取复选框
getRadioGroup(name)取单选组
getDropdown(name) / getOptionList(name)取下拉 / 列表
getButton(name)取按钮(可 setImage
getFields()列出全部字段
getField(name) / getFieldMaybe(name)取字段(后者不存在返回 undefined,不抛错)
createTextField(name)工厂创建字段,再 addToPage(page, {x,y,w,h})
removeField(field)删字段
flatten()扁平化:字段外观固化为页面内容、不再可编辑
updateFieldAppearances(font)用指定字体重绘字段外观(中文字段必须

字段值操作

字段类型操作
文本框setText(s) / getText() / enableMultiline() / setMaxLength(n)
复选框check() / uncheck() / isChecked()
单选组select(value) / getSelected()
下拉/列表select(value)(可数组)/ addOptions([...])
按钮setImage(pdfImage)

七、颜色与角度辅助函数

函数说明
rgb(r, g, b)分量 0~1(红 = rgb(1,0,0)
cmyk(c, m, y, k)分量 0~1
grayscale(v)灰度 0~1
degrees(n) / radians(n)角度,用于 rotate / setRotation

八、常用导出常量

导出内容
StandardFonts标准 14 字体枚举:Helvetica(+Bold/Oblique/BoldOblique)、TimesRoman(+变体)、Courier(+变体)、SymbolZapfDingbats
PageSizes页面尺寸表:A4=[595.28,841.89]Letter=[612,792]LegalA3…(单位 point)
ParseSpeedsSlow / Medium / Fast / Fastest
rgb / cmyk / grayscale / degrees / radians见上

速查完毕,进 指南 · 基础 理解坐标系与字体,或 指南 · 进阶 看修改既有 PDF / 合并 / 表单实战。