Flex 分页预览,分页打印
Flex 打印常使用PrintDataGrid,但会有一些问题,不支持表格单元格合并,有的可能需要打印一些flex组件和容器(VBox, HBox, Text, Image)等。重写flex的Grid表格,Grid类似HTML的table, 能很好支持单元格合并,单元格中加入组件和容器。
自定义PrintDataGrid:
public class PrintDataGrid extends Grid{public static const pageHeight:int = 1023;private var _realWidth:int;public function PrintDataGrid(){this.horizontalScrollPolicy = ScrollPolicy.OFF;this.verticalScrollPolicy = ScrollPolicy.OFF;super();}public function addGridRow(gridRow:RowGrid):void {addCells(gridRow.getAvailableCell(), gridRow.height);}private function addCells(cells:Array, height:Number):void {var gridRow:GridRow = new GridRow();for each(var cell:GridCell in cells) {gridRow.addChild(cell);}gridRow.height = height;this.addChild(gridRow);}public function get realWidth():int{return _realWidth;}public function set realWidth(value:int):void{_realWidth = value;}}
Adobe对于多页打印或打印预览都没有提供一个很好的解决办法,但可以根据Grid中GridRow的height,计算自动拆分表格,将一个大的Grid拆分每一个页面一个Grid,进行分页预览和打印。大概的算法:根据每页的height值计算一个页面能存放多少Grid的GridRow,超过的拆分到下一个页面,如果需要拆分的单元格存在被合并的情况,也就是GridItem 中RowSpan > 1, 则需要将一个GridItem,分为两个GridItem,而这两个的GridItem的rowSpan之和为原来的GridItem的RowSpan。
合并单元格拆分:
public function splitRowSpan(gridCellArray:GridCellArray):void {if(cells.length == 0) {return;}for(var i:int = 0; i < cells.length; i++) {var gridCell:GridCell = cells[i] as GridCell;if(gridCell == null) {continue;}var splitCell:GridCell = null;if (gridCell.isRemove) {splitCell = gridCell.mergerCell;}if (splitCell == null) {continue;}if (gridCell.rNum == splitCell.rNum) {continue;}var orgRowSpan:int = splitCell.rowSpan;var extRowSpan:int = gridCell.rNum - splitCell.rNum;var content:DisplayObject = splitCell.getChildAt(0);var topCellHeight:Number = getExtRowSpanHeight(splitCell.rNum, splitCell.rNum + extRowSpan, gridCellArray);var bottomCellHeight:Number = getExtRowSpanHeight(splitCell.rNum + extRowSpan, splitCell.rNum + splitCell.rowSpan, gridCellArray);splitCell.rowSpan = extRowSpan;splitCell.height = topCellHeight;if(topCellHeight < bottomCellHeight) {splitCell.removeAllChildren();}var bottomCell:GridCell = splitCell.newGridCell();bottomCell.rowSpan = orgRowSpan - extRowSpan;bottomCell.colSpan = splitCell.colSpan;bottomCell.height = bottomCellHeight;bottomCell.rNum = gridCell.rNum;bottomCell.cNum = gridCell.cNum;if(topCellHeight < bottomCellHeight) {bottomCell.addChild(content);}var gridRow:RowGrid = gridCellArray.getRowGrid(gridCell.rNum);gridRow.setCell(bottomCell, bottomCell.cNum);if (bottomCell.rowSpan > 1 || bottomCell.colSpan > 1) {gridCellArray.mergerGridCell(bottomCell);}}}
原文出处:http://www.anyrt.com/blog/list/201609131739.html
Flex 分页预览,分页打印相关推荐
- Excel使用记录之分页预览与打印标题
1.打印多页表格时建议使用分页预览,保证上下页之间连贯 2.设置了冻结首行窗格的,想要将每一页打印的内容都包含这个标题,可以使用打印标题选项
- vue-pdf+element实现全屏窗口pdf分页预览,pdf打印实现和解决打印乱码
一.源码 vue-pdf打印实现和乱码解决https://download.csdn.net/download/lucky_fang/85498529 二.全屏窗口打印预览效果 分页预览pdf 窗口采 ...
- VUE 前端PDF分页预览、下载
一.安装PDF插件依赖 // pdf预览 npm install vue-pdf --save// pdf下载 npm install downloadjs 二.完整示例 <template&g ...
- 在线文件/文档预览/分页分片预览 之开源kkfileview(word转pdf,pdf截取,pdf转图片,Aspose jobConverter , OpenOffice ,libreoffice )
前提说明 浏览器不能直接浏览word文件,但可以浏览pdf文件!!! 可以后台把word,excel 转成成pdf.然后给前端预览: 业界常用的开源工具有:Aspose jobConverter , ...
- FineReport JS实现分页预览改变鼠标悬停所在的行列的背景色
一:需求描述 1)鼠标滑过及悬停时改变行的颜色. 2)鼠标滑过及悬停时改变列的颜色. 3)鼠标滑过及悬停时改变同时行和列的颜色. 二:实现思路 鼠标滑入悬停时,先遍历获取该行所有单元格的原背景色,再遍 ...
- [财务][数据化分析][帆软]报表设计-分页预览
[财务][数据化分析][帆软]报表设计-分页预览 1. 概述 分页预览即普通预览模式,FineReport 的默认预览方式,一般在只需要查看报表数据用于分析的时候使用. 下面我们以内置的 Gettin ...
- EXCEL分页预览 网格线
视图--分页预览 工具--选项--视图---网格线 转载于:https://blog.51cto.com/tunder168/720100
- 帆软报表获取单元格的值的几种方式,包括分页预览,填报预览,新填报预览
帆软报表获取单元格的值的方式在分页预览,填报预览,新填报预览都是不同的,没有统一的方式,这给使用者带来一定的不便.现在总结一下. 分页预览: getCellValue: function (cellP ...
- 在网页中调用打印预览及打印设置
在网页中调用打印预览及打印设置 以下内容为程序代码: <OBJECT id=WB classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 heig ...
最新文章
- 翻译java_翻译示例代码
- Sun x4500作为文件服务器的调优
- 吴恩达深度学习课程deeplearning.ai课程作业:Class 1 Week 2 assignment2_1
- 数据结构Java01【数据结构概述、数组基本使用】
- 顺序查找与二分查找算法
- Python-类基础
- Whats the difference between git reset --mixed, --soft, and --hard?
- Linux进程间通信——消息队列
- Angular07 利用angular打造管理系统页面
- java性能优化权威指南_《Java性能优化权威指南》PDF 下载
- Linux下载Mysql
- 云科技网络验证源码_APK云科技网络验证-APK一键加网络验证一键加弹窗引流
- Ubuntu下使用外置USB无线网卡
- html 鼠标形状箭头,CSS各种鼠标样式介绍
- 诺基亚、罗永浩,中国手机2014八大关键词
- 1553B通信项目开发笔记(四)bu61580程序编写,实现回环之RT端
- vue子组件给父组件传值时接收不到数据
- 2012意大利之行3:罗马的路和车_我是亲民_新浪博客
- Java如何输入一个不知道长度的数组
- 开放教育公共事业管理(教育管理)本科综合实践环节实施方案