Skip to content

参考

PDF.js(pdfjs-dist)常用 API、getDocument 选项、渲染参数、对象方法与文本/注解层速查。版本基线 6.0.x

一、顶层 API(pdfjsLib.*)

成员作用备注
getDocument(src)加载 PDF返回 PDFDocumentLoadingTask,取 .promise 得文档
GlobalWorkerOptions.workerSrc指定 worker 脚本路径使用前必设;与主库同版本
version当前 PDF.js 版本号用于核对主库/worker 一致
TextLayer文本层类渲染可选中文字(替代旧 renderTextLayer
AnnotationLayer注解层类渲染链接/表单等交互注解
AnnotationMode注解模式常量控制渲染哪些注解
PasswordResponses口令回调常量配合 onPassword 使用

二、getDocument 参数(DocumentInitParameters,节选)

选项类型默认含义
urlstring | URLPDF 的 URL
dataUint8Array | ArrayBuffer内存中的二进制 PDF(推荐 Uint8Array,会转移给 worker)
httpHeadersobject自定义请求头(如 Authorization)
withCredentialsbooleanfalse跨站请求是否带 Cookie/凭据
passwordstring解密受口令保护的 PDF
cMapUrlstringAdobe CMap 资源目录(CJK 字体需要,含尾斜杠)
cMapPackedbooleantrueCMap 是否二进制打包
standardFontDataUrlstring标准字体资源目录(非内嵌字体需要)
wasmUrlstringwasm 资源目录(图像解码/ICC 等)
disableRangebooleanfalse禁用范围请求分块加载
disableStreambooleanfalse禁用流式加载
workerPDFWorker复用一个自建 worker 实例
verbositynumber日志级别(VerbosityLevel)

加载远程 URL 跨域时,需目标服务器返回正确的 CORS 头;PDF.js 端无法绕过同源策略。

三、PDFDocumentLoadingTask(getDocument 的返回)

成员作用
.promiseresolve 为 PDFDocumentProxy;无效/损坏文件会 reject(如 InvalidPDFException
.onProgress = ({loaded,total}) => {}加载进度回调(做进度条)
.onPassword = (updatePassword, reason) => {}需要口令时回调
.destroy()取消加载并释放资源

四、PDFDocumentProxy(文档对象)

成员作用
numPages总页数(同步属性)
getPage(n)取第 n 页(1 基),返回 PDFPageProxy
getMetadata()取元数据:{ info, metadata }(Title/Author/… 与 XMP)
getOutline()取大纲/书签树
getAttachments()取附件
getData()取原始 PDF 字节
destroy()释放文档资源、解除与 worker 关联

五、PDFPageProxy(页面对象)

成员作用
getViewport({ scale, rotation })算出渲染视口(尺寸 + 变换)
render(params)渲染到画布,返回 RenderTask
getTextContent(opts)取文本内容(items 为 TextItem 数组)
getAnnotations({ intent })取注解数据(链接/表单等)
getOperatorList()取底层绘制指令(高级用法)
cleanup()清理该页缓存的资源
rotate页面固有旋转角

六、getViewport 参数

选项类型默认含义
scalenumber线性缩放因子(2 = 宽高翻倍、更清晰)
rotationnumberpage.rotate旋转角(0/90/180/270);替换固有旋转,非叠加
offsetX / offsetYnumber0偏移
dontFlipbooleanfalse是否不翻转 Y 轴

返回的 PageViewportwidth / height(像素)、transform 等。

七、render 参数(RenderParameters,节选)

选项类型默认含义
canvasHTMLCanvasElement目标画布(推荐
canvasContext2D context目标画布上下文(向后兼容;与 canvas 二选一)
viewportPageViewportgetViewport 得到(必需
transformnumber[]null视口前再叠加的变换(HiDPI 用)
intentstring"display"渲染用途:display / print / any
annotationModenumber渲染哪些注解(AnnotationMode)
backgroundstring"rgb(255,255,255)"画布背景填充
optionalContentConfigPromisePromise可选内容(图层)配置
pageColorsobject高对比模式的前/背景色覆盖

八、RenderTask(render 的返回)

成员作用
.promise渲染完成时 resolve
.cancel()取消渲染(会抛 RenderingCancelledException,捕获忽略)

同一个 canvas 不能并发 render;翻页时先 cancel() 旧任务再渲染新页。

九、TextItem(getTextContent().items 的元素)

字段含义
str该片段的文本字符串
transform6 元素变换矩阵(位置/缩放,用于文本层定位)
width / height该片段的宽高
dir书写方向(ltr / rtl
fontName字体名(对应 styles 字典)
hasEOL是否片段末尾换行

十、文本层 / 注解层(类式 API,v4+)

ts
// 文本层:可选中/可搜索文字
const textLayer = new pdfjsLib.TextLayer({
  textContentSource: await page.getTextContent(),
  container: textLayerDiv, // 叠在 canvas 上、同 viewport 尺寸
  viewport,
});
await textLayer.render();

// 注解层:链接、表单等交互
const annotationLayer = new pdfjsLib.AnnotationLayer({
  div: annotationLayerDiv,
  viewport,
  page,
});
await annotationLayer.render({
  annotations: await page.getAnnotations(),
  viewport,
});

旧的函数式 renderTextLayer(...)弃用,改用 TextLayer 类。


速查完毕,进 指南 · 基础 理解渲染链路与对象模型,或 指南 · 进阶 看文本层/注解层/本地文件等实战。