我正在使用包含允許用戶打印文檔(如工資單)的功能的Adobe AIR(2.0)應用程序。這些文件原爲PDF格式。由於情況,我們無法在AIR應用程序中直接顯示這些PDF(例如,使用flash.html.HTMLLoader)。因此,我們將PDF轉換爲SWF(使用pdf2swf工具,請參閱http://www.swftools.org/)。的SWF文件正在使用mx.controls.SWFLoader加載到應用程序,例如:從AIR/Flex應用程序打印會導致大文件被髮送到打印機
<mx:SWFLoader
id="salarySlipImage"
loaderContext="{someLoaderContext}"
trustContent="true"
maintainAspectRatio="true"
scaleContent="true"
source="{salarySlip.swf}" />
其中salarySlip.swf是包含SWF的內容的ByteArray。
接下來,我們有一個按鈕,啓動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();
}
這工作得很好(文件開過來了打印機和好看) ,但我注意到發送到打印機的文件有時會變得非常大,例如> 100MB(!!!),這可能需要相當長的一段時間才能到達打印機,例如> 30s(顯然取決於在連接速度t o打印機)。原始PDF大約150KB,SWF大約100KB。
使用mx.printing Flex API進行打印時是否有人遇到類似的問題?如果是這樣,我該如何解決這個問題?
最好的問候,
鮑勃