2012-07-20 117 views
0

我試圖用flex printjob從datagrid打印數據。在網格中約有40條線路充滿了數據。Flex打印作業崩潰

但是,當我嘗試打印時,應用程序崩潰,但打印了一些頁面。

這裏是我的代碼:

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(); 
      } 
     } 
+0

當應用程序「崩潰」發生任何錯誤時,您是否驗證過您正在瀏覽器中使用Flash Player調試播放器。 – shaunhusain 2012-07-20 17:57:48

+0

我在Adobe空氣中使用打印功能。如果打印文件更長,只會出現一些頁面 – galileoGalilei 2012-07-21 15:03:28

回答

0

今天有同樣的問題在Flash中使用Adobe空氣。在我的情況下,我必須在開始打印作業之前將displayobject添加到舞臺上。將其添加到顯示列表中會強制重新繪製printjob可能需要的重繪。