当前位置: 首页 > 面试题库 >

如何使用浏览器的(chrome / firefox)HTML / CSS / JS渲染引擎生成PDF?

越飞鸾
2023-03-14
问题内容

有一些不错的项目可以从html / css / js文件生成pdf

  1. http://wkhtmltopdf.org/(开源)
  2. https://code.google.com/p/flying-saucer/(开源)
  3. http://cssbox.sourceforge.net/(不一定是直接生成pdf)
  4. http://phantomjs.org/(开放源代码允许pdf输出)
  5. http://www.princexml.com/(商业性的,但是最好的一类)
  6. https://thepdfapi.com/一种chrome修饰,可从

我想以编程方式控制chrome或firefox浏览器(因为它们都是跨平台的),以使其加载网页,运行脚本并设置页面样式并生成pdf文件进行打印。

但是,我该如何从自动控制浏览器开始,以便我可以做类似的事情

渲染到pdf file-to-render.html out.pdf

通过浏览页面,然后将其打印为pdf,我可以轻松地手动完成此工作,然后在pdf文件上获得准确,符合100%规范的渲染html / css /
js页面。甚至可以通过浏览器中的配置选项在pdf中省略url标头。但是,我又如何开始尝试自动执行此过程?

我想在服务器端自动化,打开浏览器,导航到页面,并使用浏览器呈现的页面生成pdf。

我做了很多研究,只是我不知道如何提出正确的问题。我想以编程方式控制浏览器,也许就像硒一样,但是到了将网页导出为PDF的地步(因此使用浏览器的渲染功能生成了良好的pdf)


问题答案:

Firefox为此提供了一种API方法:https :
//developer.mozilla.org/en-US/docs/Mozilla/Add-
ons/WebExtensions/API/tabs/saveAsPDF

browser.tabs.saveAsPDF({})
  .then((status) => {
    console.log('PDF file status: ' + status);
  });

但是,它似乎仅可用于Browser Extensions,而不能从网页中调用。

我仍在为此寻找公共API …



 类似资料:
  • JavaScript代码嵌入网页的方法 直接添加代码块 加载外部脚本 行内代码 外部脚本的加载 网页底部加载 多个脚本的加载 defer属性 async属性 脚本的动态嵌入 加载使用的协议 JavaScript虚拟机 单线程模型 Event Loop 任务队列 参考链接 浏览器通过内置的JavaScript引擎,读取网页中的代码,对其处理后运行。 JavaScript代码嵌入网页的方法 在网页中嵌

  • 渲染引擎用于渲染内容。 概要 hexo.extend.renderer.register(name, output, function(data, options){ }, sync); 参数 描述 name 输入的扩展名(小写,不含开头的 .) output 输出的扩展名(小写,不含开头的 .) sync 同步模式 渲染函数中会传入两个参数: 参数 描述 data 包含两个属性:文件路径 pat

  • 问题内容: 对于我的Rails 3.1应用程序上的Cucumber场景,我使用了@javascript标记,因此Selenium已激活。我收到以下错误: 如果可能的话,我想使用Google Chrome浏览器作为浏览器-而不是Firefox(我尚未安装)。这可能吗?该怎么办? 实际上,Cucumber / Selenium不应检测并使用浏览器吗? ====编辑==== 添加后 …到features

  • 前言 接下来的几篇文章,讲一下二面的内容。 二面的内容: 渲染机制 JS 运行机制 页面性能 错误监控 本文接下来讲渲染机制。 渲染机制包括的内容: 什么是DOCTYPE及作用 浏览器渲染过程 面试经常会问:在浏览器中输入url,发生了哪些事情。其中有一部就是浏览器的渲染过程。 Reflow:重排 面试官问完了渲染机制,一般会紧接着问重排Reflow,你可千万别说你没听过。 Repaint:重绘

  • 字体渲染引擎的工作主要是字体文件操作和文字渲染,LCUI 将其抽象成了 LCUI_FontEngine 接口,使得 LCUI 的字体渲染引擎可被切换和扩展。 目前基于该接口实现的引擎有内置引擎和 FreeType 引擎,接下来我们再深入了解它们。 内置引擎 内置引擎是 LCUI 初始化的第一个引擎,它主要用于在无其它可用引擎的情况下加载预置的字体位图数据,以确保界面中的文字能够被渲染出来。 内置引

  • 问题内容: 我试图在启动Chrome或Firefox浏览器时禁用所有cookie。我在这里看到了示例,但是它们都是Java的,并且一些Selenium代码与Python有所不同。 我想用Python完成上述操作。 问题答案: 这将是: 已测试-为我工作(Chrome 45,硒2.47)。