PDFCharProcs.java
6.07 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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/*
* Decompiled with CFR 0_118.
*
* Could not load the following classes:
* com.adobe.internal.io.stream.InputByteStream
* com.adobe.internal.pdftoolkit.core.cos.CosArray
* com.adobe.internal.pdftoolkit.core.cos.CosObject
* com.adobe.internal.pdftoolkit.core.exceptions.PDFCosParseException
* com.adobe.internal.pdftoolkit.core.exceptions.PDFIOException
* com.adobe.internal.pdftoolkit.core.exceptions.PDFInvalidDocumentException
* com.adobe.internal.pdftoolkit.core.exceptions.PDFInvalidParameterException
* com.adobe.internal.pdftoolkit.core.exceptions.PDFSecurityException
* com.adobe.internal.pdftoolkit.core.types.ASName
*/
package com.adobe.internal.pdftoolkit.pdf.graphics.font;
import com.adobe.internal.io.stream.InputByteStream;
import com.adobe.internal.pdftoolkit.core.cos.CosArray;
import com.adobe.internal.pdftoolkit.core.cos.CosObject;
import com.adobe.internal.pdftoolkit.core.exceptions.PDFCosParseException;
import com.adobe.internal.pdftoolkit.core.exceptions.PDFIOException;
import com.adobe.internal.pdftoolkit.core.exceptions.PDFInvalidDocumentException;
import com.adobe.internal.pdftoolkit.core.exceptions.PDFInvalidParameterException;
import com.adobe.internal.pdftoolkit.core.exceptions.PDFSecurityException;
import com.adobe.internal.pdftoolkit.core.types.ASName;
import com.adobe.internal.pdftoolkit.pdf.content.Content;
import com.adobe.internal.pdftoolkit.pdf.content.Instruction;
import com.adobe.internal.pdftoolkit.pdf.content.NoopOperatorHandler;
import com.adobe.internal.pdftoolkit.pdf.content.processor.ConditionalContentStreamProcessor;
import com.adobe.internal.pdftoolkit.pdf.content.processor.IConditionalOperatorHandler;
import com.adobe.internal.pdftoolkit.pdf.document.PDFContents;
import com.adobe.internal.pdftoolkit.pdf.document.PDFCosDictionaryMap;
import com.adobe.internal.pdftoolkit.pdf.document.PDFCosObject;
import com.adobe.internal.pdftoolkit.pdf.document.PDFCosObjectContainer;
import com.adobe.internal.pdftoolkit.pdf.document.PDFDocument;
/*
* This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6.
*/
public class PDFCharProcs
extends PDFCosDictionaryMap<PDFContents> {
private PDFCharProcs(CosObject cosObject) throws PDFInvalidDocumentException {
super(cosObject);
}
public static PDFCharProcs getInstance(CosObject cosObject) throws PDFInvalidDocumentException {
if (PDFCosObject.checkNullCosObject(cosObject) == null) {
return null;
}
PDFCharProcs pdfObject = PDFCosObject.getCachedInstance(cosObject, PDFCharProcs.class);
if (pdfObject == null) {
pdfObject = new PDFCharProcs(cosObject);
}
return pdfObject;
}
@Override
protected PDFContents itemInstantiator(CosObject cosObject) throws PDFInvalidDocumentException {
return PDFContents.getInstance(cosObject);
}
public void set(ASName name, PDFContents charProc) throws PDFInvalidDocumentException, PDFIOException, PDFSecurityException {
CosObject cosObj = charProc.getCosObject();
if (cosObj instanceof CosArray) {
InputByteStream data = charProc.getContents();
PDFCosDictionaryMap.super.put(name, PDFContents.getInstance((CosObject)PDFCharProcs.newCosStream(this.getPDFDocument(), data)));
} else {
PDFCosDictionaryMap.super.put(name, charProc);
}
}
public double getWidth(ASName name) throws PDFIOException, PDFInvalidDocumentException, PDFSecurityException {
double width = 0.0;
PDFContents charProcStm = (PDFContents)this.get((Object)name);
if (charProcStm == null) {
return width;
}
WidthHandler handler = new WidthHandler(false);
ConditionalContentStreamProcessor proc = new ConditionalContentStreamProcessor(handler);
proc.process(Content.newInstance(charProcStm, null));
return handler.getWidth();
}
public double getCTMScaledWidth(ASName name) throws PDFIOException, PDFInvalidDocumentException, PDFSecurityException {
double width = 0.0;
PDFContents charProcStm = (PDFContents)this.get((Object)name);
if (charProcStm == null) {
return width;
}
WidthHandler handler = new WidthHandler(true);
ConditionalContentStreamProcessor proc = new ConditionalContentStreamProcessor(handler);
proc.process(Content.newInstance(charProcStm, null));
return handler.getWidth();
}
private class WidthHandler
extends NoopOperatorHandler {
private double width;
private boolean ctmScaledWidth;
private boolean continueProcessing;
public WidthHandler(boolean ctmScaledWidth) {
this.width = 0.0;
this.ctmScaledWidth = ctmScaledWidth;
this.continueProcessing = true;
}
public double getWidth() {
return this.width;
}
public boolean continueProcesing() {
return this.continueProcessing;
}
public void d0(double wx, double wy, Instruction instruction) throws PDFInvalidDocumentException, PDFIOException, PDFSecurityException {
this.width = wx;
if (!this.ctmScaledWidth) {
this.continueProcessing = false;
}
}
public void d1(double wx, double wy, double llx, double lly, double urx, double ury, Instruction instruction) throws PDFInvalidDocumentException, PDFIOException, PDFSecurityException {
this.width = wx;
if (!this.ctmScaledWidth) {
this.continueProcessing = false;
}
}
public void cm(double a, double b, double c, double d, double e, double f, Instruction instruction) throws PDFInvalidDocumentException, PDFIOException, PDFSecurityException {
if (this.ctmScaledWidth) {
this.width *= a;
}
}
public void BI(Instruction instruction) throws PDFInvalidDocumentException, PDFIOException, PDFSecurityException {
if (this.ctmScaledWidth) {
this.continueProcessing = false;
}
}
}
}