'FlexPrintJob'에 해당되는 글 1건

  1. 2013.07.05 FlexPrintJob
반응형
FlexPrintJob

패키지 mx.printing
클래스 public class FlexPrintJob
상속 FlexPrintJob Inheritance Object

언어 버전:  ActionScript 3.0
제품 버전:  Flex 3
런타임 버전:  Flash Player 9, AIR 1.1

 

Was this helpful?Yes   No

 

 

The FlexPrintJob class is a wrapper for the flash.printing.PrintJob class. It supports automatically slicing and paginating the output on multilple pages, and scaling the grid contents to fit the printer's page size.

 

예제 보기

기타 예제

추가 정보


 


공용 속성
  속성 정의 주체
  Inherited constructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다.
Object
    pageHeight : Number
[읽기 전용] The height of the printable area on the printer page; it does not include any user-set margins.
FlexPrintJob
    pageWidth : Number
[읽기 전용] The width of the printable area on the printer page; it does not include any user-set margins.
FlexPrintJob
    printAsBitmap : Boolean
Specifies whether to print the job content as a bitmap (true) or in vector format (false).
FlexPrintJob
공용 메서드
  메서드 정의 주체
   
Constructor.
FlexPrintJob
   
addObject(obj:IUIComponent, scaleType:String = "matchWidth"):void
Adds a UIComponent object to the list of objects being printed.
FlexPrintJob
  Inherited
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다.
Object
  Inherited
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다.
Object
  Inherited
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다.
Object
   
Sends the added objects to the printer to start printing.
FlexPrintJob
  Inherited
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다.
Object
   
Initializes the PrintJob object.
FlexPrintJob
  Inherited
로캘별 규칙에 따라 서식이 지정된 이 객체의 문자열 표현을 반환합니다.
Object
  Inherited
지정된 객체의 문자열 표현을 반환합니다.
Object
  Inherited
지정된 객체의 프리미티브 값을 반환합니다.
Object
속성 세부 정보

pageHeight

속성
pageHeight:Number  [읽기 전용]

 

언어 버전:  ActionScript 3.0
제품 버전:  Flex 3
런타임 버전:  Flash Player 9, AIR 1.1

 

 

The height of the printable area on the printer page; it does not include any user-set margins. It is set after start() method returns.



구현
    public function get pageHeight():Number

pageWidth

속성  
pageWidth:Number  [읽기 전용]

 

언어 버전:  ActionScript 3.0
제품 버전:  Flex 3
런타임 버전:  Flash Player 9, AIR 1.1

 

 

The width of the printable area on the printer page; it does not include any user-set margins. This property is set after start() method returns.



구현
    public function get pageWidth():Number

printAsBitmap

속성  
printAsBitmap:Boolean

언어 버전:  ActionScript 3.0
제품 버전:  Flex 3
런타임 버전:  Flash Player 9, AIR 1.1

 

 

Specifies whether to print the job content as a bitmap (true) or in vector format (false). Printing as a bitmap supports output that includes a bitmap image with alpha transparency or color effects. If the content does not include any bitmap images with alpha transparency or color effects, you can print in higher quality vector format by setting the printAsBitmap property to false.

기본값: true.



구현
    public function get printAsBitmap():Boolean
    public function set printAsBitmap(value:Boolean):void
생성자 세부 정보

FlexPrintJob

() 생성자
public function FlexPrintJob()

 

언어 버전:  ActionScript 3.0
제품 버전:  Flex 3
런타임 버전:  Flash Player 9, AIR 1.1

 

Constructor.

메서드 세부 정보

addObject

() 메서드
public function addObject(obj:IUIComponent, scaleType:String = "matchWidth"):void

언어 버전:  ActionScript 3.0
제품 버전:  Flex 3
런타임 버전:  Flash Player 9, AIR 1.1

 

 

Adds a UIComponent object to the list of objects being printed. Call this method after the start() method returns. Each call to this method starts a new page, so you should format your objects in page-sized chunks. You can use the PrintDataGrid class to span a data grid across multiple pages.

매개 변수

obj:IUIComponent — The Object to be printed.
 
scaleType:String (default = "matchWidth") — The scaling technique to use to control how the object fits on one or more printed pages. Must be one of the constant values defined in the FlexPrintJobScaleType class.

 

관련 API 요소

send

() 메서드  
public function send():void

언어 버전:  ActionScript 3.0
제품 버전:  Flex 3
런타임 버전:  Flash Player 9, AIR 1.1

 

 

Sends the added objects to the printer to start printing. Call this method after you have used the addObject() method to add the print pages.

start

() 메서드  
public function start():Boolean

언어 버전:  ActionScript 3.0
제품 버전:  Flex 3
런타임 버전:  Flash Player 9, AIR 1.1

 

 

Initializes the PrintJob object. Displays the operating system printer dialog to the user. Flex sets the pageWidth and pageHeight properties after this call returns.

 

반환값
Booleantrue if the user clicks OK when the print dialog box appears, or false if the user clicks Cancel or if an error occurs.
FormPrintHeader.mxml
<?xml version="1.0"?>
<!-- Custom control for the header area of the printed page. -->
<s:VGroup name="FormPrintHeader"
        xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        width="60%"
        horizontalAlign="right" >

    <s:Label text="This is a placeholder for first page contents"/>

</s:VGroup>
FormPrintFooter.mxml
<?xml version="1.0"?>
<!-- Custom control for the footer area of the printed page. -->
<s:VGroup name="FormPrintFooter"
        xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        width="60%"
        horizontalAlign="right" >

    <!-- Declare and initialize the product total variable. -->
    <fx:Script>
        <![CDATA[
            [Bindable]
            public var pTotal:Number = 0;
        ]]>
    </fx:Script>

    <s:Label text="Product Total: {pTotal}"/>

</s:VGroup>
FormPrintView.mxml
<?xml version="1.0"?>
<!-- Custom control to print the Halo DataGrid control on multiple pages. -->
<s:VGroup name="FormPrintView"
        xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:mx="library://ns.adobe.com/flex/mx"
        xmlns="*">

    <fx:Script>
        <![CDATA[
            import mx.core.*;

            // Declare and initialize the variables used in the component.
            // The application sets the actual prodTotal value.
            [Bindable]
            public var pageNumber:Number = 1;

            [Bindable]
            public var prodTotal:Number = 0;

            // Control the page contents by selectively hiding the header and
            // footer based on the page type.
            public function showPage(pageType:String):void {
                if (pageType == "first" || pageType == "middle") {
                    // Hide the footer.
                    footer.includeInLayout = false;
                    footer.visible = false;
                }
                if (pageType == "middle" || pageType == "last") {
                    // The header won't be used again; hide it.
                    header.includeInLayout = false;
                    header.visible = false;
                }
                if (pageType == "last") {
                    // Show the footer.
                    footer.includeInLayout = true;
                    footer.visible = true;
                }
                //Update the DataGrid layout to reflect the results.
                validateNow();
            }
        ]]>
    </fx:Script>

    <!-- The template for the printed page, with the contents for all pages. -->
    <s:VGroup width="80%" horizontalAlign="left">
        <s:Label text="Page {pageNumber}"/>
    </s:VGroup>

    <FormPrintHeader id="header" />

    <!-- 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="myDataGrid" width="60%" height="100%">
        <!-- Specify the columns to ensure that their order is correct. -->
        <mx:columns>
            <mx:DataGridColumn dataField="Index" />
            <mx:DataGridColumn dataField="Qty" />
        </mx:columns>
    </mx:PrintDataGrid>

    <!-- Create a FormPrintFooter control and set its prodTotal variable. -->
    <FormPrintFooter id="footer" pTotal="{prodTotal}" />

</s:VGroup>
PrintDataGridExample.mxml
<?xml version="1.0"?>
<!-- Main application to print a Halo DataGrid control on multiple pages. -->
<s:Application name="PrintDataGridExample.mxml"
        xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:mx="library://ns.adobe.com/flex/mx"
        initialize="initData();">

    <fx:Script>
        <![CDATA[

        import mx.printing.*;
        import mx.collections.ArrayCollection;
        import FormPrintView;
        import mx.core.FlexGlobals;

        // Declare variables and initialize simple variables.
        [Bindable]
        public var dgProvider:ArrayCollection;
        public var footerHeight:Number = 20;
        public var prodIndex:Number;
        public var prodTotal:Number = 0;


        // Data initialization.
        public function initData():void {
            // Create the data provider for the DataGrid control.
            dgProvider = new ArrayCollection;
        }

        // Fill the dgProvider ArrayCollection with the specified items.
        public function setdgProvider(items:int):void {
            prodIndex=1;
            dgProvider.removeAll();
            for (var z:int=0; z<items; z++) {
                var prod1:Object = {};
                prod1.Qty = prodIndex * 7;
                prod1.Index = prodIndex++;
                prodTotal += prod1.Qty;
                dgProvider.addItem(prod1);
            }
        }

        // The function to print the output.
        public function doPrint():void {
            var printJob:FlexPrintJob = new FlexPrintJob();
            if (printJob.start()) {
                // Create a FormPrintView control as a child of the current view.
                var thePrintView:FormPrintView = new FormPrintView();
                FlexGlobals.topLevelApplication.addElement(thePrintView);

                //Set the print view properties.
                thePrintView.width=printJob.pageWidth;
                thePrintView.height=printJob.pageHeight;
                thePrintView.prodTotal = prodTotal;
                // Set the data provider of the FormPrintView component's data grid
                // to be the data provider of the displayed data grid.
                thePrintView.myDataGrid.dataProvider = myDataGrid.dataProvider;
                // Create a single-page image.
                thePrintView.showPage("single");
                // If the print image's data grid can hold all the provider's rows,
                // add the page to the print job.
                if (!thePrintView.myDataGrid.validNextPage)  {
                    printJob.addObject(thePrintView);
                }
                // Otherwise, the job requires multiple pages.
                else {
                    // Create the first page and add it to the print job.
                    thePrintView.showPage("first");
                    printJob.addObject(thePrintView);
                    thePrintView.pageNumber++;
                    // Loop through the following code until all pages are queued.
                    while (true) {
                        // Move the next page of data to the top of the print grid.
                        thePrintView.myDataGrid.nextPage();
                        thePrintView.showPage("last");
                        // If the page holds the remaining data, or if the last page
                        // was completely filled by the last grid data, queue it for printing.
                        // Test if there is data for another PrintDataGrid page.
                        if (!thePrintView.myDataGrid.validNextPage) {
                            // This is the last page; queue it and exit the print loop.
                            printJob.addObject(thePrintView);
                            break;
                        } else {
                            // This is not the last page. Queue a middle page.
                            thePrintView.showPage("middle");
                            printJob.addObject(thePrintView);
                            thePrintView.pageNumber++;
                        }
                    }
                }
                // All pages are queued; remove the FormPrintView control to free memory.
                FlexGlobals.topLevelApplication.removeElement(thePrintView);
            }
            // Send the job to the printer.
            printJob.send();
        }
        ]]>
    </fx:Script>

    <s:Panel title="DataGrid Printing Example"
            width="75%" height="75%"
            horizontalCenter="0" verticalCenter="0">
        <s:VGroup left="10" right="10" top="10" bottom="10">
            <mx:DataGrid id="myDataGrid" dataProvider="{dgProvider}">
                <mx:columns>
                    <mx:DataGridColumn dataField="Index"/>
                    <mx:DataGridColumn dataField="Qty"/>
                </mx:columns>
            </mx:DataGrid>

            <s:Label width="100%" color="blue"
                text="Specify the number of lines and click Fill Grid first. Then you can click Print."/>

            <s:TextInput id="dataItems" text="35"/>

            <s:HGroup>
                <s:Button id="setDP" label="Fill Grid" click="setdgProvider(int(dataItems.text));"/>
                <s:Button id="printDG" label="Print" click="doPrint();"/>
            </s:HGroup>
        </s:VGroup>
    </s:Panel>

</s:Application>
Posted by 1010