Details
-
Type:
Bug
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 3.0
-
Fix Version/s: 4.0 - Beta, 4.0
-
Component/s: Core/Parsing
-
Labels:None
-
Environment:java version "1.6.0_10"
linux
Description
When viewing some CMYK pdf files the color seems wrong (in my case black instead of red).
The reason for this seems to be that not all CMYK values are provided (in my case only MYK values). This can be fixed by applying the following patch
File: ./src/org/icepdf/core/pobjects/graphics/DeviceN.java
public Color getColor(float[] f) {
if (func == null) {
if (alternate.getNumComponents() > f.length) {
float[] ftmp = new float[alternate.getNumComponents()];
for (int index = 0; index < f.length && index < names.size(); index++) {
if (names.get(index).equals("Cyan")) {
ftmp[0] = f[index];
}
if (names.get(index).equals("Magenta")) {
ftmp[1] = f[index];
}
if (names.get(index).equals("Yellow")) {
ftmp[2] = f[index];
}
if (names.get(index).equals("Black")) {
ftmp[3] = f[index];
}
}
f = ftmp;
}
float y[] = new float[alternate.getNumComponents()];
for (int i = 0; i < Math.min(y.length, f.length); i++) {
y[i] = f[i];
}
return alternate.getColor(y);
}
float y[] = func.calculate(f);
if (colorspaces[0] != null) {
return colorspaces[0].getColor(reverse(y));
}
return alternate.getColor(reverse(y));
}
The reason for this seems to be that not all CMYK values are provided (in my case only MYK values). This can be fixed by applying the following patch
File: ./src/org/icepdf/core/pobjects/graphics/DeviceN.java
public Color getColor(float[] f) {
if (func == null) {
if (alternate.getNumComponents() > f.length) {
float[] ftmp = new float[alternate.getNumComponents()];
for (int index = 0; index < f.length && index < names.size(); index++) {
if (names.get(index).equals("Cyan")) {
ftmp[0] = f[index];
}
if (names.get(index).equals("Magenta")) {
ftmp[1] = f[index];
}
if (names.get(index).equals("Yellow")) {
ftmp[2] = f[index];
}
if (names.get(index).equals("Black")) {
ftmp[3] = f[index];
}
}
f = ftmp;
}
float y[] = new float[alternate.getNumComponents()];
for (int i = 0; i < Math.min(y.length, f.length); i++) {
y[i] = f[i];
}
return alternate.getColor(y);
}
float y[] = func.calculate(f);
if (colorspaces[0] != null) {
return colorspaces[0].getColor(reverse(y));
}
return alternate.getColor(reverse(y));
}
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion
Field | Original Value | New Value |
---|---|---|
Attachment | uniekekans.pdf [ 11742 ] |
Attachment | uniekekans.pdf [ 11742 ] |
Attachment | uniekekans_test verloop.pdf [ 11743 ] |
Salesforce Case | [] | |
Fix Version/s | 3.1 [ 10181 ] |
Status | Open [ 1 ] | In Progress [ 3 ] |
Salesforce Case | [] | |
Affects Version/s | 3.2 [ 10212 ] | |
Affects Version/s | 3.0 [ 10180 ] |
Salesforce Case | [] | |
Fix Version/s | 3.2 [ 10212 ] | |
Fix Version/s | 3.1 [ 10181 ] | |
Affects Version/s | 3.0 [ 10180 ] | |
Affects Version/s | 3.2 [ 10212 ] |
Status | In Progress [ 3 ] | Resolved [ 5 ] |
Resolution | Fixed [ 1 ] |
Fix Version/s | 4.0 [ 10222 ] |
Status | Resolved [ 5 ] | Closed [ 6 ] |