基于NODE实现电子报告生成系统

       这段日子一直在郑州出差搞项目,初来郑州印象感觉这里气候和武汉差不多,虽然也很热,却是没有武汉那么大的湿度,太阳光让人感觉温软且舒服,但昼夜温差还是比较大,晚上不算太热,走在大玉米楼下如意湖边吹吹湖风,让人心旷神怡。

        虽然每天的生活都在忙碌单调中度过,天天加班,但是过的很充实。我们的目标始终没有变,为了尽快完成项目,大家都很努力拼命的工作,解决了一个个困难,又迎来了一个个新的挑战。同时我也给自己定了两个小目标:

        1、不论再忙也要抽时间学习些新知识,每天给自己哪怕一点点积累和总结。

        2、不论再忙也要抽时间锻炼,身体是革命的本钱,只有健康的体魄才能完成更艰巨的任务。


        闲话扯完,接下来我们进入主题,之前公司有需求要生成基于绩效的电子版报告,于是百忙中写下这篇文章,希望对以后生成类似文档提供帮助,故分享出来给大家参考学习。由于之前是采用R语言生成的报告,对此知之甚少,因此考虑用NODE重构一个新的生成系统。以前也看过java的报表生成,比如Ireport,但是基于NODE的插件很少,也花了不少时间去查阅和比较,最终选择出比较适合我们自己的插件来完成这个事情。

        要完成这个任务我们需要实现两点:

        1、报告模板化,通过绑定参数动态替换原有内容,如用{name}替换医院名称。

        2、图表自动生成,如果是自动生成图表需要优先考虑用模型计算绘制图形,然后才能生成图表,最终输出。

        由于一个报告动辄上百页,需要进行大量图形模型绘制的计算,这样做可能会消耗大量资源,生成效率估计会降低很多。因此我另辟蹊径,通过动态截图的算法,将已经绘制完成的图形优先生成在页面中,然后用动态截取图片的形式保存输出,最终成为一个PNG格式图片导入到模板报告中,这样将大大提高生成效率。通过查阅和比较,于是找到两款适合我需要的插件,Docxtemplater和PhantomJS。


一、Docxtemplater

        主要用于模板化生成报告,可以在word/pdf/ppt中加入指定参数,动态导出生成模板的工具。该工具特点是支持循环绑定,嵌套绑定方法,这样可以解决按照区域、科室等不同分类的生成问题。

安装方法:

npm install

docxtemplater(下载安装)

npm install

docxtemplater-image-module –save(下载生成图片模块)

npm install angular-expressions  --save(下载json格式模块)


调用方法:

调用模板方法


二、PhantomJS

        主要用于图片动态截取,是一个基于webkit内核的无头浏览器。即没有UI界面的一个浏览器,只是其内的点击、翻页等人为相关操作需要程序设计实现。PhantomJS提供JavaScript API接口,即通过编写js程序可以直接与webkit内核交互,在此之上可以结合Java语言等,通过Java语言调用js等相关操作。图片生成效果是所见即所得的,和我们在页面上看到的没有区别,并且它不止可以截取图片,甚至可以用它来做网络抓取。

安装方法:

npm install phantom(下载安装)


调用方法:

var page = require('webpage').create(); //实例化对象

var address = 'http://baidu.com'; //填写需要打印的HTML文件

var output = './1.png'; //存储文件路径和名称

使用phantomjs来进行“后台网页截图”


        解决方案如下:

        1、将生成的json文件输出至模板文件

        2、接收参数并查询页面

        3、将所有生成echarts图形放在一个查询页面中,依次截图并输出

        4、保留生成图片路径,并加载至模板文件中

        5、导出生成文件,下载完成


        遇到的问题:

        1、由于系统中会存在登录验证的问题,在PhantomJS使用的时候,由于我们web系统是需要登录后使用的,这里还涉及到了一些PhantomJS的cookie自动登录的问题,只需要将cookie的key和value加入phantom脚本中,就可以实现自动登录,来请求站点下的所有资源了。

        2、图片输出尽量不要过大,保持200k以内,否则也同样会产生资源消耗。


       经验总结:

       以上是个人一些解决方法的经验和看法,也许还有更好的解决方案,但已经可以满足开发需求。所谓条条大路通罗马,没有最好的,只有更好的,当遇到问题时候尽可能找最优解决方案,这样才能有更好的创新的产品。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,072评论 25 707
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明先生_X自主阅读 15,979评论 3 119
  • 在此之前 我有十个苹果 第一个 我在树下吃了 其余的作了靶子 第二个我用石头将它砸碎 第三个我用弹弓把它射烂 剩...
    龙俊藏诗阁阅读 241评论 0 2
  • 把今天, 细微的光阴、尘埃 擦拭得晶亮。 不预支一粒石子, 明天, 会来的 。
    酷似马阅读 188评论 0 1
  • 年少时,仰卧在草坪上,看满天的星光闪烁,那么清澈、轻盈、明亮,自然会流溢出愉悦的情思。 现如今在高楼顶上观...
    烽火煤阅读 181评论 0 1