2011-01-24 14 views
0

Flexで作成したいくつかのチャートコンポーネントがあります。基本的に私は、ユーザがこれらのチャートのどれを印刷したいのかを選択できる特別なUIを設定しました。それらが印刷ボタンを押すと、選択された各チャートが動的に作成され、コンテナに追加されます。それから、このコンテナをFlexPrintJobに送ります。チャートは実際のページのどこかに表示されますが、上記のように動的に追加されている場合、このコードは正常に動作すなわち画面に表示されていないFlexコンポーネント/チャートを動的に作成して印刷するにはどうすればよいですか?

private function prePrint():void 
    { 
     var printSelection:Box = new Box(); 
     printSelection.percentHeight = 100; 
     printSelection.percentWidth = 100; 
     printSelection.visible = true; 

     if (this.chkMyChart1.selected) 
     { 
      var rptMyChart1:Chart1Panel = new Chart1Panel(); 
      rptMyChart1.percentHeight = 100; 
      rptMyChart1.percentWidth = 100; 
      rptMyChart1.visible = true; 
      printSelection.addChild(rptMyChart1); 
     } 

     print(printSelection); 
    } 


    private function print(container:Box):void 
    { 
     var job:FlexPrintJob; 

     job = new FlexPrintJob(); 

     if (job.start()) { 
      job.addObject(container, FlexPrintJobScaleType.MATCH_WIDTH); 
      job.send(); 
     } 

    } 

はしていません。印刷ダイアログが表示されますが、[OK]を押すと何も起こりません。

だから私は実際には2つの質問がある:

  1. は、彼らが画面上に表示されていないときに、Flexコンポーネント/チャートを印刷することが可能ですか?
  2. もしそうなら、私はそれをどうやって行うのですか?私は間違って何をしていますか?

UPDATE:

まあ、少なくとも一つ間違った幅と高さの割合の私の使用です。パーセンテージを使用することは、ボックスが別のオブジェクトに含まれていない場合には意味をなさない。高さと幅を固定値に変更すると、実際に印刷が進行し、私の最初の問題が解決されます。

printSelection.height = 100; 
    printSelection.width = 100; 

しかし、私のチャートを見る代わりに、代わりにブラックボックスが表示されるという新たな問題が発生します。私は以前にチャートの背景色を#FFFFFFに設定することでこの問題を解決しましたが、今回は動作していないようです。

UPDATE 2:

私は、アプリケーションにコンテナを追加しますが、レイアウトの中に含まれていません日干しサイト上のいくつかの例を見てきました。これは行く方法のように見えます。

printSelection.includeInLayout = false; 
    addChild(printSelection); 
+0

を印刷 はその後行いますこれを動作させることをあきらめた。私はちょうど私が印刷プレビューと呼ばれるページのパネルを作ることになった。私が 'ネット上で見つけたほとんどのページは、あなたがフレックスで印刷しようとしていると言います - **はしません**。 しかし、誰かがこれを行う方法を知っていれば、私はまだ答えに興味があります。 –

答えて

0

すなわち

私は完全にわからないんだけど、自分のアプリケーションの一つで、私は完全なタブナビゲータをプリントアウトしていると私はそれを印刷することが分かってきた唯一の方法は、自動的にTabNavigatorコンテナをスクロールすることですタブをクリックして、それらを印刷ジョブに追加するときに画面にコンポーネントを表示します。

このようにして、すべて印刷されます。 tabnaviagotrを作成する前に、印刷結果を(PDFに)スクロールすると、タブのすべてのページが表示されますが、実際に印刷されたページのみが表示されます。

1

あなたのコンポーネントは、あなたがこのような何かを試す必要がありますので、その内容を描画するために、ステージ上でなければならない:

 
printSelection.visible = false; 

application.addChild(printSelection); 

printSelection.width = ..; 

printSelection.height = ...; 

...最終更新Iとして

関連する問題