Ejemplo n.º 1
0
  public static void main_2(String[] args) throws IOException, DocumentException {

    PdfReader reader = new PdfReader(iconFile.getAbsolutePath());

    for (int i = 0; i < reader.getXrefSize(); i++) {

      PdfObject pdfobj = reader.getPdfObject(i);

      if (pdfobj == null || !pdfobj.isStream()) {
        continue;
      }

      PdfStream stream = (PdfStream) pdfobj;
      PdfObject pdfsubtype = stream.get(PdfName.SUBTYPE);

      if (pdfsubtype != null && pdfsubtype.toString().equals(PdfName.IMAGE.toString())) {

        System.out.println(stream);

        byte[] imgData = PdfReader.getStreamBytesRaw((PRStream) stream);

        System.out.println(Hex.encodeHex(imgData));
      }
    }
  }
Ejemplo n.º 2
0
 /**
  * Gets the object that is shown in a row.
  *
  * @param rowIndex the row number containing the object
  * @return a PDF object
  */
 protected String getObjectDescriptionByRow(int rowIndex) {
   PdfObject object = objects.getObjectByIndex(rowIndex);
   if (object instanceof PdfNull) return "Indirect object";
   return object.toString();
 }
Ejemplo n.º 3
0
 /**
  * Business logic that checks if a certain object is in conformance with PDF/X.
  *
  * @param key the type of PDF ISO conformance that has to be checked
  * @param obj1 the object that is checked for conformance
  */
 public void checkPdfIsoConformance(int key, Object obj1) {
   if (writer == null || !writer.isPdfX()) return;
   int conf = writer.getPDFXConformance();
   switch (key) {
     case PdfIsoKeys.PDFISOKEY_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(
                     MessageLocalization.getComposedMessage("colorspace.rgb.is.not.allowed"));
               case ExtendedColor.TYPE_SEPARATION:
                 SpotColor sc = (SpotColor) ec;
                 checkPdfIsoConformance(
                     PdfIsoKeys.PDFISOKEY_COLOR, sc.getPdfSpotColor().getAlternativeCS());
                 break;
               case ExtendedColor.TYPE_SHADING:
                 ShadingColor xc = (ShadingColor) ec;
                 checkPdfIsoConformance(
                     PdfIsoKeys.PDFISOKEY_COLOR,
                     xc.getPdfShadingPattern().getShading().getColorSpace());
                 break;
               case ExtendedColor.TYPE_PATTERN:
                 PatternColor pc = (PatternColor) ec;
                 checkPdfIsoConformance(
                     PdfIsoKeys.PDFISOKEY_COLOR, pc.getPainter().getDefaultColor());
                 break;
             }
           } else if (obj1 instanceof BaseColor)
             throw new PdfXConformanceException(
                 MessageLocalization.getComposedMessage("colorspace.rgb.is.not.allowed"));
           break;
       }
       break;
     case PdfIsoKeys.PDFISOKEY_CMYK:
       break;
     case PdfIsoKeys.PDFISOKEY_RGB:
       if (conf == PdfWriter.PDFX1A2001)
         throw new PdfXConformanceException(
             MessageLocalization.getComposedMessage("colorspace.rgb.is.not.allowed"));
       break;
     case PdfIsoKeys.PDFISOKEY_FONT:
       if (!((BaseFont) obj1).isEmbedded())
         throw new PdfXConformanceException(
             MessageLocalization.getComposedMessage(
                 "all.the.fonts.must.be.embedded.this.one.isn.t.1",
                 ((BaseFont) obj1).getPostscriptFontName()));
       break;
     case PdfIsoKeys.PDFISOKEY_IMAGE:
       PdfImage image = (PdfImage) obj1;
       if (image.get(PdfName.SMASK) != null)
         throw new PdfXConformanceException(
             MessageLocalization.getComposedMessage("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(
                   MessageLocalization.getComposedMessage("colorspace.rgb.is.not.allowed"));
           } else if (cs.isArray()) {
             if (PdfName.CALRGB.equals(((PdfArray) cs).getPdfObject(0)))
               throw new PdfXConformanceException(
                   MessageLocalization.getComposedMessage("colorspace.calrgb.is.not.allowed"));
           }
           break;
       }
       break;
     case PdfIsoKeys.PDFISOKEY_GSTATE:
       PdfDictionary gs = (PdfDictionary) obj1;
       // The example PdfXPdfA threw a NullPointerException because gs was null
       if (gs == null) break;
       PdfObject obj = gs.get(PdfName.BM);
       if (obj != null && !PdfGState.BM_NORMAL.equals(obj) && !PdfGState.BM_COMPATIBLE.equals(obj))
         throw new PdfXConformanceException(
             MessageLocalization.getComposedMessage("blend.mode.1.not.allowed", obj.toString()));
       obj = gs.get(PdfName.CA);
       double v = 0.0;
       if (obj != null && (v = ((PdfNumber) obj).doubleValue()) != 1.0)
         throw new PdfXConformanceException(
             MessageLocalization.getComposedMessage(
                 "transparency.is.not.allowed.ca.eq.1", String.valueOf(v)));
       obj = gs.get(PdfName.ca);
       v = 0.0;
       if (obj != null && (v = ((PdfNumber) obj).doubleValue()) != 1.0)
         throw new PdfXConformanceException(
             MessageLocalization.getComposedMessage(
                 "transparency.is.not.allowed.ca.eq.1", String.valueOf(v)));
       break;
     case PdfIsoKeys.PDFISOKEY_LAYER:
       throw new PdfXConformanceException(
           MessageLocalization.getComposedMessage("layers.are.not.allowed"));
   }
 }