невозможно сделать снимок экрана и сохранить как PDF в Flex 4.1 - PullRequest
0 голосов
/ 06 сентября 2011

Я использую 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?

1 Ответ

0 голосов
/ 20 марта 2012

Чтобы сделать ImageSnapshot быстрее, вы можете попробовать:

  • уменьшить DPI (вместо 300, может быть, 150 достаточно?)
  • с использованием кодера PNG, что - по моему опыту- быстрее, чем кодер JPEG
...