0

PDFの生成にFlex 4.1とAlivePdfを使用しています。私の要件は次のようなものです:

私はxmlデータの配列を持っています。その配列を反復処理し、グラフを作成し、そのグラフのスクリーン ショットを (ImageSnapshot.captureImage を使用して) 取得し、デスクトップ フォルダーに pdf として保存する必要があります。ここでは、次のコード スニペットを使用しています。

for(count=0; count<limit; count++) {
   var xml:XML = new XML(xmlDataArr[count]);
   displayChart(xml); // this creates entire chart
   storeReportPDF(count);   
}

private function storeGrowthReportPDF(index:int):void {

   var image:ImageSnapshot = ImageSnapshot.captureImage(growthReportChart, 300, new JPEGEncoder);   

   var fs:FileStream = new FileStream();    
   var file: File = File.documentsDirectory.resolvePath("./GrowthReportBatch/growthReport_"+index+".pdf");  
   fs.open(file, FileMode.WRITE);

   var pdfBytes:ByteArray = createGrowthReportPdf (image.data);                     
    fs.writeBytes(pdfBytes); 
    fs.close();
}

たとえば、50 個の xml がある場合、50 個の pdf をその特定の場所に保存する必要があります。問題は、時間がかかりすぎることです。PDFの作成時間を最小限に抑えることはできますか?

4

1 に答える 1

0

ImageSnapshot を高速化するには、次のことを試してください。

  • DPI を下げる (300 ではなく、150 で十分ではないでしょうか?)
  • 私の経験では、JPEGエンコーダーよりも高速なPNGエンコーダーを使用する
于 2012-03-20T08:47:38.867 に答える