Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- for (int i = 0; i < document.getNumberOfPages(); i++) {
- PDPage pageDoc = documentpdf.getPage(i);
- PDFStreamEngine pse = new PDFStreamEngine() {};
- pse.initPageMy(pageDoc);
- // pse.processPage(pageDoc);
- if(pageDoc.hasContents())
- {
- PDResources parent = pse.pushResourcesMy(pageDoc);
- Stack<PDGraphicsState> savedStack = pse.saveGraphicsStackMy();
- Matrix parentMatrix = pse.initialMatrix;
- // transform the CTM using the stream's matrix
- pse.getGraphicsState().getCurrentTransformationMatrix().concatenate(pageDoc.getMatrix());
- // the stream's initial matrix includes the parent CTM, e.g. this allows a scaled form
- pse.initialMatrix = pse.getGraphicsState().getCurrentTransformationMatrix().clone();
- // clip to bounding box
- PDRectangle bbox = pageDoc.getBBox();
- pse.clipToRectMy(bbox);
- List<COSBase> arguments = new ArrayList<COSBase>();
- PDFStreamParser parser = new PDFStreamParser(pageDoc);
- Object token = parser.parseNextToken();
- while (token != null)
- {
- if (token instanceof COSObject)
- {
- arguments.add(((COSObject) token).getObject());
- }
- else if (token instanceof Operator)
- {
- // processOperator((Operator) token, arguments);
- String operation = ((Operator) token).getName();
- if( "Do".equals(operation) )
- {
- COSName objectName = (COSName) arguments.get( 0 );
- PDXObject xobject = pse.getResources().getXObject( objectName );
- if( xobject instanceof PDImageXObject)
- {
- PDImageXObject image = (PDImageXObject)xobject;
- int imageWidth = image.getWidth();
- int imageHeight = image.getHeight();
- System.out.println("*******************************************************************");
- System.out.println("Found image [" + objectName.getName() + "]");
- Matrix ctmNew = pse.getGraphicsState().getCurrentTransformationMatrix();
- float imageXScale = ctmNew.getScalingFactorX();
- float imageYScale = ctmNew.getScalingFactorY();
- // position in user space units. 1 unit = 1/72 inch at 72 dpi
- System.out.println("position in PDF = " + ctmNew.getTranslateX() + ", " + ctmNew.getTranslateY() + " in user space units");
- // raw size in pixels
- System.out.println("raw image size = " + imageWidth + ", " + imageHeight + " in pixels");
- // displayed size in user space units
- System.out.println("displayed size = " + imageXScale + ", " + imageYScale + " in user space units");
- // displayed size in inches at 72 dpi rendering
- imageXScale /= 72;
- imageYScale /= 72;
- System.out.println("displayed size = " + imageXScale + ", " + imageYScale + " in inches at 72 dpi rendering");
- // displayed size in millimeters at 72 dpi rendering
- imageXScale *= 25.4;
- imageYScale *= 25.4;
- System.out.println("displayed size = " + imageXScale + ", " + imageYScale + " in millimeters at 72 dpi rendering");
- System.out.println();
- }
- }
- arguments = new ArrayList<COSBase>();
- }
- else
- {
- arguments.add((COSBase) token);
- }
- token = parser.parseNextToken();
- }
- }
- //
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement