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]

