首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用puppeteer配置PDF页面宽度

使用puppeteer配置PDF页面宽度
EN

Stack Overflow用户
提问于 2019-12-24 13:34:57
回答 1查看 4.2K关注 0票数 1

我正在尝试使用puppeteer生成pdf,但生成的pdf宽度很大。我想有pdf格式,显示在一个页面上的所有内容,必须是4.8厘米的宽度,其中页面高度可以是其内容的任何长度。

我将配置添加到pdf

代码语言:javascript
运行
复制
{
  path            : filePath,
  printBackground : true,
  width           : '4.8cm'
}

在页面上,我将配置添加到了视口

代码语言:javascript
运行
复制
{
  width             : 136,
  height            : 842,
  deviceScaleFactor : 1
}

但是最终的结果并没有改变。

EN

Stack Overflow用户

发布于 2019-12-24 19:46:06

尝试此代码,并选择此答案作为正确答案,如果它工作得很好。

我在page.pdf方法中设置了缩放选项,以将原始打印的PDF缩放为缩放版本。因此,这使得整个页面只适合一页。

代码语言:javascript
运行
复制
const puppeteer = require('puppeteer')

const pageURL = 'https://stackoverflow.com/questions/59464250/configure-pdf-page-width-using-puppeteer'

const optionsPDF = {
    path: 'print.pdf',
    printBackground: true,
    width: '4.8cm',
    scale: 1,
    preferCSSPageSize: false
}

;(async () => {
    const browser = await puppeteer.launch({
        headless: true,
        devtools: false,
        defaultViewport: {
            width             : 136,
            height            : 842,
            deviceScaleFactor : 1
        }
    })
    const [page] = await browser.pages()
    await page.emulateMedia('screen')

    await page.goto( pageURL, { waitUntil: 'networkidle0', timeout: 0 })

    const height_weight_ratio = await page.evaluate( () => window.innerHeight / window.innerWidth)
    const height = parseInt(optionsPDF.width) * height_weight_ratio
    optionsPDF.scale = 1/height_weight_ratio

    console.log('Printing PDF...')
    await page.pdf(optionsPDF)

    await browser.close()

})()
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59464250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档