@browserless/pdf:将一个网站导出为PDF的感知好默认.
见 pdf 节 我们的网站有更多信息.
安装
使用 npm :
npm install @browserless/pdf --save
关于
此软件包提供 PDF 生成 从网页上读取有合理默认和智能内容检测。 它包着普普提特的 page.pdf() 具有优化设置和重试机制,以确保在生成 PDF 之前充分提供页面.
这个软件包做什么
这个 @browserless/pdf 软件包允许您 :
- 生成 PDF 从任何含有生产准备默认值的 URL
- 等页面准备好 包括空白屏幕检查
- 自定义边距 带有简单字符串或平面配置
- 缩放内容 以最佳方式匹配页面
- 使用所有的 PPDF 选项 高级定制
使用量
const createPdf = require('@browserless/pdf')
const createGoto = require('@browserless/goto')
const goto = createGoto({ timeout: 30000 })
const pdf = createPdf({ goto })
// With browserless
const browserless = await browser.createContext()
const pdfBuffer = await browserless.pdf('https://example.com')
// Or directly with a page
const page = await browser.newPage()
const pdfFn = pdf(page)
const pdfBuffer = await pdfFn('https://example.com')
默认设置
软件包应用这些优化的默认值 :
| 选项 | 默认 | 说明 |
|---|---|---|
margin | '0.35cm' | 页边距(适用于所有方) |
scale | 0.65 | 最佳匹配的内容尺度因素 |
printBackground | true | 包含背景颜色/图像 |
waitUntil | 'auto' | 智能等待和内容检测 |
选项
| 选项 | 类型 | 默认 | 说明 |
|---|---|---|---|
margin | string | object | '0.35cm' | 页面边距 |
scale | number | 0.65 | 网页渲染的规模(0.1-2) |
printBackground | boolean | true | 打印背景图形 |
waitUntil | string | 'auto' | 何时考虑导航完成 |
format | string | 'Letter' | 纸张格式 (A4, 字母等) |
landscape | boolean | false | 纸张取向 |
width | string | number | —— 说 | 纸张宽度( 覆盖格式) |
height | string | number | —— 说 | 纸张高度( 覆盖格式) |
pageRanges | string | —— 说 | 打印的纸张范围,例如“ 1-5, 8” |
headerTemplate | string | —— 说 | HTML 页眉模板 |
footerTemplate | string | —— 说 | 页脚的 HTML 模板 |
displayHeaderFooter | boolean | false | 显示页眉和页脚 |
preferCSSPageSize | boolean | false | 优先使用 CSS @ page 大小 |
全体 Puppeteer page.pdf () 选项 被支持.
边距配置
设置边值为单值(适用于所有方)或平面:
// Single value for all sides
await browserless.pdf(url, { margin: '1cm' })
// Per-side configuration
await browserless.pdf(url, {
margin: {
top: '2cm',
right: '1cm',
bottom: '2cm',
left: '1cm'
}
})
支助单位: px, (中文(简体) ), in, (中文(简体) ), cm, (中文(简体) ), mm
智能内容检测
何时 waitUntil: 'auto' (默认),包:
- 导航到页面
- 等待油漆/准备状态信号(
waitForReady+ 键isPageReady(中文(简体) ) - 水合物溢出后,一旦准备好(
prepareFullDocument(中文(简体) ) - 生成 PDF
这保证了动态内容(JavaScript-resisted pages)在PDF生成前被完全加载.
// Use auto detection (default)
await browserless.pdf(url, { waitUntil: 'auto' })
// Or use standard Puppeteer wait conditions
await browserless.pdf(url, { waitUntil: 'networkidle0' })
await browserless.pdf(url, { waitUntil: 'domcontentloaded' })
实例
基本 PDF 生成
const pdfBuffer = await browserless.pdf('https://example.com')
await fs.writeFile('output.pdf', pdfBuffer)
有自定义边距的 A4 格式
const pdfBuffer = await browserless.pdf('https://example.com', {
format: 'A4',
margin: '2cm',
scale: 0.8
})
有页眉/页脚的景观
const pdfBuffer = await browserless.pdf('https://example.com', {
landscape: true,
displayHeaderFooter: true,
headerTemplate: '<div style="font-size:10px; text-align:center; width:100%;">Header</div>',
footerTemplate: '<div style="font-size:10px; text-align:center; width:100%;"><span class="pageNumber"></span>/<span class="totalPages"></span></div>'
})
打印特定页面
const pdfBuffer = await browserless.pdf('https://example.com', {
pageRanges: '1-3, 5'
})
如何适合在单体
这是一个 核心功能软件包 用于 PDF 生成 :
| 消费者 | 目的 |
|---|---|
browserless (核心数) | 规定 .pdf() 方法 |
@browserless/cli | 权力 browserless pdf 命令 |
依赖关系
| 软件包 | 目的 |
|---|---|
@browserless/goto | 用广告屏蔽的页面导航 |
@browserless/screenshot | 准备状态和空白屏幕检查 |
@kikobeats/time-span | 重试逻辑的时间测量 |
debug-logfmt | 结构化调试日志 |
pretty-ms | 人类可读时间格式化 |
许可证
@ 浏览器不可用/ pdf © 微链接,在 麻省理工学院 执照.
作者和维护者 微链接 由来自 捐助者。 。 。 .
微链接.io • GitHub 软件 微链克 • X @microlinkhq (英语)