0

我正在使用 Flex 4.1 和 AlivePdf 来生成 pdf。我的要求如下:

我有一组 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 就足够了?)
  • 使用 PNG 编码器,根据我的经验,它比 JPEG 编码器快
于 2012-03-20T08:47:38.867 回答