2012-05-13 20 views
0

Flex 3.2でFlexPrintJobを使用してテーブルを印刷しようとしています。私は通常の印刷動作が必要です - すべての行が1ページに収まる場合は1ページ、複数のページを満たすのに十分なデータがある場合は部分的に塗りつぶされたページが続きます。どういうわけか、私は各ページがテーブルヘッダーを持っている1行あたりのページを取得し、1行のデータとそれに続く空きスペースが続きます。Flex 3.2:FlexPrintJobは、1ページあたり1行のPrintDataGridを出力します。

15行のテーブルの結果、15ページのドキュメントになります。私はFirefoxとIE8で同じ動作をします。

この現象の原因は何ですか? ご協力いただきありがとうございます!

 // The function to print the output. 
    public function onPrint():void { 
     var printJob:FlexPrintJob = new FlexPrintJob(); 
     printJob.start(); 

     var thePrintView:FormPrintView = new FormPrintView(); 
     addChild(thePrintView); 
     thePrintView.initPrintDataGrid(openSequences); 
     // thePrintView.printOpenTimeGrid.dataProvider = printOpenTime.dataProvider; 
     thePrintView.validateNow(); 

     thePrintView.width=printJob.pageWidth; 
     thePrintView.height=printJob.pageHeight; 

     printJob.addObject(thePrintView, FlexPrintJobScaleType.MATCH_WIDTH); 

     while (thePrintView.printOpenTimeGrid.validNextPage) { 
      //Put the next page of data in the view. 
      thePrintView.printOpenTimeGrid.nextPage(); 
      //Queue the additional page. 
      printJob.addObject(thePrintView, FlexPrintJobScaleType.MATCH_WIDTH); 
     } 

     printJob.send(); 
     removeChild(thePrintView); 
     this.onClose(); 
    } 

のPrintDataGridがTitleWindowのオブジェクトに直接配置されています:

<!-- The data grid. The sizeToPage property is true by default, so the last 
    page has only as many grid rows as are needed for the data. --> 
<mx:PrintDataGrid id="printOpenTimeGrid" dataProvider="{openSequences}" sizeToPage="true" width="100%" height="100%"> 
    <mx:columns> 
     <mx:DataGridColumn dataField="startDate" headerText="Seq Date" width="70"> 
      <mx:itemRenderer> 
       <mx:Component> 
        <mx:VBox> 
         <mx:DateFormatter id="startDateFormatter" formatString="M/D/YYY"/> 
         <mx:Label fontWeight="bold" text="{startDateFormatter.format(data.startDate)}"/> 
        </mx:VBox> 
       </mx:Component> 
      </mx:itemRenderer> 
     </mx:DataGridColumn> 
     <mx:DataGridColumn dataField="equipCode" headerText="EQP" width="40" /> 
     <mx:DataGridColumn dataField="base" headerText="BSE" width="40" /> 
     <mx:DataGridColumn dataField="sequenceNumber" headerText="SEQNO" width="45" /> 
     <mx:DataGridColumn dataField="seat" headerText="ST" width="40" /> 
     <mx:DataGridColumn headerText="DPRT" width="40"> 
      <mx:itemRenderer> 
       <mx:Component> 
        <mx:VBox> 
         <mx:DateFormatter id="departTimeFormatter" formatString="JJNN"/> 
         <mx:Label fontWeight="bold" text="{departTimeFormatter.format(data.startDate)}"/> 
        </mx:VBox> 
       </mx:Component> 
      </mx:itemRenderer> 
     </mx:DataGridColumn> 
     <mx:DataGridColumn dataField="terminationDate" headerText="ARVL/DT" width="60" > 
      <mx:itemRenderer> 
       <mx:Component> 
        <mx:VBox> 
         <mx:DateFormatter id="arvDateFormatter" formatString="JJNN/DD"/> 
         <mx:Label fontWeight="bold" text="{arvDateFormatter.format(data.startDate)}"/> 
        </mx:VBox> 
       </mx:Component> 
      </mx:itemRenderer> 
     </mx:DataGridColumn> 
     <mx:DataGridColumn dataField="tripValue" headerText="TTL" width="50" /> 
     <mx:DataGridColumn dataField="blockType" headerText="Block Type" width="170" /> 
    </mx:columns> 
</mx:PrintDataGrid> 

プリントアウト問題は「高さを追加することによって解決され、この One Row Per Page

答えて

0

のように見えます。ここ

コードです'パラメータをTitledWindowオブジェクト(PrintDataGridのラッパー)に渡します。高さが800に設定されている場合、コンテンツはフルページに印刷され、スクロールバーは表示されません。

<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" title="Open Time" height="800"> 
<mx:Script> 
    <![CDATA[ 
     import mx.collections.ArrayCollection; 
     import mx.core.*; 

     [Bindable] 
     private var openSequences:ArrayCollection; 

     public function initPrintDataGrid(sequences:ArrayCollection):void { 
      openSequences = sequences; 
     } 
    ]]> 
</mx:Script> 

<!-- The data grid. The sizeToPage property is true by default, so the last 
    page has only as many grid rows as are needed for the data. --> 
<mx:PrintDataGrid id="printOpenTimeGrid" dataProvider="{openSequences}" sizeToPage="true" 
    width="100%" height="100%"> 
    <mx:columns> 
関連する問題