SimpleFontDataCache.java
2.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/*
* Decompiled with CFR 0_118.
*
* Could not load the following classes:
* com.adobe.internal.pdftoolkit.core.exceptions.PDFUnableToCompleteOperationException
*/
package com.adobe.internal.pdftoolkit.pdf.content.processor;
import com.adobe.internal.pdftoolkit.core.exceptions.PDFUnableToCompleteOperationException;
import com.adobe.internal.pdftoolkit.pdf.content.processor.CharacterWidthEstimator;
import com.adobe.internal.pdftoolkit.pdf.content.processor.PDFSimpleFontData;
import com.adobe.internal.pdftoolkit.pdf.document.PDFDocument;
import com.adobe.internal.pdftoolkit.pdf.document.listener.DocumentListener;
import com.adobe.internal.pdftoolkit.pdf.document.listener.DocumentListenerProperties;
import com.adobe.internal.pdftoolkit.pdf.document.listener.DocumentListenerRegistry;
import com.adobe.internal.pdftoolkit.pdf.document.listener.DocumentMessage;
import com.adobe.internal.pdftoolkit.pdf.graphics.font.PDFFontSimple;
import java.util.WeakHashMap;
public class SimpleFontDataCache
implements DocumentListener {
private CharacterWidthEstimator characterWidthEstimator;
private boolean enabled = false;
private WeakHashMap<PDFFontSimple, PDFSimpleFontData> simpleFontDataCache = new WeakHashMap();
private SimpleFontDataCache() {
}
public static SimpleFontDataCache getInstance(PDFDocument document) {
DocumentListener existingListener = document.getListenerRegistry().getListener(SimpleFontDataCache.class);
if (existingListener == null) {
SimpleFontDataCache fontDataCache = new SimpleFontDataCache();
fontDataCache.characterWidthEstimator = new CharacterWidthEstimator(fontDataCache);
document.getListenerRegistry().registerListener(SimpleFontDataCache.class, fontDataCache);
return fontDataCache;
}
return (SimpleFontDataCache)existingListener;
}
public PDFSimpleFontData getPDFSimpleFontData(PDFFontSimple font) {
if (!this.enabled) {
return null;
}
PDFSimpleFontData simpleFontData = this.simpleFontDataCache.get(font);
if (simpleFontData == null) {
simpleFontData = new PDFSimpleFontData();
this.simpleFontDataCache.put(font, simpleFontData);
}
return simpleFontData;
}
public CharacterWidthEstimator getCharacterWidthEstimator() {
return this.characterWidthEstimator;
}
public DocumentListenerProperties getProperties() {
return null;
}
public void message(DocumentMessage message) throws PDFUnableToCompleteOperationException {
if (message.getMessageType() == DocumentMessage.SAVE || message.getMessageType() == DocumentMessage.CLOSE || message.getMessageType() == DocumentMessage.FINISH || message.getMessageType() == DocumentMessage.FLUSH_FONTS) {
this.simpleFontDataCache.clear();
}
}
public boolean isEnabled() {
return this.enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
}