Flex 打印功能的相關資料

http://livedocs.adobe.com/flex/3_cn/flash/printing/PrintJob.html 

http://hi.baidu.com/_678/blog/item/2b6fedc4d6104ba18226acb0.html/cmtid/ea780af32563c0c20b46e04e

Flex提供兩種打印方法:FlexPrintJob和PrintJob。 

一、由於flex是打印圖像的緣故,打印出來的文字、表格會不清晰。解決方法如下: 

1、將FlexPrintJob中printAsBitmap屬性設置爲true。 
2、使用PrintJob 

二、打印縮放的解決方法 

1、FlexPrintJob.addObject()中 scaleType 可以使用 FlexPrintJobScaleType,FlexPrintJobScaleType中定義了縮放的幾種常見方式。 

<pre> 

2、PrintJob默認爲不縮放輸出,如需要縮放可以使用 scale 屬性 


    var pj:PrintJob = new PrintJob(); 
    var xScale:Number; 
    var yScale:Number; 
        xScale = (pj.pageWidth / this.height); 
        yScale = (pj.pageHeight / this.width); 
    this.scaleX= Math.min(xScale, yScale); 
    this.scaleY = Math.min(xScale, yScale); 
    pj.addPage(this); 
    pj.send(); 

三、打印的橫向和縱向的控制 

1、判斷打印方向 

利用 PrintJob.orientation(圖像打印方向) 判斷,PrintJob.orientation == PrintJobOrientation.LANDSCAPE 或者 PrintJobOrientation.PORTRAIT(LANDSCAPE表示橫向打印;PORTRAIT表示縱向打印) 

2、如需改變方向 


   this.rotation = 90; 即表示旋轉90度 

3、轉動後文字消失問題 

絕大多數文字在轉動後會出現消失問題,是由於字體的緣故。有兩個解決方法: 

(1)將字體加載到文件中,該方法缺點是對於中文而言消耗大,通常達到幾M,英文常在幾十K內。也可以用外嵌字體,將字體打包成另外一個swf文件,然後由主flash文件去外部調用 

<pre> 
   @font-face 
      { 
fontFamily: "simhei"; 
src: url("assets/simhei.ttf"); 
fontWeight: normal; 
      } 
    global 
      { 
fontFamily: "simsun"; 
fontWeight: normal; 
fontSize: 10; 
color:#000000; 
      } 
</pre> 
<pre> 
    private function completeHandle(e:Event):void{ 
        fontClass = Object(e.target.content).loaderInfo.applicationDomain.getDefinition("Font1") as Class     
        Font.registerFont(fontClass); 
        tt.styleName = "myPlainStyle" 
         tt.rotation = 30; 
    } 
</pre> 

(2)使用Bitmap和Bitmapdata類,將文字轉化爲圖像後再轉動。該方法消耗小,但是文字有可能失真,而且對每個文字組件都要進行轉換。 
    var bmp:BitmapData = new BitmapData(aa.width,aa.height,true); 
        bmp.draw(aa); 
    var bt:Bitmap = new Bitmap(bmp); 
    var img:Image = new Image(); 
        img.source = bt; 
        img.x = 200; 
        img.y = 200; 
        img.rotation = 120; 
        addChild(img); 

轉動後顯示圖像頁會隨之改變所以打印發送完畢後,要將顯示的內容再旋轉會去,參考http://jessewarden.com/2008/09/forcing-landscape-printing-in-flex-2-3.html 

4、多頁打印可使用PrintJob,請參見adobe使用示例 

http://livedocs.adobe.com/flex/3_cn/flash/printing/PrintJob.html 
發佈了0 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章