以编程方式从网页创建PDF

时间:2013-05-28 23:44:21

标签: css google-chrome pdf printing resume

我的html页面(www.mysite.com/resume.html)上有我的简历。每当我需要PDF版本时,我都会使用Google Chrome的打印对话框将其另存为PDF,它使用我的打印CSS样式表。

我希望能够导航到www.mysite.com/resume.pdf,以便始终拥有最新的PDF版本,而无需手动浏览Google Chrome。有没有办法以编程方式自动创建resume.hpd中的resume.pdf?如果我可以编写一个每24小时运行一次的脚本或类似的东西,那就太好了。

3 个答案:

答案 0 :(得分:10)

PhantomJS非常适合这种情况。它从命令行调用WebKit的一个实例,然后可以用它来输出到PDF等文件。

PhantomJS:

http://phantomjs.org/

将屏幕输出导出到文件的具体说明:

http://phantomjs.org/screen-capture.html

e.g:

phantomjs rasterize.js 'http://www.example.com/resume.html' resume.pdf

答案 1 :(得分:4)

Chrome已启动headless计划。

有了这个,我们可以创建一个pdf。例如for windows将命令行导航到

C:\Users\{{your_username}}\AppData\Local\Google\Chrome SxS\Application>

然后点击命令:

chrome --headless --print-to-pdf="d:\\{{path and file name}}.pdf" https://google.com

答案 2 :(得分:-1)

如果您希望通过PHP在服务器端进行操作,建议使用Browsershot(NodeJS软件包)和Chrome / Chromium无头浏览器的Puppeteer库吗?

效果很好。比wkhtmltopdf(这是另一种不依赖NodeJS软件包也不依赖Chrome / Chromium无头浏览器的选项)安装和使用起来更容易的方法。就个人而言,我建议使用Browsershot解决方案,因为wkhtmltopdf取决于类型您正在运行的服务器(Linux发行版和版本)的安装。也就是说,安装wkhtmltopdf的唯一可靠方法是从正在运行的服务器上下载并编译源代码,而不是通过程序包管理器进行编译)

另外,如果在Laravel项目上碰巧需要专门的解决方案,那么可以使用wrapper library for Browsershot

签出this tutorial开始使用。