如何在没有UI组件的情况下在Flex中打印消失

时间:2011-09-01 14:02:43

标签: flex printing flex4.5

我正在从flex打印,因为我想自定义作业,例如边距和标题,我创建了一个UI组件PrintTemplate。我将我的东西添加到PrintTemplate然后我打印它。

所以代码类似于:

printTemplate.addElement(diagram);
addElement(printTemplate);

if (printJob.start()) {
  printJob.addObject(printTemplate);
  printJob.send()
}

问题是,当您将组件添加到printTemplate时,UI组件将从页面上的位置消失。这看起来很奇怪,即使您可以稍后再添加它们。有没有办法解决这个问题 - 当我将它们添加到模板时阻止它们消失?

1 个答案:

答案 0 :(得分:2)

组件不能同时是两个容器的子组件,因此您无法在原始容器中显示它们。

但是,您可以拍摄要打印的组件的快照,并将其作为该组件的第一个子项显示在BitmapImage中。打印完成后,只需删除BitmapImage。

    private function displaySnapshot():void
    {
        var bitmapData:BitmapData = new  BitmapData(_displayObject.width,_displayObject.height,false);
        bitmapData.draw(_displayObject,null,null,null,null,true);
        _snapshotImage = new Bitmap(bitmapData);
        _displayObject.addChildAt(_snapshotImage,0);
        _displayObject.visible = false; //optional
    }

    private function removeSnapshot(event:Event):void
    {
        EventDispatcher(event.target).removeEventListener(event.type,arguments.callee);
        _displayObject.parent.removeChild(_snapshotImage);
        _displayObject.visible = true
    }