今天搞定了Proposal Tool v2.0的PDF报表生成模块。简单总结一下我所使用的解决方案。
需求
需求是要根据用户选择的历史数据,动态的生成一系列的折线图、饼图、柱状图,然后将这些图表整合到一个PDF文件中。PDF中的文本也是动态的和可修改的。
工具
开发语言使用PHP;图表生成工具使用了强大的pChart库;生成PDF的库选择了dompdf。
pChart将直接生成图片文件,很方便的就可以作多种用途。(pChart和jqPlot的比较,可参考我之前的文章:《图表生成工具pChart和jqPlot》)
dompdf简单易用,可直接将HTML转换成PDF。API十分简洁。不过dompdf有一些限制,它不支持position:relative/absolute, 不支持嵌套表格,不支持float等等(其他限制参考dompdf官方网站)。所以布局比较复杂的页面用它来处理会比较吃力。
解决思路
分3步解决
- 使用pChart将数据转换成图表,并存储为图片文件,保存在临时存储区中
- 使用PHP的模板引擎定制HTML,并在其中引用上一步中生成的图片文件
- 使用dompdf将上一步中的HTML转换为PDF文件,删除临时存储区中的图片文件