Hi Tillman,

Correct me if I am wrong, but it looks like the following instructions:
        matrix.rotate(45);
        canvas.transform(matrix);
Rotates the whole page canvas. So now the stream thinks as in the above example 
the page goes up at a 45 degree angle. So cord. 0,0 is still in lower left hand 
corner, but if I move my x cord only it will move from the lower left corner at 
a 45 degree angle towards the upper right hand corner. So for me to put my 
image in the lower right hand corner I am going to have to transform my x, y 
coordinates (y, will go negative in example) to put it in the right position.  
So simply I have to figure out the new x,y based off the angle....

-----Original Message-----
From: Tilman Hausherr [mailto:[email protected]] 
Sent: Monday, March 07, 2016 12:24 PM
To: [email protected]
Subject: Re: drawing images with rotation PDFBox 2.0

rotation is around the lower left axis. That is why I wrote a few days
ago: "90° rotated in clock direction would be you'd have to adjust the Y value, 
i.e. add the width to it."

Additionally, the parameter of rotate() is in radians, not in degrees. 
Use Math.toRadians().

Tilman

Am 07.03.2016 um 16:17 schrieb Stahle, Patrick:
> Hi,
>
> With the following code:
>       Matrix matrix = new Matrix();
>       matrix.rotate(45);
>       canvas.saveGraphicsState();
>       canvas.transform(matrix);
>       canvas.drawImage(ximage, rect.getLowerLeftX(), rect.getLowerLeftY(), 
> rect.getWidth(), rect.getHeight());
>       System.out.println("rect=" + rect + ", page mediabox=" + 
> page.getMediaBox());
>       canvas.restoreGraphicsState();
>
> System out:
> rect=[485.01,52.8,581.4,89.214], page mediabox=[0.0,0.0,612.0,792.0]
>
> I would expect my image to show up in the lower right hand corner, but I am 
> seeing about mid way down on the left hand side. Is the x, y position not 
> starting form the bottom left?
>
> Thanks,
> Patrick
>
> -----Original Message-----
> From: Stahle, Patrick [mailto:[email protected]]
> Sent: Monday, March 07, 2016 9:57 AM
> To: [email protected]
> Subject: RE: drawing images with rotation PDFBox 2.0
>
> Ok, I am lot closer. This seems to work. The only thing right now is I don't 
> think the position is correct, but I have to look at that a bit more...
> Seems like I have to first rotate & transform and then use the drawImage and 
> pass a width & height to scale it.
>
>       Matrix matrix = new Matrix();
>       matrix.rotate(45);
>       canvas.saveGraphicsState();
>       canvas.transform(matrix);
>       canvas.drawImage(ximage, rect.getLowerLeftX(), rect.getLowerLeftY(), 
> rect.getWidth(), rect.getHeight());
>       canvas.restoreGraphicsState();
>
> -----Original Message-----
> From: Stahle, Patrick [mailto:[email protected]]
> Sent: Monday, March 07, 2016 8:05 AM
> To: [email protected]
> Subject: RE: drawing images with rotation PDFBox 2.0
>
> I don't know how to do the rotation without AffineTransform, do you have a 
> suggestion for at.rotate method call?
>
> -----Original Message-----
> From: Tilman Hausherr [mailto:[email protected]]
> Sent: Friday, March 04, 2016 3:51 PM
> To: [email protected]
> Subject: Re: drawing images with rotation PDFBox 2.0
>
> Am 04.03.2016 um 21:27 schrieb Stahle, Patrick:
>>   From the code below both images draw, but as soon as I uncomment out " 
>> canvas.transform(new Matrix(at));" the first image does not draw or draws 
>> where I can't see it. I must still be missing something?
>>
>>      AffineTransform at = new AffineTransform(rect.getWidth(), 0, 0, 
>> rect.getHeight(), 0, 0);
> Don't use the line above! Just create a pure rotation matrix.
>
>>      PDPageContentStream canvas = new PDPageContentStream(document, page, 
>> PDPageContentStream.AppendMode.APPEND, true, true);
>>      at.rotate(Math.toRadians(0));
>>      canvas.saveGraphicsState();
>>      //canvas.transform(new Matrix(at));
>>      canvas.drawImage(ximage, 100 /*rect.getLowerLeftX()*/, 100 
>> /*rect.getLowerLeftY()*/);
>>      canvas.restoreGraphicsState();
>>
>>      canvas.saveGraphicsState();
>>      AffineTransform at2 = new AffineTransform(rect.getWidth(), 0, 0, 
>> rect.getHeight(), rect.getLowerLeftX(), rect.getLowerLeftY());
> That line above too, don't use  it.
>
> Tilman
>
>
>>      at.rotate(Math.toRadians(0));
>>      canvas.drawXObject(ximage, at2);
>>      canvas.restoreGraphicsState();
>>      canvas.close();
>>
>> -----Original Message-----
>> From: Tilman Hausherr [mailto:[email protected]]
>> Sent: Friday, March 04, 2016 3:08 PM
>> To: [email protected]
>> Subject: Re: drawing images with rotation PDFBox 2.0
>>
>> Am 04.03.2016 um 21:04 schrieb Stahle, Patrick:
>>> I tried the following but the image now no longer draws...
>>>     AffineTransform at = new AffineTransform(rect.getWidth(), 0, 0, 
>>> rect.getHeight(), rect.getLowerLeftX(), rect.getLowerLeftY());
>>>     PDPageContentStream canvas = new PDPageContentStream(document, page, 
>>> PDPageContentStream.AppendMode.APPEND, true, true);
>>>     at.rotate(Math.toRadians(90));
>>>     canvas.saveGraphicsState();
>>>     canvas.transform(new Matrix(at));
>>>     canvas.drawImage(ximage, rect.getLowerLeftX(), rect.getLowerLeftY());
>>>     canvas.restoreGraphicsState();
>>>     canvas.close();
>> No, what I meant is make a transform that has only the rotation. Then 
>> draw the image at the position you're planning (however you may have 
>> to adjust this, as the rotation is done around the (0,0) axis)
>>
>> The best would be to set a position like (300,300) which is about in the 
>> middle and see what happens.
>>
>> 90° rotated in clock direction would be you'd have to adjust the Y value, 
>> i.e. add the width to it.
>>
>> TIlman
>>
>>> Did I misunderstand something?
>>>
>>> As for the imaging squishing I am seeing. It looks to me like the rectangle 
>>> size / position of the image non rotated stays exactly the same but the 
>>> contents are rotated and squished. I can send you a couple pdfs showing 
>>> what I mean (direct email?). And maybe that is how it is supposed to work, 
>>> but I would of expected the image to look exactly the same just rotated. In 
>>> case of 90 degrees, like the example above, I would of expect simply the 
>>> width to become the height and the height to become the width.
>>>
>>> -----Original Message-----
>>> From: Tilman Hausherr [mailto:[email protected]]
>>> Sent: Friday, March 04, 2016 2:44 PM
>>> To: [email protected]
>>> Subject: Re: drawing images with rotation PDFBox 2.0
>>>
>>> Am 04.03.2016 um 20:35 schrieb Stahle, Patrick:
>>>> Hi,
>>>>
>>>> I am struggling with rotating an image. For instance I have the following 
>>>> code:
>>>> AffineTransform at = new AffineTransform(rect.getWidth(), 0, 0, 
>>>> rect.getHeight(), rect.getLowerLeftX(), rect.getLowerLeftY()); 
>>>> PDPageContentStream canvas = new PDPageContentStream(document, page, 
>>>> PDPageContentStream.AppendMode.APPEND, true, true);
>>>>                     at.rotate(Math.toRadians(90));
>>>>                     canvas.drawXObject(ximage, at);
>>>>                     canvas.close();
>>>>
>>>> It seems to work, but not the way I would've expected it to. It rotates 
>>>> the image but keeps the original boxed rectangle size which in this case 
>>>> squishing the image. Is this expected behavior, and if so is there way for 
>>>> an image to rotate and keep the sizing? I kind of hoped it work the same 
>>>> way as rotating text...
>>> Sorry I don't understand you... why should it not keep the size?
>>>
>>>> Also on a PDFBox 2.0 note, the "PDPageContentStream  -> drawXObject' is 
>>>> deprecated and the source says to use drawImage instead. However I was not 
>>>> able to find a drawImage method that takes AffineTransform. What is the 
>>>> recommended way to do this in 2.0 going forward?
>>>             saveGraphicsState();
>>>             transform(new Matrix(transform));  <== do the rotation 
>>> only
>>>
>>>              drawImage()     <=== here just set the position
>>>
>>>             restoreGraphicsState();
>>>
>>>
>>>
>>> --------------------------------------------------------------------
>>> - To unsubscribe, e-mail: [email protected]
>>> For additional commands, e-mail: [email protected]
>>>
>>>
>>> --------------------------------------------------------------------
>>> - To unsubscribe, e-mail: [email protected]
>>> For additional commands, e-mail: [email protected]
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to