在itextpdf中报告问题。
问题概述 - 使用FontFactory获取嵌入字体会导致文件句柄泄漏。
动机或用例 - 嵌入字体有助于确保多语种最终用户始终拥有可用于生成的PDF的正确字体。当Web服务生成数千个带有嵌入字体的PDF时,如果没有更多文件句柄,系统最终会停止运行。
回归 - 否
操作系统 - 在OS X 10.10.5和CentOS 6.6中重现。没有在Windows下测试。
重现错误 - 请参阅 ITextFileLeak.zip
相关问题 - 无法找到以前报告的实例。
建议修复:
diff --git a/itext/src/main/java/com/itextpdf/text/pdf/TrueTypeFont.java b/itext/src/main/java/com/itextpdf/text/pdf/TrueTypeFont.java
index 1ccaa76..5d59872 100644
--- a/itext/src/main/java/com/itextpdf/text/pdf/TrueTypeFont.java
+++ b/itext/src/main/java/com/itextpdf/text/pdf/TrueTypeFont.java
@@ -855,11 +855,8 @@ class TrueTypeFont extends BaseFont {
readBbox();
}
} finally {
- //TODO: For embedded fonts, the underlying data source for the font will be left open until this TrueTypeFont object is collected by the Garbage Collector. That may not be optimal.
- if (!embedded) {
rf.close();
rf = null;
- }
}
}