调用了close、dispose后,还需要专门关闭输入、输出流吗?

使用产品:Aspose.PDF For java

调用了close、dispose后,还需要专门关闭输入、输出流吗?
2a5ef0026723535e4202354eb317362.png (22.9 KB)

emf、wmf文件转换过程中内存没有释放,有解决办法吗?

bb399698f25796b6bec55344c93c8a3.png (38.4 KB)

@SupportDhorde

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;
}

@aaaConvert

看起来您在一个项目中使用了多个 Aspose API。 EmfMetafileImage 没有在 Aspose.PDF 中作为公共成员提供。但是,它存在于 Aspose.Imaging for Java API 中。 Aspose.Imaging 在 Aspose.PDF 中用作内部部分,因此该类被混淆。现在您可以使用EmfImage

你说的EmfImage是 com.aspose.imaging.fileformats.emf.EmfImage 吗?

@aaaConvert

我们正在 线程中回复您的其他类似询问。