【问题标题】:Puppeteer - How to change orientation of some pages in a document?Puppeteer - 如何更改文档中某些页面的方向?
【发布时间】:2019-07-24 05:03:48
【问题描述】:

我正在使用 Puppeteer 创建一个 30 页长的 pdf,其中一些页面需要横向显示。我怎样才能只为页面 x 和页面 y 指定它?

【问题讨论】:

  • 你尝试了什么?你被困在哪里了?你的代码和 HTML 是什么样的?
  • 我同意上面的问题。但是我也可以说更改特定页面方向非常复杂。要研究这个。感觉像是 chrome 的限制。
  • 我添加了一些符合some pages但不符合page X的答案。

标签: javascript node.js pdf puppeteer


【解决方案1】:

@page 的伪选择器

根据documentationCSS spec,您可以使用CSS为某些页面设置不同的方向。

@page :pseudo-selector{
 size: landscape;
}

可接受且有效的伪选择器(我用 puppeteer 和 google chrome 测试过)包括,

:blank
:first
:left
:right

结果:

PS:在回答的那一刻,草稿中提到的:nth-child 和页面标识等其他选择器不适用于 chrome 版本 73。

另一种方式

解决此问题的唯一其他方法是单独打印页面,然后稍后合并它们。您可以使用pageRanges 打印特定页面,

page.pdf({pageRanges: '1-5', path: 'first.pdf'})

并使用pdf-merge之类的包来合并两个pdf文件。

const PDFMerge = require('pdf-merge');
PDFMerge(['first.pdf', 'second.pdf'], {output: `${__dirname}/3.pdf`})

【讨论】:

    【解决方案2】:

    好吧,根据caniuse,you can use the page property with Chrome 85 and up

    因此,您可以使用 @page 后跟“已命名的页面名称”和 页面属性 来为任何页面设置不同的方向(或任何其他属性)你想要的页面。

    示例:

    @page rotated {
       size: landscape;
    }
    
    .rotated_class {
       page: rotated;
    }
    

    Page example, just right click -> print to see it in action

    【讨论】:

      【解决方案3】:

      我们需要在 options 中将 'landscape' 属性设置为 'true'。

      var options = {
          ...
          landscape: true
      }
      
      page.pdf(options);
      

      【讨论】:

        猜你喜欢
        • 2013-02-05
        • 2022-12-15
        • 2019-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多