Flash Player渲染的Fusion Charts图表无法打印显示的解决方案咨询
解决Flash Fusion Charts无法打印的问题
我太懂你现在的头疼了——用Flash Player生成的Fusion Charts图表,不管是直接调用window.print()还是用html2canvas转成图片,打印时就是没法正常显示。下面给你几个实测可行的方案,你可以挨个试试:
方法1:用Fusion Charts自带的打印API
其实Fusion Charts本身就内置了打印功能,关键是要让JS能和Flash组件通信:
- 先修改你embed标签里的参数,把
registerWithJS=0改成registerWithJS=1,这样JavaScript才能调用Flash对象的方法。 - 然后在页面加个打印按钮,点击时直接调用图表的打印方法:
这个方法会直接触发Flash图表的专属打印流程,能精准捕获图表内容,比打印整个页面靠谱多了。document.getElementById('productSales').print();
方法2:把图表导出为图片再打印
既然html2canvas抓不到Flash内容,那就用Fusion Charts自己的导出功能把图表转成图片:
- 同样要先开启
registerWithJS=1,然后调用导出API生成PNG/JPG:
导出后你可以把图片插入页面的隐藏容器,再触发这个容器的打印,或者让用户下载图片后手动打印。// 导出为PNG格式,可改为JPG document.getElementById('productSales').exportChart({ exportFormat: 'PNG', exportAction: 'download' // 也可以设为'save'存到服务器,按需调整 });
方法3:调整打印样式强制显示Flash
有时候Flash内容不打印是被CSS的打印样式隐藏了,你可以专门给打印媒体加样式:
@media print { embed[type="application/x-shockwave-flash"] { visibility: visible !important; display: block !important; width: 100% !important; height: auto !important; } }
同时检查页面其他元素的打印样式,确保没有把Flash所在的容器给隐藏掉。
方法4:试试浏览器的「另存为PDF」功能
很多浏览器(比如Chrome)的PDF导出对Flash内容的支持比直接打印好:
- 按
Ctrl+P(Windows)或Cmd+P(Mac)调出打印界面 - 在打印机选项里选择「保存为PDF」
- 打开生成的PDF,大概率能看到完整的Flash图表
最后提一句:现在主流浏览器都已经放弃支持Flash Player了,长远来看,建议你把Fusion Charts升级到HTML5版本,这样打印和兼容性问题都会少很多。
内容的提问来源于stack exchange,提问作者Ioana B
相关产品推荐
相关产品推荐

