New Forum | Previous | Next | (P-PDF) Developers
Topic: Re: Can a C++ program create highlight annotations?
Conf: (P-PDF) Developers, Msg: 56577
Date: 5/29/2002 05:20 PM
I am working on exactly the same kind of issue that Anton is -- and I've managed to work through your suggestions *almost*. I can't seem to figure out how to fill a PDEPath with color. I've tried using the PDEPathSetPaintOp, but that seeems only useful to set fill and stroke attributes, not color.
Furthermore, if I try to add the PDEPath as an element of the PDEContent which I've pulled from the page, the function doesn't fail, but the subsequent PDPageSetPDEContent fails. If I just get the PDPageAcquirePDEContent to a PDEContent, and then PDPAgeSetPDEContent, that's successful, so I infer that I'm not doing the PDEContentAddElem or PDEPathAddSegment properly.
Sorry for the long-windedness, but I feel like I'm *this* close to getting it, and I thought the details might help. Any pointers, tips, examples *greatly* appreciated!
If you want to create highlights using your own annotation, then obviously
you will have to implement an annotation handler. On the other hand, if you
were to want to implement a yellow highlight just based on the user's use
of the selection tool, you could call AVDocGetSelection() and then use
PDTextSelectEnumQuads() to get the bounding rects of the individual lines
comprising the selection; then use PDEContentAddElem() to add filled
(yellow) PDEPath objects to the page, specifying kPDEBeforeFirst so you
draw the filled paths first rather than draw over the text (obscuring it!).
This would give the line-by-line yellow highlight effect for most cases.
I say "most cases" because FrameMaker-generated docs often have white
rectangles laid down on a page underneath text. Anything you draw
underneath the white rects will be obscured by the white rects. Thus it
becomes necessary to deal with those white rects. (Left as an exercise...)