[
https://issues.apache.org/jira/browse/PDFBOX-2692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14485169#comment-14485169
]
Petr Slaby commented on PDFBOX-2692:
------------------------------------
Basically, that means I have to re-implement the PageDrawer by myself, or? I
need all of its functionality, including transparency groups and all the other
logic it contains. I just need to intervene in showFontGlyph, or even
drawGlyph2D to tell to the target renderer "draw a character" instead of "fill
path" - if the renderer is capable of handling fonts. So in the end, I would
copy/paste the whole PageDrawer, make the copy non-final, inherit from it and
override one or two methods. I am fine with that - after all, we have copied
the whole PDFBox source in 1.8.x. But at the moment, not even that is possible
as TilingPattern and Glyph2D and its implementations are not public. Meaning I
would have to copy/paste even more classes.
Our target format renderers already have a Graphics2D implementation, passing
it to PageDrawer.drawPage() is a perfect fit. I "just" need something
corresponding to Graphics2D.drawGlyphVector() to be called instead of
graphics.fill() when rendering a character. E.g. declare a special public
interface, having methods like drawGlyph and fillGlyph with the parameters
being PDFont, Glyph2D (or the GeneralPath it produces, but without the
transformation being applied), character code and the transformation. The
methods would be called instead of graphics.fill() or graphics.draw() in
drawGlyph2D() if the graphics instance implements the interface. Passing
Glyph2D instead of GeneralPath should be faster as my renderers only need the
GeneralPath once for each character to create it in the on-the-fly font.
> Possibility to use our own and/or overwrite PageDrawer class
> ------------------------------------------------------------
>
> Key: PDFBOX-2692
> URL: https://issues.apache.org/jira/browse/PDFBOX-2692
> Project: PDFBox
> Issue Type: Wish
> Components: Rendering
> Affects Versions: 2.0.0
> Environment: JDK 1.8, Windows 7, PDF-Box - current trunk
> Reporter: Manfred Pock
> Assignee: Andreas Lehmkühler
> Labels: features
> Fix For: 2.0.0
>
> Attachments: pdfexample.jpg
>
>
> We use PDFBox to render PDF's. Additionally, we have the posibility to add
> different kinds of annotation (stamp, marks, free text, notes..) like in a
> wysiwyg-editor. To do this, it is necessary that we paint these annotations
> on our own.
> Another reason is not to paint all parts: for example we have a pdf with an
> embedded picture. Behind the picture we have the OCR-text to this picture.
> This text is only needed for searching und should not be painted.
> Thus it would be useful to use our own derived PageDrawer. As I see there are
> some things to change.
> a.) remove the final from PagerDrawer-class.
> b.) make some global-variables (graphics, xform, pageSize...) protected,
> c.) also some methods like setRenderingHints should be protected
> d.) maybe the possibility to say to the PDFRender which PageDrawer should be
> used.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]