ICEpdf
  1. ICEpdf
  2. PDF-15

Wrong color in view when CMYK doesn't provide all values

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major 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));
          }

        Activity

        Repository Revision Date User Message
        ICEsoft Public SVN Repository #19698 Mon Nov 16 08:22:10 MST 2009 patrick.corless PDF-15 updated DeviceN colour space to handle CMYK alternative colour space correctly. From community member Roy Van Der Kuil.
        Files Changed
        Commit graph MODIFY /icepdf/trunk/icepdf/core/src/org/icepdf/core/pobjects/graphics/DeviceN.java

          People

          • Assignee:
            Patrick Corless
            Reporter:
            Roy Van Der Kuil
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: