1

現在、複数ページのドキュメントを印刷する際にイライラする問題が発生しています。基本的に、ステージ (printArea) に 1 つのムービークリップがあり、ローダー コンポーネントを使用して読み込まれた画像、データグリッド コンポーネント、およびその他のさまざまな要素を含むいくつかの要素が含まれています。

このムービー クリップは、1 ページのテンプレートとして機能します。オプションを調整し、[ページを追加] をクリックして、2 ページ目用にもう一度変更します。私が抱えている問題は、ページを配列に追加して、後で addPage() を使用してループすることです。私が理解している限り、スプライトまたはムービー クリップを addPage に渡すのが最適です。ムービー クリップを複製してから、すべてのコンポーネントをデータ、サイズ設定、および配置セットで再初期化するのは、完全にやり過ぎだと思います。1 つのインスタンスからモデル化された複数のページが必要なため、ムービークリップ自体を渡すことはできません。ムービー クリップを単純にラスタライズして addPage() に渡す方法はありますか? これは私が現在見つけた唯一の解決策ですが、印刷の品質は悲惨です:

//So let's say I want to add the movie clip's current state to the array :

multiPages.push(duplicateMC(printArea));
function duplicateMC(mc)
{
    var tempImg:BitmapData = new BitmapData(mc.width,mc.height);
    tempImg.draw(mc);
    var fullImg = new Bitmap(tempImg);
    var newImg = DisplayConverter.bitmapToSprite(fullImg,true);
    multiPages.push(newImg);
}

//DisplayConverter function in a seperate file (Snagged this online somewhere) :

public static function bitmapToSprite(bitmap:Bitmap, smoothing:Boolean = false):Sprite
{
    var sprite:Sprite = new Sprite();
    sprite.addChild( new Bitmap(bitmap.bitmapData.clone(), "auto", smoothing));
    return sprite;
}

事前に感謝します。これは私にとって一日中大きな苦痛でした。

4

1 に答える 1

1

複雑にしすぎないでください。
スケーリングしていないため、スナップやスムージングをオンにしないでください。画像が歪んで品質が低下します。
「画像/BMD」を配列に保存して、印刷時に参照できるようにします。BMD を超えて保存すると、メモリが無駄になります。

function doMyPrinting( ):void{
  for each( var item:BitmapData in multiPages){
    var page:Sprite = new Sprite();
    page.addChild(new Bitmap(item));
    printJob.addPage(page);
  }
}





multiPages.push(duplicateMC(printArea));
function duplicateMC(mc):void
{
    var tempImg:BitmapData = new BitmapData(mc.width,mc.height);
    tempImg.draw(mc);
    multiPages.push(tempImg);
}
于 2013-02-05T21:59:00.343 に答える