Java Code Examples for org.apache.pdfbox.util.Matrix#getValue()

The following examples show how to use org.apache.pdfbox.util.Matrix#getValue() . 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: BeginInlineImage.java    From pdfxtk with Apache License 2.0 4 votes vote down vote up
/**
 * process : BI : begin inline image.
 * @param operator The operator that is being executed.
 * @param arguments List
 * @throws IOException If there is an error displaying the inline image.
 */
public void process(PDFOperator operator, List arguments)  throws IOException
{
    PDFObjectExtractor drawer = (PDFObjectExtractor)context;
    Graphics2D graphics = drawer.getGraphics();
    //begin inline image object
    ImageParameters params = operator.getImageParameters();
    PDInlinedImage image = new PDInlinedImage();
    image.setImageParameters( params );
    image.setImageData( operator.getImageData() );

    // 7.04.09 added try/catch to allow for mis-reading of images
	// in Kurier
 // BufferedImage awtImage = image.createImage();
    BufferedImage awtImage = new BufferedImage(1, 1, BufferedImage.TYPE_3BYTE_BGR);
    try
    {
    	awtImage = image.createImage();
    }
    catch (Exception e)
    {
    	e.printStackTrace();
    }
    
    Matrix ctm = drawer.getGraphicsState().getCurrentTransformationMatrix();
    
    int width = awtImage.getWidth();
    int height = awtImage.getHeight();

    
    AffineTransform at = new AffineTransform(
        ctm.getValue(0,0)/width,
        ctm.getValue(0,1),
        ctm.getValue(1,0),
        ctm.getValue(1,1)/height,
        ctm.getValue(2,0),
        ctm.getValue(2,1)
    );
    //at.setToRotation((double)page.getRotation());

    
    // The transformation should be done 
    // 1 - Translation
    // 2 - Rotation
    // 3 - Scale or Skew
    //AffineTransform at = new AffineTransform();

    // Translation
    //at = new AffineTransform();
    //at.setToTranslation((double)ctm.getValue(0,0),
    //                    (double)ctm.getValue(0,1));

    // Rotation
    //AffineTransform toAdd = new AffineTransform();
    //toAdd.setToRotation(1.5705);
    //toAdd.setToRotation(ctm.getValue(2,0)*(Math.PI/180));
    //at.concatenate(toAdd);

    // Scale / Skew?
    //toAdd.setToScale(width, height); 
    //at.concatenate(toAdd);
    //at.setToScale( width, height );
    graphics.drawImage( awtImage, at, null );
    //graphics.drawImage( awtImage,0,0, width,height,null);
    ////drawer.simpleDrawImage(width, height);
}