Aspose.PDF for java 将pdf转word,如何提升转换时间

十几kb文件转换时间过长,如何优化

@sailliu

您能否再分享一下API转换文档需要多少时间的更多详细信息? 请共享一些样本PDF文档以及样本代码片段,以便我们可以在我们的环境中测试该方案并进行相应处理。

image.png (19.9 KB)
SpringBoot Web项目案例篇.pdf (1.0 MB)
该资料需要转换15分钟左右,我分配的jvm内存总共32G,新生代20G设备上是足够的,以及发现转换后会遗留临时文件,请问如何清理临时文件

@sailliu

对于临时文件的生成,当使用系统字体时,我们使用java.awt,并且以下方法以这种方式工作(创建临时文件并跟踪它们):

java.awt.Font.createFont(int fontFormat, InputStream fontStream)
java.awt.Font.createFont(int fontFormat, java.io.File fontFile)

当程序正常退出时,JVM将使用ShutdownHook删除临时文件。

https://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html#addShutdownHook(java.lang.Thread)

Java跟踪器会阻止20个上次使用的临时文件,并且不允许在处理期间删除它们。

另外,请注意该方法:MemoryCleaner.clearAllTempFiles(); 从临时目录中仅删除位于子文件夹“ aspose_pdf”中或名称以“ aspose_”开头的文件。并且我们强烈建议您在转换任何文档的过程中不要清除临时文件,因为JVM可能会使Java进程崩溃。

在开始新文档转换之前,必须完成该过程并必须启动清理程序。

您可以在启动主代码之前为Aspose进程配置单独的临时文件夹以添加属性:

System.setProperty("java.io.tmpdir", "D:/tmp");
setLicense();

如果使用内存流来保存字体数据,则Java仍将其保存在temp文件夹中,并在temp文件夹中使用掩码:“ +〜JF *** .tmp”。我们使用掩码“ aspose_ *** .tmp”来分隔由Aspose.PDF生成的临时文件。

此外,我们注意到Aspose.PDF for Java 21.1花费了138秒来处理文件并将其转换为DOCX。

您好,使用附件资料在单元测试中,转换效率是能接受的耗时:32.2秒,而使用 Undertow服务器下则需要耗时2分49秒,请问这种情况如何提高效率《Java多线程编程核心技术》迷你书.pdf (5.8 MB)

您好,目前发现的问题则是在linux系统上转换慢,而windows上几秒内完成怀疑是用了windows上某些库。您建议部署在linux机器还是windows机器

@sailliu

我们在最后测试了该方案,并注意到该API在Windows环境中花费了2分钟。 当您的单元测试将32秒的时间用于转换处理时,请您分享一下您身边的Java堆大小。

除了字体外,没有其他差异会影响Windows或Linux环境中的API。 您可以确保Linux服务器中安装了所有Windows字体,以便API不会查找转换期间要使用的任何其他字体。 另外,请共享您Linux环境的完整名称和版本详细信息,以便我们进一步为您提供帮助。