当前位置: 首页 > 网络应用技术

使用Puppeteer生成PDF文件详细的操作过程

时间:2023-03-08 18:01:01 网络应用技术

  这篇博客文章使您解决了这些困难问题。

  要学习此博客文章,您需要您的基本nodejs知识?

  您还需要对Ali的节点框架鸡蛋有所了解?

  此外,博客中还有更多内容,因此您需要耐心等待,不要跳过中间的任何内容。

  一开始,我收到了用节点生成PDF的需求。我迅速检查了一些信息,然后决定使用Puppeteer。这件事有什么好处?

  简单地说,这很简单,学习曲线是平滑的,难度并不困难。您可以从官方文档开始。这是文档地址

  英语不好的儿童鞋,这里有中文地址

  让我先放一个简单的演示,这是生成PDF代码的最简单官员

  然后在终端运行

  看起来很简单,对吗?

  但是,需求总是很复杂。当停靠需要和需求的实施时,您需要一点毅力和一些汗水。让我列出以下问题。

  我们根据上面的文件结构创建文件,然后在相应的文件中填写以下内容。

  该项目采用了一个鸡蛋框架,该鸡蛋框架提供了许多API和配置。API方法之一是该方法返回渲染的数据结构,即HTML页面。

  我们可以通过获取渲染数据的页面结构来生成PDF,以生成PDF

  您可以在 /公共目录中生成pdf.pdf。

  然后,我们打开此PDF文件以查看以下问题

  解决:

  简单的链接找不到CSS文件,您可以使用解决方案,可以传递链接路径(URL),也可以传递CSS内容(内容),并且还可以传递CSS路径(路径)(路径)(路径)(路径)

  下图是参数的描述:

  这是因为Puppeteer基于Chrome的无头浏览器,并且浏览器在打印时保存墨水,默认情况下,背景图和背景颜色不会导出。

  解决:

  解决:

  将图片放在静态资源服务器上,然后直接使用绝对地址。即使您不将其放在静态资源服务器上,您只需要放置图片服务器,例如

  以上问题在此问题中搜索。尽管解决并不难,但将它们放在一起是更麻烦的。然后我想,为什么我不拥有HTML,然后将HTML给Puppeteer?因为它是一个纯HTML文件,而不是Renderview返回的字符串,以上三个问题自然解决了。顺便一提

  解决:

  更改content.js内容以下代码:

  再次运行,然后检查pdf.pdf,并发现下面还有一个问题

  这个问题非常关键,问题有很多问题。如果您有兴趣,可以单击地址查看。解决方案有两个主要解决方案。

  这可以解决无标题的封面封面,但也带来了其他问题。这可能意味着除了封面外,另一页上的另一页是计算出的错误,如图:: fig:gig:

  我也遇到了这个问题。查看问题中是否有解决方案,所以我果断地采用了第二种类型

  如果要合并PDF,则不能直接生成PDF,但是必须形成PDF数据并以缓冲区的形式临时存储它。

  那么,如何生成封面和内容的PDF的缓冲区?

  此方法,如果路径参数是在选项中传输的,则将生成PDF文件。

  好吧,现在问题如何将两个缓冲区合并为缓冲区?

  此处的合并阶段也有两个合并解决方案

  以下代码是将cover_buffer和content_buffer组合到文件中,然后生成PDF。问题是生成的PDF文件。单击目录跳转。

  首先,您需要安装此软件包

  然后在create.js中使用

  以下代码是生成cover_buffer和content_buffer通过合并到文件中生成PDF。问题是Node-PDFTK对于MacOS存在问题。

  首先,您需要安装此软件包

  然后在create.js中使用

  可以在create.js中选择组合缓冲区的上述两个解决方案,然后运行pdf.pdf。如果您有任何疑问,请阅读此博客或在评论中的评论中与我联系。

  最后,添加一些CSS如何操作分页姿势:

  最后为小朋友赞美它:)

  作者:阳光同学