Spire.PDF is a professional PDF library applied to creating, writing, editing, handling and reading PDF files without any external dependencies. Get free and professional technical support for Spire.PDF for .NET, Java, Android, C++, Python.
Fri Jul 25, 2025 4:08 am
我在每个线程下都使用:
- Code: Select all
PdfDocument pdfDocument = new PdfDocument(absolutePdfPath);
PdfTextReplaceOptions textReplaceOptions = new PdfTextReplaceOptions();
textReplaceOptions.setReplaceType(EnumSet.of(ReplaceActionType.IgnoreCase, ReplaceActionType.WholeWord));
PdfPageCollection pages = pdfDocument.getPages();
replaceMap.forEach((key, value) -> {
for (int i = 0; i < pages.getCount(); i++) {
PdfPageBase page = pages.get(i);
PdfTextReplacer textReplacer = new PdfTextReplacer(page);
textReplacer.setOptions(textReplaceOptions);
textReplacer.replaceAllText(key, value);
textReplacer.dispose();
}
});
pdfDocument.saveToFile(pressPdfPath, FileFormat.PDF);
pdfDocument.dispose();
但是发现堆内存一直增加,直到出现OOM错误,pdfDocument.dispose();没有起作用吗?还是要所有线程都处理完毕才进行回收?
同时还有一个疑问,为什么没有deep clone方法?
-

PiZhai09
-
- Posts: 13
- Joined: Mon Jul 14, 2025 7:14 pm
Fri Jul 25, 2025 4:12 am
同时发现不使用多线程,多个PDF依次进行处理也有一摸一样的问题!
-

PiZhai09
-
- Posts: 13
- Joined: Mon Jul 14, 2025 7:14 pm
Fri Jul 25, 2025 7:34 am
您好,
感谢您的询问。
关于文本替换功能内存消耗过高的问题,我们开发团队正在进行优化,预计将于下月完成。优化版本发布后,我会第一时间通知您。
另外,想向您进一步了解:关于deepclone()您想具体需要实现怎样的功能呢?能否详细说明您的使用场景和需求?
Sincerely,
Talia
E-iceblue support team
-


talia.liu
-
- Posts: 341
- Joined: Mon Apr 14, 2025 3:33 am
Mon Jul 06, 2026 7:23 am
您好,
感谢您的耐心等待。
我们最新发布的Spire.PDF for Java版本: 12.7.0(
https://www.e-iceblue.cn/Downloads/Spire-PDF-JAVA.html)优化了pdf替换关键字内存占用问题。请升级到最新版本并在使用textReplacer替换关键字后,调用textReplacer.dispose()方法进行内存释放。欢迎更新测试,期待您的测试反馈!
Sincerely,
Talia
E-iceblue support team
-


talia.liu
-
- Posts: 341
- Joined: Mon Apr 14, 2025 3:33 am