Я работаю над приложением Adobe AIR (2.0), которое содержит функцию, позволяющую пользователям печатать документы (например, квитанции о зарплате).Эти документы изначально в формате PDF.В силу обстоятельств мы не можем напрямую отображать эти PDF-файлы в приложении AIR (например, с помощью flash.html.HTMLLoader).Поэтому мы конвертируем PDF-файлы в SWF-файлы (с помощью инструмента pdf2swf, см. http://www.swftools.org/).. SWF-файлы загружаются в приложение с помощью mx.controls.SWFLoader, например:
<mx:SWFLoader
id="salarySlipImage"
loaderContext="{someLoaderContext}"
trustContent="true"
maintainAspectRatio="true"
scaleContent="true"
source="{salarySlip.swf}" />
где salarySlip.swf - это ByteArray, содержащий содержимое SWF.
Далее у нас есть кнопка, запускающая FlexPrintJob, например:
<mx:Button label="Print" click="print()" />
и так:
public function print():void {
var printJob:FlexPrintJob = new FlexPrintJob();
if (printJob.start() != true) {
return;
}
printJob.addObject(salarySlipImage, FlexPrintJobScaleType.MATCH_HEIGHT);
printJob.send();
}
Это работает довольно хорошо (документы выходят из принтера и выглядят хорошо), хотя я заметил, что файлы, отправляемые на принтер, могут иногда становиться очень большими, например> 100 МБ (!!!), что может занять некоторое время, чтобы добраться до принтера, например> 30 с (очевидно, в зависимости от скорости соединения с принтером). Оригинальные PDF-файлы имеют размер около 150 КБ, а SWF-файлы около 100 КБ.
Кто-нибудьпри печати с использованием API-интерфейсов Flex mx.printing возникают похожие проблемы? Если да, то как это исправить?
С уважением,
Боб