[ https://issues.apache.org/jira/browse/PDFBOX-4583?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16877594#comment-16877594 ]
Jan Buschtöns commented on PDFBOX-4583: --------------------------------------- Okay. {code:java} final int r = 20; // Additional Transformation final double scale = 1.01; g2.transform(AffineTransform.getScaleInstance(scale, scale)); final AffineTransform transform = g2.getTransform(); final Stroke stroke = g2.getStroke(); final Composite composite = g2.getComposite(); final RenderingHints renderingHints = g2.getRenderingHints(); final Color background = g2.getBackground(); final Paint paint = g2.getPaint(); g2.clip(new Rectangle(r, r)); final Shape clip = g2.getClip(); final PDDocument pdDocument = PDDocument.load(App.class.getResourceAsStream("/de/abm/bug/x.pdf")); // I did a direct loading here because I didn't set up an extra project final PDFRenderer pdfRenderer = new org.apache.pdfbox.rendering.PDFRenderer(pdDocument); pdfRenderer.renderPageToGraphics(0, g2); g2.setTransform(transform); g2.setStroke(stroke); g2.setComposite(composite); g2.setRenderingHints(renderingHints); g2.setClip(clip); g2.setBackground(background); g2.setPaint(paint); g2.setColor(Color.black); g2.drawRect(0, 0, r-1, r-1); // -1 is important or it won't be seen {code} Now its the same code you posted, but with an additional scaling transform. I would expect the black rectangle to be filled with the PDF. But that's only the case for scale = 1; > Drawing only a portion of a PDF (Graphics.clip is ignored/overwritten) > ---------------------------------------------------------------------- > > Key: PDFBOX-4583 > URL: https://issues.apache.org/jira/browse/PDFBOX-4583 > Project: PDFBox > Issue Type: Bug > Components: Rendering > Affects Versions: 2.0.15 > Reporter: Jan Buschtöns > Assignee: Tilman Hausherr > Priority: Major > Fix For: 2.0.17, 3.0.0 PDFBox > > Attachments: clip_PDFBox_FORMGEN-2184-master.zip > > > I want to use PDFBox to draw PDFs in a swing application. > I want to draw only a portion of the PDF. As far as I know, the way to do > this in swing is with the "clip"-method on the Graphics object. However, no > matter what clip I set, the whole PDF is drawn. > PDFRenderer calls "setClip", when it probably should use "clip". The latter > sets the current clip to the intersection of the old current clip and the > provided shape, whereas the former resets the current clip > I've attached an example maven project, but the gist is: > {code:java} > @Override > public void paint(final Graphics g) { > > final Graphics2D g2 = (Graphics2D) g; > try { > PDDocument pdDocument = > DDocument.load(App.class.getResourceAsStream("somepdf.pdf")); > g2.clip(new Rectangle(20, 20)); > final PDFRenderer pdfRenderer = new > org.apache.pdfbox.rendering.PDFRenderer(pdDocument); > pdfRenderer.renderPageToGraphics(0, g2); > } catch (final IOException e) { > throw new RuntimeException(e); > } > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@pdfbox.apache.org For additional commands, e-mail: dev-h...@pdfbox.apache.org