New Forum | Previous | Next | (P-PDF) Developers
Topic: Re: Can a C++ program create highlight annotations?
Conf: (P-PDF) Developers, Msg: 56569
Date: 5/29/2002 05:20 PM
>I have developed a custom plugin in C++ that extracts information from a
>PDF file open in Acrobat 4 using Core API calls and communicates results
>to other programs. Under some circumstances, we would like to create
>highlights in the open document. I was able to create text annotations via
>Core API calls, but could find no way to create a highlight annotation
>such as provided by the annotation tool plugin. (That is, without
>implementing my own annotation type!)
>Does anyone know of a way to create a text highlight using the features
>already present in the standard plugin?
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...)