使用产品:Aspose.PDF For java
调用了close、dispose后,还需要专门关闭输入、输出流吗?
2a5ef0026723535e4202354eb317362.png (22.9 KB)
emf、wmf文件转换过程中内存没有释放,有解决办法吗?
bb399698f25796b6bec55344c93c8a3.png (38.4 KB)
使用产品:Aspose.PDF For java
调用了close、dispose后,还需要专门关闭输入、输出流吗?
2a5ef0026723535e4202354eb317362.png (22.9 KB)
emf、wmf文件转换过程中内存没有释放,有解决办法吗?
bb399698f25796b6bec55344c93c8a3.png (38.4 KB)
dispose() 和 close() 方法具有相同的目的,即它们从内存中清除对象。但是,请共享一个包含示例源文件的示例控制台应用程序,以便我们可以尝试在我们的环境中复制该问题并相应地解决它。还请指定您使用的 API 的版本。
示例代码如下:
@SuppressWarnings("resource")
public static boolean convert(String fromPath, String toPath) {
WmfMetafileImage wfmMetafile = null;
try {
wfmMetafile = new WmfMetafileImage(fromPath);
// metafile.setDpi(300);
wfmMetafile.save(toPath, new PngOptions());
wfmMetafile.close();
wfmMetafile.dispose();
wfmMetafile = null;
return true;
} catch (Exception e) {
if (wfmMetafile != null) {
wfmMetafile.close();
wfmMetafile.dispose();
wfmMetafile = null;
}
}
EmfMetafileImage emfMetafile = null;
try {
emfMetafile = new EmfMetafileImage(fromPath);
if (StringUtils.endsWithIgnoreCase(toPath, ".jpg")) {
emfMetafile.save(toPath, new JpegOptions());
} else {
emfMetafile.save(toPath, new PngOptions());
}
emfMetafile.close();
emfMetafile.dispose();
emfMetafile = null;
return true;
} catch (Exception e) {
if (emfMetafile != null) {
emfMetafile.close();
emfMetafile.dispose();
emfMetafile = null;
}
}
return false;
}
看起来您在一个项目中使用了多个 Aspose API。 EmfMetafileImage
没有在 Aspose.PDF 中作为公共成员提供。但是,它存在于 Aspose.Imaging for Java API 中。 Aspose.Imaging 在 Aspose.PDF 中用作内部部分,因此该类被混淆。现在您可以使用EmfImage
。
你说的EmfImage是 com.aspose.imaging.fileformats.emf.EmfImage 吗?