pdfbox-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jan Buschtöns (JIRA) <j...@apache.org>
Subject [jira] [Commented] (PDFBOX-4583) Drawing only a portion of a PDF (Graphics.clip is ignored/overwritten)
Date Wed, 03 Jul 2019 07:37:00 GMT

    [ 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-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: dev-help@pdfbox.apache.org


Mime
View raw message