加载幻灯片《22.8》,文档《22.7》,PDF文件《22.7》时候,如果文件损坏,会导致程序卡死,线程卡住或者OOM,有没有办法提前判断,防止OOM
@denis.shvydkiy
Hello,
- 里面的pdf文件正常,但是加载一直卡死,
- txt文件损坏,使用words的sdk读取,会OOM
- 里面的pptx文件使用wps打开正常,用Microsoft PowerPoint打开提示修复,用slides的sdk加载会报错
文件地址,一天有效期,
@Rivan, 我负责 Aspose.Words,所以我只分析了你的 TXT 文件问题。 其他文件类型将由相应产品的支持人员处理。 我建议为每个 Aspose 产品创建单独的线程。
关于 TXT 文件的问题,我能够使用以下代码重现 Aspose.Words for Java 23.5 的 OOM 问题:
Document doc = new Document("txt转图片用22.7版本words_sdk.txt");
doc.save("out.pdf");
接下来,我发现这个TXT文件实际上是一个RAR压缩文件。 您可以将文件扩展名从 TXT 更改为 RAR 并解压缩。
然后我检查了 Microsoft Word 在打开此类文件时的行为。 首先,Microsoft Word 显示文件转换对话框,您可以在其中看到 Rar 标题(屏幕截图中以红色标记):
如果在此对话框中按下“确定”,则 Microsoft Word 会挂起一段时间并消耗超过 1.5GB 的 RAM:
一段时间后,Microsoft Word 显示无法处理该文件的错误对话框:
Aspose.Words 和 Microsoft Word 都不能检测扩展名为 TXT 的文件是否不是文本文件。 所以你基本上可以将大型视频文件重命名为 TXT 文件并尝试打开它们并获得意想不到的结果。
OOM 可能是由为您的 JDK 设置的内存限制引起的。 由于 TXT 文件非常大,这是预期的行为。
可以在我们的内部问题跟踪数据库中打开一张票,但我需要知道在这种情况下应该如何更改 Aspose.Words。
在您看来,对于这种情况,Aspose.Words 的哪些行为可以被认为是正确的?
@Rivan,
至于 Aspose.Slides,加载 PPTX 文件会在我这边抛出一个 PptxReadException
。 要检查文件是否已损坏,您可以捕获错误并进行处理。 你能解释一下为什么这种方式不适合你吗?
通常,Aspose.Slides 遵循 Microsoft PowerPoint 标准和规范,因此如果 PPTX 文件无法在 Microsoft PowerPoint 中正常打开,Aspose.Slides 将无法打开它并可能抛出异常。 无论如何,我们都会详细评估您的问题并尽快回复您。
@Rivan,
We have opened the following new ticket(s) in our internal issue tracking system and will deliver their fixes according to the terms mentioned in Free Support Policies.
Issue ID(s): SLIDESJAVA-39213
You can obtain Paid Support Services if you need support on a priority basis, along with the direct access to our Paid Support management team.
@Rivan, 要检测文件是否为Word文档,可以使用 FileFormatUtil.detectFileFormat。detectFileFormat 方法并不是 100% 正确,但它可以帮助过滤掉一些不正确的文件。
另请参阅我们的文档:
此线程中描述了从 Word 文档转换为 PDF 时内存使用量较高的类似情况:
https://forum.aspose.com/t/word-pdf/267523/15