0

フレックス印刷ジョブを使用してデータグリッドからデータを印刷しようとしています。グリッドには、データで満たされた約40行があります。

しかし、印刷しようとするとアプリがクラッシュしますが、一部のページが印刷されました。

これが私のコードです:

protected function openPrintDialogMonth():void {
                doPrintingMonth();
        }
        protected function doPrintingMonth():void {
            var printjob2:FlexPrintJob;
            var printTemplate:printTemplate = new printTemplate();
            var printDataGrid:PrintDataGrid;


            printjob2 = new FlexPrintJob();
            if( printjob2.start() )
            {
                var currentYear:Date = new Date();

                var dataArray:Array = new Array();
                trace( "Width/Height:", printjob2.pageWidth, "/", printjob2.pageHeight );

                printDataGrid = new PrintDataGrid();
                printTemplate.width = 1368;
                printTemplate.height = 800;


                printTemplate.data = gridReport.dataProvider;
                printTemplate.editData();

                printTemplate.year = String(currentYear.getFullYear());

                printTemplate.printDataGrid.columns = gridReport.columns;
                printTemplate.printDataGrid.columnWidth = gridReport.columnWidth;
                printTemplate.printDataGrid.visible = true;
                printTemplate.printDataGrid.showHeaders = true;
                printTemplate.printDataGrid.sizeToPage = true;

                printTemplate.scaleX = 1.00;

                printTemplate.validateNow();

                this.addElement( printTemplate );



                if( !printTemplate.printDataGrid.validNextPage ) 
                {
                    printjob2.addObject( printTemplate,FlexPrintJobScaleType.MATCH_WIDTH);
                    this.removeElement( printTemplate );
                }
                else 
                {
                    printjob2.addObject( printTemplate,FlexPrintJobScaleType.MATCH_WIDTH);
                    this.removeElement( printTemplate );

                    while( true ) 
                    {
                        printTemplate.printDataGrid.nextPage();
                        printjob2.addObject( printTemplate,FlexPrintJobScaleType.MATCH_WIDTH);

                        if( !printTemplate.printDataGrid.validNextPage )
                            break;
                    }
                }

                printjob2.send();
            }
        }
4

1 に答える 1

0

今日、Adobe Air を使用した Flash で同じ問題が発生しました。私の場合、印刷ジョブを開始する前に、最初に表示オブジェクトをステージに追加する必要がありました。それをディスプレイリストに追加すると、おそらく印刷ジョブに必要な再描画が強制されます。

于 2012-10-17T16:59:33.983 に答える