从 Node/Express/Angular/PhantomJS 导出带有图表的 PDF 报告
Export a PDF report with charts from Node/Express/Angular/PhantomJS
我在基于DaftMonk生成器(https://github.com/DaftMonk/generator-angular-fullstack)的MEAN堆栈中使用AngularJS。我对几乎所有的Angular/JS/Node都是相当陌生的(和stackoverflow,所以如果我需要改写我的问题,请随时指出!
我的目标是从包含六个图形,图像和文本的Angular页面为用户生成多页PDF报告。
关于stackoverflow和Google有许多问题与此的潜在解决方案有关,但是在详尽地检查了这些问题之后,它们对我需要实现的目标没有帮助(或者我不明白如何在我的场景中使用它们..)。
目前,当用户导航到"报告页面"时,一个http请求会从Angular控制器发送到Node/Express,该控制器检查用户角色/组ID,查询数据库,分析数据并将其发送回浏览器以呈现为图形(当前使用angular-chartjs和flot)。
用户选择图形类型,并且可以从可能的 20+ 列表中选择最多六个图形来显示。这六个图表是需要导出到 PDF 报告(以及其他信息)的内容。我需要使其(在合理范围内)尽可能与浏览器兼容(至少 IE8+),尽管我当前的解决方案是 IE10+,对于使用 Modernizr 的旧浏览器禁用 PDF 导出。
从stackoverflow和Google,可能的解决方案包括在Node中使用PhantomJS来捕获屏幕或使用客户端PDF渲染器(例如jsPDF)。其中,我的感觉是PhantomJS将提供最大的灵活性/浏览器兼容性。此外,我需要根据用户角色生成几个不同的报告,因此不希望在浏览器中生成报告的所有代码。但是我完全不知道如何使用 MEAN 堆栈访问"客户端看到的内容"。PhantomJS需要有效地以客户端身份登录,并可以访问客户端所做的图形的六个选择。
根据我的研究,使用 PhantomJS 需要创建一个 html 页面,以某种方式将客户端看到的内容/数据/图形选择传输到它,然后捕获它以呈现为 PDF,然后再发送回浏览器。一种方法可能是将所需的信息传递回Express(使用POST?),然后呈现一个可以指向PhantomJS的服务器端html页面,但我不知道如何实现这一点(或者如果可能)。另一种可能性是将客户端报告数据、选择等存储在数据库中,并启动一个任务来渲染 PDF 并在完成后将其发送回浏览器,但同样,我不知道如何实现这一点。
我已经阅读了PhantomJS中的cookie或使用代码浏览登录页面,但这似乎是一种繁琐的方法。是否可以在服务器端创建html文件,注入图表.js(或其他图表库)(和角度?)以及PhantomJS渲染为PDF所需的所有用户数据/图表选项?我想在某些方面,我需要能够在服务器端使用 PDF 生成器、图表库等来创建 PDF。
关于如何实现这一目标的任何建议(带有可能的代码示例)将不胜感激。
我和你有同样的问题(只是我在服务器端使用 Laravel)。
我想出的想法是将angular-chartjs生成的画布转换为图像(使用画布元素上的toDataURL()
$('.theCanvas').each(function () {
var canvas=this;
img=JSON.stringify(canvas.toDataURL());
});
http://plnkr.co/edit/PkZiqYynzQXehbe6p1eH?p=preview然后将图像发送到服务器以创建PDF,最后向用户发送指向创建的PDF的链接。
就我而言,它们有很多包可以从服务器端的 html 生成 PDF,我不知道是否存在适用于 Node 的工具。
我希望这有所帮助。
- 如何使用javascript或html下载PDF格式的填写表单
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- 如何将PDF作为二进制文件传递到window.open()
- javascript.点击显示嵌入的pdf
- Javascript/Jquery Blob not showing Chrome PDF
- 在提交时打开thankyou.html+下载PDF
- 生成pdf或其他非html文件时的错误处理
- how to convert html <div> to pdf
- angularjs$valid-on-dates在firefox中报告错误
- 将画布转换为pdf:黑色背景
- 在Meteor js中生成PDF报告
- 从 Node/Express/Angular/PhantomJS 导出带有图表的 PDF 报告
- 如何在Java Web应用程序中的PDF报告中绘制图形
- 使用javascript和html生成pdf报告
- 从嵌入式Tableau报告导出为PDF时,浏览器控制台中出现未经授权的错误
- 最常用的生成PDF报告的方法(JavaScript,node.js)
- 如何在chartnews .js中将报告导出为PDF/CSV
- 如何在一个窗口中打开3个不同的PDF报告
- 生成文件大小有限的EXCEL、PDF、CSV报告
- 使用flot图创建PDF报告