我正在从flex打印,因为我想自定义作业,例如边距和标题,我创建了一个UI组件PrintTemplate。我将我的东西添加到PrintTemplate然后我打印它。
所以代码类似于:
printTemplate.addElement(diagram);
addElement(printTemplate);
if (printJob.start()) {
printJob.addObject(printTemplate);
printJob.send()
}
问题是,当您将组件添加到printTemplate时,UI组件将从页面上的位置消失。这看起来很奇怪,即使您可以稍后再添加它们。有没有办法解决这个问题 - 当我将它们添加到模板时阻止它们消失?
答案 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
}