Advertisement
Guest User

Untitled

a guest
Mar 28th, 2019
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.45 KB | None | 0 0
  1. for (int i = 0; i < document.getNumberOfPages(); i++) {
  2.             PDPage pageDoc = documentpdf.getPage(i);
  3.             PDFStreamEngine pse = new PDFStreamEngine() {};
  4.             pse.initPageMy(pageDoc);
  5. //                    pse.processPage(pageDoc);
  6.  
  7.             if(pageDoc.hasContents())
  8.             {
  9.                 PDResources parent = pse.pushResourcesMy(pageDoc);
  10.  
  11.                 Stack<PDGraphicsState> savedStack = pse.saveGraphicsStackMy();
  12.                 Matrix parentMatrix = pse.initialMatrix;
  13.  
  14.                 // transform the CTM using the stream's matrix
  15.                 pse.getGraphicsState().getCurrentTransformationMatrix().concatenate(pageDoc.getMatrix());
  16.  
  17.                 // the stream's initial matrix includes the parent CTM, e.g. this allows a scaled form
  18.                 pse.initialMatrix = pse.getGraphicsState().getCurrentTransformationMatrix().clone();
  19.  
  20.                 // clip to bounding box
  21.                 PDRectangle bbox = pageDoc.getBBox();
  22.                 pse.clipToRectMy(bbox);
  23.  
  24.                 List<COSBase> arguments = new ArrayList<COSBase>();
  25.                 PDFStreamParser parser = new PDFStreamParser(pageDoc);
  26.                 Object token = parser.parseNextToken();
  27.                 while (token != null)
  28.                 {
  29.                     if (token instanceof COSObject)
  30.                     {
  31.                         arguments.add(((COSObject) token).getObject());
  32.                     }
  33.                     else if (token instanceof Operator)
  34.                     {
  35. //                                processOperator((Operator) token, arguments);
  36.                         String operation = ((Operator) token).getName();
  37.                         if( "Do".equals(operation) )
  38.                         {
  39.                             COSName objectName = (COSName) arguments.get( 0 );
  40.                             PDXObject xobject = pse.getResources().getXObject( objectName );
  41.                             if( xobject instanceof PDImageXObject)
  42.                             {
  43.                                 PDImageXObject image = (PDImageXObject)xobject;
  44.                                 int imageWidth = image.getWidth();
  45.                                 int imageHeight = image.getHeight();
  46.                                 System.out.println("*******************************************************************");
  47.                                 System.out.println("Found image [" + objectName.getName() + "]");
  48.  
  49.                                 Matrix ctmNew = pse.getGraphicsState().getCurrentTransformationMatrix();
  50.                                 float imageXScale = ctmNew.getScalingFactorX();
  51.                                 float imageYScale = ctmNew.getScalingFactorY();
  52.  
  53.                                 // position in user space units. 1 unit = 1/72 inch at 72 dpi
  54.                                 System.out.println("position in PDF = " + ctmNew.getTranslateX() + ", " + ctmNew.getTranslateY() + " in user space units");
  55.                                 // raw size in pixels
  56.                                 System.out.println("raw image size  = " + imageWidth + ", " + imageHeight + " in pixels");
  57.                                 // displayed size in user space units
  58.                                 System.out.println("displayed size  = " + imageXScale + ", " + imageYScale + " in user space units");
  59.                                 // displayed size in inches at 72 dpi rendering
  60.                                 imageXScale /= 72;
  61.                                 imageYScale /= 72;
  62.                                 System.out.println("displayed size  = " + imageXScale + ", " + imageYScale + " in inches at 72 dpi rendering");
  63.                                 // displayed size in millimeters at 72 dpi rendering
  64.                                 imageXScale *= 25.4;
  65.                                 imageYScale *= 25.4;
  66.                                 System.out.println("displayed size  = " + imageXScale + ", " + imageYScale + " in millimeters at 72 dpi rendering");
  67.                                 System.out.println();
  68.                             }
  69.                         }
  70.  
  71.                         arguments = new ArrayList<COSBase>();
  72.                     }
  73.                     else
  74.                     {
  75.                         arguments.add((COSBase) token);
  76.                     }                            
  77.                     token = parser.parseNextToken();
  78.                 }
  79.             }
  80.             //
  81.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement