Java Code Examples for com.lowagie.text.pdf.PdfDictionary#get()

The following examples show how to use com.lowagie.text.pdf.PdfDictionary#get() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: Image.java    From gcs with Mozilla Public License 2.0 6 votes vote down vote up
/**
 * Reuses an existing image.
 * 
 * @param ref the reference to the image dictionary
 * @throws BadElementException on error
 * @return the image
 */
public static Image getInstance(PRIndirectReference ref) throws BadElementException {
	PdfDictionary dic = (PdfDictionary) PdfReader.getPdfObjectRelease(ref);
	int width = ((PdfNumber) PdfReader.getPdfObjectRelease(dic.get(PdfName.WIDTH))).intValue();
	int height = ((PdfNumber) PdfReader.getPdfObjectRelease(dic.get(PdfName.HEIGHT))).intValue();
	Image imask = null;
	PdfObject obj = dic.get(PdfName.SMASK);
	if (obj != null && obj.isIndirect()) {
		imask = getInstance((PRIndirectReference) obj);
	} else {
		obj = dic.get(PdfName.MASK);
		if (obj != null && obj.isIndirect()) {
			PdfObject obj2 = PdfReader.getPdfObjectRelease(obj);
			if (obj2 instanceof PdfDictionary) {
				imask = getInstance((PRIndirectReference) obj);
			}
		}
	}
	Image img = new ImgRaw(width, height, 1, 1, null);
	img.imageMask = imask;
	img.directReference = ref;
	return img;
}
 
Example 2
Source File: PdfXConformanceImp.java    From gcs with Mozilla Public License 2.0 6 votes vote down vote up
public void completeInfoDictionary(PdfDictionary info) {
    if (isPdfX() && !isPdfA1()) {
        if (info.get(PdfName.GTS_PDFXVERSION) == null) {
            if (isPdfX1A2001()) {
                info.put(PdfName.GTS_PDFXVERSION, new PdfString("PDF/X-1:2001"));
                info.put(new PdfName("GTS_PDFXConformance"), new PdfString("PDF/X-1a:2001"));
            }
            else if (isPdfX32002())
                info.put(PdfName.GTS_PDFXVERSION, new PdfString("PDF/X-3:2002"));
        }
        if (info.get(PdfName.TITLE) == null) {
            info.put(PdfName.TITLE, new PdfString("Pdf document"));
        }
        if (info.get(PdfName.CREATOR) == null) {
            info.put(PdfName.CREATOR, new PdfString("Unknown"));
        }
        if (info.get(PdfName.TRAPPED) == null) {
            info.put(PdfName.TRAPPED, new PdfName("False"));
        }
    }
}
 
Example 3
Source File: Image.java    From itext2 with GNU Lesser General Public License v3.0 6 votes vote down vote up
/**
 * Reuses an existing image.
 * @param ref the reference to the image dictionary
 * @throws BadElementException on error
 * @return the image
 */    
public static Image getInstance(PRIndirectReference ref) throws BadElementException {
    PdfDictionary dic = (PdfDictionary)PdfReader.getPdfObjectRelease(ref);
    int width = ((PdfNumber)PdfReader.getPdfObjectRelease(dic.get(PdfName.WIDTH))).intValue();
    int height = ((PdfNumber)PdfReader.getPdfObjectRelease(dic.get(PdfName.HEIGHT))).intValue();
    Image imask = null;
    PdfObject obj = dic.get(PdfName.SMASK);
    if (obj != null && obj.isIndirect()) {
        imask = getInstance((PRIndirectReference)obj);
    }
    else {
        obj = dic.get(PdfName.MASK);
        if (obj != null && obj.isIndirect()) {
            PdfObject obj2 = PdfReader.getPdfObjectRelease(obj);
            if (obj2 instanceof PdfDictionary)
                imask = getInstance((PRIndirectReference)obj);
        }
    }
    Image img = new ImgRaw(width, height, 1, 1, null);
    img.imageMask = imask;
    img.directReference = ref;
    return img;
}
 
Example 4
Source File: PdfXConformanceImp.java    From itext2 with GNU Lesser General Public License v3.0 6 votes vote down vote up
public void completeInfoDictionary(PdfDictionary info) {
    if (isPdfX() && !isPdfA1()) {
        if (info.get(PdfName.GTS_PDFXVERSION) == null) {
            if (isPdfX1A2001()) {
                info.put(PdfName.GTS_PDFXVERSION, new PdfString("PDF/X-1:2001"));
                info.put(new PdfName("GTS_PDFXConformance"), new PdfString("PDF/X-1a:2001"));
            }
            else if (isPdfX32002())
                info.put(PdfName.GTS_PDFXVERSION, new PdfString("PDF/X-3:2002"));
        }
        if (info.get(PdfName.TITLE) == null) {
            info.put(PdfName.TITLE, new PdfString("Pdf document"));
        }
        if (info.get(PdfName.CREATOR) == null) {
            info.put(PdfName.CREATOR, new PdfString("Unknown"));
        }
        if (info.get(PdfName.TRAPPED) == null) {
            info.put(PdfName.TRAPPED, new PdfName("False"));
        }
    }
}
 
Example 5
Source File: PdfContentStreamProcessor.java    From gcs with Mozilla Public License 2.0 5 votes vote down vote up
@Override
public void invoke(PdfContentStreamProcessor processor, PdfLiteral operator, ArrayList operands) {
	PdfName fontResourceName = (PdfName) operands.get(0);
	float size = ((PdfNumber) operands.get(1)).floatValue();

	PdfDictionary fontsDictionary = processor.resources.getAsDict(PdfName.FONT);
	CMapAwareDocumentFont font = new CMapAwareDocumentFont((PRIndirectReference) fontsDictionary.get(fontResourceName));

	processor.gs().font = font;
	processor.gs().fontSize = size;

}
 
Example 6
Source File: PdfXConformanceImp.java    From gcs with Mozilla Public License 2.0 5 votes vote down vote up
public void completeExtraCatalog(PdfDictionary extraCatalog) {
    if (isPdfX() && !isPdfA1()) {
        if (extraCatalog.get(PdfName.OUTPUTINTENTS) == null) {
            PdfDictionary out = new PdfDictionary(PdfName.OUTPUTINTENT);
            out.put(PdfName.OUTPUTCONDITION, new PdfString("SWOP CGATS TR 001-1995"));
            out.put(PdfName.OUTPUTCONDITIONIDENTIFIER, new PdfString("CGATS TR 001"));
            out.put(PdfName.REGISTRYNAME, new PdfString("http://www.color.org"));
            out.put(PdfName.INFO, new PdfString(""));
            out.put(PdfName.S, PdfName.GTS_PDFX);
            extraCatalog.put(PdfName.OUTPUTINTENTS, new PdfArray(out));
        }
    }
}
 
Example 7
Source File: PdfContentStreamProcessor.java    From itext2 with GNU Lesser General Public License v3.0 5 votes vote down vote up
public void invoke(PdfContentStreamProcessor processor, PdfLiteral operator, ArrayList operands) {
	PdfName fontResourceName = (PdfName) operands.get(0);
	float size = ((PdfNumber) operands.get(1)).floatValue();

	PdfDictionary fontsDictionary = processor.resources.getAsDict(PdfName.FONT);
	CMapAwareDocumentFont font = new CMapAwareDocumentFont(
			(PRIndirectReference) fontsDictionary.get(fontResourceName));

	processor.gs().font = font;
	processor.gs().fontSize = size;

}
 
Example 8
Source File: PdfXConformanceImp.java    From itext2 with GNU Lesser General Public License v3.0 5 votes vote down vote up
public void completeExtraCatalog(PdfDictionary extraCatalog) {
    if (isPdfX() && !isPdfA1()) {
        if (extraCatalog.get(PdfName.OUTPUTINTENTS) == null) {
            PdfDictionary out = new PdfDictionary(PdfName.OUTPUTINTENT);
            out.put(PdfName.OUTPUTCONDITION, new PdfString("SWOP CGATS TR 001-1995"));
            out.put(PdfName.OUTPUTCONDITIONIDENTIFIER, new PdfString("CGATS TR 001"));
            out.put(PdfName.REGISTRYNAME, new PdfString("http://www.color.org"));
            out.put(PdfName.INFO, new PdfString(""));
            out.put(PdfName.S, PdfName.GTS_PDFX);
            extraCatalog.put(PdfName.OUTPUTINTENTS, new PdfArray(out));
        }
    }
}
 
Example 9
Source File: PdfContentStreamProcessorTest.java    From itext2 with GNU Lesser General Public License v3.0 5 votes vote down vote up
private void processBytes(final byte[] pdfBytes, final int pageNumber) throws IOException {
	final PdfReader pdfReader = new PdfReader(pdfBytes);

	final PdfDictionary pageDictionary = pdfReader.getPageN(pageNumber);

	final PdfDictionary resourceDictionary = pageDictionary.getAsDict(PdfName.RESOURCES);

	final PdfObject contentObject = pageDictionary.get(PdfName.CONTENTS);
	final byte[] contentBytes = readContentBytes(contentObject);
	_processor.processContent(contentBytes, resourceDictionary);
}
 
Example 10
Source File: PdfXConformanceImp.java    From gcs with Mozilla Public License 2.0 4 votes vote down vote up
/**
* Business logic that checks if a certain object is in conformance with PDF/X.
   * @param writer	the writer that is supposed to write the PDF/X file
   * @param key		the type of PDF/X conformance that has to be checked
   * @param obj1		the object that is checked for conformance
   */
  public static void checkPDFXConformance(PdfWriter writer, int key, Object obj1) {
      if (writer == null || !writer.isPdfX())
          return;
      int conf = writer.getPDFXConformance();
      switch (key) {
          case PDFXKEY_COLOR:
              switch (conf) {
                  case PdfWriter.PDFX1A2001:
                      if (obj1 instanceof ExtendedColor) {
                          ExtendedColor ec = (ExtendedColor)obj1;
                          switch (ec.getType()) {
                              case ExtendedColor.TYPE_CMYK:
                              case ExtendedColor.TYPE_GRAY:
                                  return;
                              case ExtendedColor.TYPE_RGB:
                                  throw new PdfXConformanceException("Colorspace RGB is not allowed.");
                              case ExtendedColor.TYPE_SEPARATION:
                                  SpotColor sc = (SpotColor)ec;
                                  checkPDFXConformance(writer, PDFXKEY_COLOR, sc.getPdfSpotColor().getAlternativeCS());
                                  break;
                              case ExtendedColor.TYPE_SHADING:
                                  ShadingColor xc = (ShadingColor)ec;
                                  checkPDFXConformance(writer, PDFXKEY_COLOR, xc.getPdfShadingPattern().getShading().getColorSpace());
                                  break;
                              case ExtendedColor.TYPE_PATTERN:
                                  PatternColor pc = (PatternColor)ec;
                                  checkPDFXConformance(writer, PDFXKEY_COLOR, pc.getPainter().getDefaultColor());
                                  break;
                          }
                      }
                      else if (obj1 instanceof Color)
                          throw new PdfXConformanceException("Colorspace RGB is not allowed.");
                      break;
              }
              break;
          case PDFXKEY_CMYK:
              break;
          case PDFXKEY_RGB:
              if (conf == PdfWriter.PDFX1A2001)
                  throw new PdfXConformanceException("Colorspace RGB is not allowed.");
              break;
          case PDFXKEY_FONT:
              if (!((BaseFont)obj1).isEmbedded())
                  throw new PdfXConformanceException("All the fonts must be embedded. This one isn't: " + ((BaseFont)obj1).getPostscriptFontName());
              break;
          case PDFXKEY_IMAGE:
              PdfImage image = (PdfImage)obj1;
              if (image.get(PdfName.SMASK) != null)
                  throw new PdfXConformanceException("The /SMask key is not allowed in images.");
              switch (conf) {
                  case PdfWriter.PDFX1A2001:
                      PdfObject cs = image.get(PdfName.COLORSPACE);
                      if (cs == null)
                          return;
                      if (cs.isName()) {
                          if (PdfName.DEVICERGB.equals(cs))
                              throw new PdfXConformanceException("Colorspace RGB is not allowed.");
                      }
                      else if (cs.isArray()) {
                          if (PdfName.CALRGB.equals(((PdfArray)cs).getPdfObject(0)))
                              throw new PdfXConformanceException("Colorspace CalRGB is not allowed.");
                      }
                      break;
              }
              break;
          case PDFXKEY_GSTATE:
              PdfDictionary gs = (PdfDictionary)obj1;
              PdfObject obj = gs.get(PdfName.BM);
              if (obj != null && !PdfGState.BM_NORMAL.equals(obj) && !PdfGState.BM_COMPATIBLE.equals(obj))
                  throw new PdfXConformanceException("Blend mode " + obj.toString() + " not allowed.");
              obj = gs.get(PdfName.CA);
              double v = 0.0;
              if (obj != null && (v = ((PdfNumber)obj).doubleValue()) != 1.0)
                  throw new PdfXConformanceException("Transparency is not allowed: /CA = " + v);
              obj = gs.get(PdfName.ca);
              v = 0.0;
              if (obj != null && (v = ((PdfNumber)obj).doubleValue()) != 1.0)
                  throw new PdfXConformanceException("Transparency is not allowed: /ca = " + v);
              break;
          case PDFXKEY_LAYER:
              throw new PdfXConformanceException("Layers are not allowed.");
      }
  }
 
Example 11
Source File: PdfXConformanceImp.java    From itext2 with GNU Lesser General Public License v3.0 4 votes vote down vote up
/**
* Business logic that checks if a certain object is in conformance with PDF/X.
   * @param writer	the writer that is supposed to write the PDF/X file
   * @param key		the type of PDF/X conformance that has to be checked
   * @param obj1		the object that is checked for conformance
   */
  public static void checkPDFXConformance(PdfWriter writer, int key, Object obj1) {
      if (writer == null || !writer.isPdfX())
          return;
      int conf = writer.getPDFXConformance();
      switch (key) {
          case PDFXKEY_COLOR:
              switch (conf) {
                  case PdfWriter.PDFX1A2001:
                      if (obj1 instanceof ExtendedColor) {
                          ExtendedColor ec = (ExtendedColor)obj1;
                          switch (ec.getType()) {
                              case ExtendedColor.TYPE_CMYK:
                              case ExtendedColor.TYPE_GRAY:
                                  return;
                              case ExtendedColor.TYPE_RGB:
                                  throw new PdfXConformanceException("Colorspace RGB is not allowed.");
                              case ExtendedColor.TYPE_SEPARATION:
                                  SpotColor sc = (SpotColor)ec;
                                  checkPDFXConformance(writer, PDFXKEY_COLOR, sc.getPdfSpotColor().getAlternativeCS());
                                  break;
                              case ExtendedColor.TYPE_SHADING:
                                  ShadingColor xc = (ShadingColor)ec;
                                  checkPDFXConformance(writer, PDFXKEY_COLOR, xc.getPdfShadingPattern().getShading().getColorSpace());
                                  break;
                              case ExtendedColor.TYPE_PATTERN:
                                  PatternColor pc = (PatternColor)ec;
                                  checkPDFXConformance(writer, PDFXKEY_COLOR, pc.getPainter().getDefaultColor());
                                  break;
                          }
                      }
                      else if (obj1 instanceof Color)
                          throw new PdfXConformanceException("Colorspace RGB is not allowed.");
                      break;
              }
              break;
          case PDFXKEY_CMYK:
              break;
          case PDFXKEY_RGB:
              if (conf == PdfWriter.PDFX1A2001)
                  throw new PdfXConformanceException("Colorspace RGB is not allowed.");
              break;
          case PDFXKEY_FONT:
              if (!((BaseFont)obj1).isEmbedded())
                  throw new PdfXConformanceException("All the fonts must be embedded. This one isn't: " + ((BaseFont)obj1).getPostscriptFontName());
              break;
          case PDFXKEY_IMAGE:
              PdfImage image = (PdfImage)obj1;
              if (image.get(PdfName.SMASK) != null)
                  throw new PdfXConformanceException("The /SMask key is not allowed in images.");
              switch (conf) {
                  case PdfWriter.PDFX1A2001:
                      PdfObject cs = image.get(PdfName.COLORSPACE);
                      if (cs == null)
                          return;
                      if (cs.isName()) {
                          if (PdfName.DEVICERGB.equals(cs))
                              throw new PdfXConformanceException("Colorspace RGB is not allowed.");
                      }
                      else if (cs.isArray()) {
                          if (PdfName.CALRGB.equals(((PdfArray)cs).getPdfObject(0)))
                              throw new PdfXConformanceException("Colorspace CalRGB is not allowed.");
                      }
                      break;
              }
              break;
          case PDFXKEY_GSTATE:
              PdfDictionary gs = (PdfDictionary)obj1;
              PdfObject obj = gs.get(PdfName.BM);
              if (obj != null && !PdfGState.BM_NORMAL.equals(obj) && !PdfGState.BM_COMPATIBLE.equals(obj))
                  throw new PdfXConformanceException("Blend mode " + obj.toString() + " not allowed.");
              obj = gs.get(PdfName.CA);
              double v = 0.0;
              if (obj != null && (v = ((PdfNumber)obj).doubleValue()) != 1.0)
                  throw new PdfXConformanceException("Transparency is not allowed: /CA = " + v);
              obj = gs.get(PdfName.ca);
              v = 0.0;
              if (obj != null && (v = ((PdfNumber)obj).doubleValue()) != 1.0)
                  throw new PdfXConformanceException("Transparency is not allowed: /ca = " + v);
              break;
          case PDFXKEY_LAYER:
              throw new PdfXConformanceException("Layers are not allowed.");
      }
  }