Apache flex 如何提高purePDF的性能?

Apache flex 如何提高purePDF的性能?,apache-flex,performance,api,printing,pdf-generation,Apache Flex,Performance,Api,Printing,Pdf Generation,我在Flex AIR应用程序中使用开源PurePDF库。问题在于性能: 生成PDF需要100%的CPU使用率和太长的时间 我对它做了一些分析,并且 发现以pdf格式编写的文本是 昂贵的。这就是为什么我需要知道我该怎么做 可以提高性能。是 是否有pdf格式的字体 发电成本较低,或者 是否有一些设置或提示可以做到这一点 在以下方面处理得更好一些 表演 其次,对于图像,ImageElement生成在将元素写入PDF时非常昂贵。有没有办法减少处理 与此同时,我找到了一种减少ImageElement生

我在Flex AIR应用程序中使用开源PurePDF库。问题在于性能:

生成PDF需要100%的CPU使用率和太长的时间

  • 我对它做了一些分析,并且 发现以pdf格式编写的文本是 昂贵的。这就是为什么我需要知道我该怎么做 可以提高性能。是 是否有pdf格式的字体 发电成本较低,或者 是否有一些设置或提示可以做到这一点 在以下方面处理得更好一些 表演

  • 其次,对于图像,ImageElement生成在将元素写入PDF时非常昂贵。有没有办法减少处理

与此同时,我找到了一种减少ImageElement生成处理的方法,方法是使用flex调整图像大小,然后将小图像的位图数据传递给图像元素。它工作得很好,而且我在很大程度上缩短了执行时间。还有其他人对其他问题有想法吗?

  • 是否有任何方法可以告诉PDF分块工作,或者以这样的方式划分工作,即可能需要更多的时间来完成,但不会在生成PDF时阻塞GUI
请帮忙,先谢谢你

有没有什么方法可以告诉PDF分块工作,或者将工作划分为可能需要更多时间才能完成的部分,但在生成PDF之前不要让GUI停止

您可以通过生成线程使生成异步。。。我在flash中想出的最好的方法是使用以下代码:

import flash.utils.setTimeout;
import flash.events.Event;
import flash.events.EventDispatcher;
...
    setTimeout(function():void {
        //TODO asynchronous schtuff
        dispatchEvent(new Event(Event.COMPLETE));
    }, 0);

使用purePDF优化PDF生成的方法是通过不时创建组件将purePDF组件生成的工作分块进行,并通过图像大小调整解决主要问题

因为图像需要时间来嵌入到PDF中,并且在这个过程中所花费的时间与图像大小成正比

因此,首先减小图像的大小,然后将其嵌入PDF(请记住,如果图像的大小被大幅度减小,则会大大降低图像的质量)继续试验,以获得最佳大小,从而使PDF生成具有足够的质量和速度


最后一件事是避免使用透明图像,因为它们需要更多的处理,仅在需要时使用透明,否则使用白色背景的图像

正如在问题中提到的,它需要全部CPU,即使我按照您的要求这样做,我也无法处理purePDF工作,因为它在内部完成所有工作,即使您让purePDF在单独的线程中完成它的工作,GUI也会停止吗?即使它占用了整个CPU,如果它正在做一些事情,比如写一个文件,那么它的线程应该偶尔暂停,这样你的GUI线程就可以继续…在flex中没有线程,即使asyc进程不是扩展线程flex也没有线程。最后,每件事都以时间线的框架结束,就像在flash中一样,因为flex在flash player中运行。这有点傻,只有文件加载可以异步完成。。。很抱歉浪费了您的时间。@jswolf19:正如moon所说,您实际上并没有产生线程。您所做的是将函数的执行推迟到下一帧,在下一帧中它将同步运行。