Как печатать во Flex без исчезновения компонентов пользовательского интерфейса - PullRequest
0 голосов
/ 01 сентября 2011

Я печатаю из flex, и, поскольку я хочу настроить задания, такие как поля и заголовок, я создал компонент PrintTemplate пользовательского интерфейса.Я добавляю свои вещи в PrintTemplate, а затем печатаю их.

Итак, код выглядит примерно так:

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

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

Проблема в том, что компоненты пользовательского интерфейса исчезают с того места, где они должны бытьстраницы, когда вы добавляете их в шаблон печати.Это выглядит странно, хотя вы можете добавить их позже.Есть ли способ обойти это - остановить их исчезновение, когда я добавлю их в шаблон?

1 Ответ

2 голосов
/ 01 сентября 2011

Компонент не может быть дочерним по отношению к двум контейнерам одновременно, поэтому вы не сможете отобразить их в исходном контейнере.

Однако вы можете сделать снимок компонента, который хотите распечататьи отобразить его в 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
    }
...