26.10.控制打印未知长度的多页内容

26.10.1. 问题
我想控制超过多页打印内容的布局,但是我不知道到底有多少数据将被打印以及组件的尺寸。
26.10.2. 解决办法
如果你要打印表格式数据,需要使用PrintDataGrid组件控制多页内容的打印。PrintDataGrid组件可控制变化的重复的多页打印内容。
26.10.3. 讨论
如果你有表格式的数据,比如数据报表,就可以使用PrintDataGrid组件格式化数据打印多页内容了。PrintDataGrid组件是一个特定的数据表格,设计用于打印多页内容的数据,下面的例子MultipageDataGrid.mxml,利用PrintDataGrid打印报表数据:
+展开
-ActionScript
public function print():void
{
var printJob:FlexPrintJob = new FlexPrintJob();
if (printJob.start())
{
var printGrid:PrintDataGrid = new PrintDataGrid();
printGrid.width = printJob.pageWidth;
printGrid.height = printJob.pageHeight;
printGrid.columns = populationGrid.columns;
printGrid.dataProvider = populationData.state;
printGrid.visible = false;
Application.application.addChild(printGrid);
printJob.addObject(printGrid);
while (printGrid.validNextPage)
{
printGrid.nextPage();
printJob.addObject(printGrid);
}
printJob.send();
Application.application.removeChild(printGrid);
}
}

当使用PrintDataGrid时,你需要设置大小以匹配页面尺寸。添加表格到打印任务将添加第一页,使用validNextPage属性测试是否还有额外页面的数据,通过nextPage方法准备好下一页打印数据。

灵活使用PrintDataGrid组件可以帮你格式化各种类型的打印数据。PrintDataGrid并没有限制只用于打印表格式文本,PrintDataGrid可与项渲染器组合生成如图表,图像或复杂的组件。

下面的例子GridSquares.mxml,PrintDataGrid与项渲染器组合生成相同的红色方框集合-ManualMultiPage.mxml:
+展开
-ActionScript
public function print(itemSize:int, itemCount:int):void
{
var printData:Array = new Array();
for (var i:int = 0; i < itemCount; i++)
{
printData.push(itemSize);
}
var column:DataGridColumn = new DataGridColumn();
column.headerText = "";
column.itemRenderer = new ClassFactory(SquareRenderer);
var printGrid:PrintDataGrid = new PrintDataGrid();
printGrid.showHeaders = false;
printGrid.visible = false;
printGrid.setStyle("horizontalGridLines"false);
printGrid.setStyle("verticalGridLines"false);
printGrid.setStyle("borderStyle""none");
printGrid.columns = [column];
printGrid.dataProvider = printData;
Application.application.addChild(printGrid);
var printJob:FlexPrintJob = new FlexPrintJob();
if (printJob.start())
{
printGrid.width = printJob.pageWidth;
printGrid.height = printJob.pageHeight;
printJob.addObject(printGrid);
while (printGrid.validNextPage)
{
printGrid.nextPage();
printJob.addObject(printGrid);
}
rintJob.send();
}
Application.application.removeChild(printGrid);
}

加支付宝好友偷能量挖...


评论(0)网络
阅读(87)喜欢(0)flash/flex/fcs/AIR