Это, очевидно, известная ошибка с библиотекой печати Flex и элементами управления Scroller.Вы можете прочитать о моих дискуссиях по этому вопросу здесь: http://forums.adobe.com/message/3626759
В качестве обходного пути я сделал следующее:
var printer:FlexPrintJob = new FlexPrintJob();
// Display the print dialog to the user. If they choose a printer
// and click "print", this method will return true, and we will
// spool the job to the printer they selected. If they hit cancel,
// this method will return false, and we will not attempt to send
// anything to the printer.
if(printer.start()){
// Add some padding before spooling the object to the printer.
// This will give it a reasonable margin on the printout.
itemsToPrintContainer.paddingBottom = 100;
itemsToPrintContainer.paddingTop = 100;
itemsToPrintContainer.paddingLeft = 100;
itemsToPrintContainer.paddingRight = 100;
this.removeElement(itemsToPrintContainer);
FlexGlobals.topLevelApplication.addElement(itemsToPrintContainer);
printer.addObject(itemsToPrintContainer);
printer.send();
FlexGlobals.topLevelApplication.removeElement(itemsToPrintContainer);
this.addElement(itemsToPrintContainer);
// Reset the margins to 0 for display on the screen.
itemsToPrintContainer.paddingBottom = 0;
itemsToPrintContainer.paddingTop = 0;
itemsToPrintContainer.paddingLeft = 0;
itemsToPrintContainer.paddingRight = 0;
}
То, что я делаю, - это перемещение объекта, который я хочу напечататьвне скроллера, распечатайте его, а затем переместите обратно внутрь скроллера, чтобы пользователь не знал о каких-либо изменениях.Пользователь может увидеть короткую вспышку на экране, пока все переставляется, но для моего случая это было приемлемо.
Кроме того, заполнение было попыткой добавить поле для моего печатного материала.Это не будет работать правильно, если у вас есть несколько страниц.Возможно, вы не захотите добавлять отступы в вашем конкретном случае.
-Josh