Linux 转换创建大量tmp临时文件问题

image.png (17.7 KB)

请问一下,我们使用的是aspose-pdf-java 19.10的版本。
有时候转换过程中,会生产大量的.tmp文件在/tmp目录中,会导致磁盘被占用满的情况。
这个临时文件什么情况下会生成?需要怎么处理?

@modongning

您是否可以通过共享示例文件和代码段来共享正在执行的转换类型。另外,请共享完整的环境详细信息,例如OS名称和版本,JDK版本等。我们将在我们的环境中测试该场景并进行相应处理。

手机登记.pdf (35.3 KB)
2020_初中_语文_长期班_部编版_七年级_寒假_尖子班_第1讲_读懂·小说_教师讲义-15981.pdf (606.7 KB)

docSaveOptions.setFormat(DocSaveOptions.DocFormat.DocX);
docSaveOptions.setMode(0);
document.save(convertedFilePath, docSaveOptions);

以上是文件和代码片段。
另外跟文件应该没有关系,测试过多个不同文件。发现pdf 转换word文档,当 mode = 0 的情况时,才会生成临时文件aspose__.tmp类似的文件。

OS:Linux 4.15.0-45-generic #48-Ubuntu SMP Tue Jan 29 16:28:13 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
JDK:java version “1.8.0_201”

@modongning

我们已在问题跟踪系统中将调查凭单记录为PDFJAVA-39105。我们将在详细信息中进一步调查该方案,并向您发布故障单解决状态。请给我们一点时间。

我们对造成的不便很抱歉。

@modongning

我们对票证进行了进一步调查,发现这不是错误。当使用系统字体时,我们使用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个最后使用的临时文件,并且不允许在处理过程中将其删除。
Java不允许处理其他情况。

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

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

另外,您可以配置单独的temp文件夹,以便在启动主代码之前为aspose进程添加属性:

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

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

web应用是无法做到停机调用ShutdownHook,这些大量的tmp文件应该怎么操作?

@1304726077

我们已将您的询问记录在关联的凭单下,并在收到反馈后立即通知您。请给我们一些时间。

@1304726077

每次完成文档转换过程并保存结果时,您都可以在工作的Web应用程序期间清除临时文件,从而调用更干净的内部临时文件。

MemoryCleaner.clearAllTempFiles();