我使用Flex 4.1和AlivePdf来生成pdf。我的要求如下:
我有一个xml数据数组。我需要迭代该数组,开发一个图表,截取该图表的屏幕截图(使用imagessnapshot . 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的创建时间?
要使ImageSnapshot更快,您可以尝试:
- 降低DPI(不是300,也许150就足够了?)
- 使用PNG编码器,这-在我的经验-比JPEG编码器