pdfbox-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From John Hewson <j...@jahewson.com>
Subject Re: PageDrawer and partial rendering - skip invisible parts when rendering
Date Mon, 12 Sep 2016 19:31:39 GMT


> On 12 Sep 2016, at 06:58, Markus Barbey <Barbus@gmx.de> wrote:
> 
>> On 2016-09-09 19:49 ( 0200), John Hewson <j...@jahewson.com> wrote: 
>> 
>>> On 7 Sep 2016, at 08:02, Markus Barbey <Ba...@gmx.de> wrote:> 
>>>> 
>>> Hello there,> 
>>>> 
>>> when using> 
>>>> 
>>> PDFRender#renderPageToGraphics(int, Graphics2D)> 
>>>> 
>>> you can set an AffineTransform (e.G. scale and translate) in the Graphics2D instance
which results in a partially rendered PDF page. Nevertheless each resource gets rendered by
the renderer - even if it is not visible in the resulting BufferedImage. > 
>>>> 
>>> For example: PDF original size 800x600> 
>>>> 
>>> --------------------------------------------> 
>>>> 
>>>        BufferedImage image = new BufferedImage (400, 200, BufferedImage.TYPE_INT_RGB);>

>>>        Graphics2D graphics = image.createGraphics ();> 
>>>> 
>>>        AffineTransform tx = new AffineTransform ();> 
>>>        tx.translate (200,300);> 
>>>        tx.scale (2, 2);> 
>>>        graphics.setTransform (tx);> 
>>>> 
>>>        renderer.renderPageToGraphics (0, graphics);> 
>>>        graphics.dispose ();> 
>>>> 
>>> --------------------------------------------> 
>>>> 
>>> When you have some large images (e.G. high DPI logo and charts) on a single PDF
page there could be a great performance boost for partial rendering (that is mainly required
in PDF viewer controls), if images, that are not going to be visible in the resulting BufferedImage
skipped while drawing. Nowadays they are converted to a BufferedImage (which can last remarkable
time) and drawn to the Graphics2D. Due to size and clipping configuration they are not visible
in the resulting BufferedImage.> 
>> 
>> I would recommend caching the BufferedImage for an entire rendered page instead and
then having your PDF viewer display a portion of that image.> 
>> 
>> — John> 
>> 
>>>> 
>>>> 
>>> Cu> 
>>> Markus> 
>>>> 
>>> ---------------------------------------------------------------------> 
>>> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org> 
>>> For additional commands, e-mail: users-help@pdfbox.apache.org> 
>>>> 
>> 
>> 
>> ---------------------------------------------------------------------> 
>> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org> 
>> For additional commands, e-mail: users-help@pdfbox.apache.org> 
>> 
>> 
> 
> Hello John,
> 
> caching the whole page as BufferedImage may need a lot of memory (think about high DPI
displays combined with a scaled PDF) ;-)

It's a lot, for sure, but not *that* much. If you were after smooth animations it could be
a deal breaker, but for a static image less so. It does depend a lot on your use case though,
so YMMV.

> The massive performance loss of partial rendering has been caused by the 2.0.2 implementation.
As the 2.0.3 SNAPSHOT provides some impressive performance improvements, this issue isn't
almost noticeable in 2.0.3 any longer.

That's great. I'm even happier that we have a general performance speed up in 2.0.3 which
benefits everyone, not just the partial rendering use case. And we're seeing that overdraw
isn't costing us much time - good!

-- John

> Markus
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
> For additional commands, e-mail: users-help@pdfbox.apache.org
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: users-help@pdfbox.apache.org


Mime
View raw message