[cairo] pdf hyperlinks
John Ellson
ellson at research.att.com
Wed Feb 18 07:31:50 PST 2009
Why is this PDF specific?
We also need facilities for inserting anchors into SVG.
John
Adrian Johnson wrote:
> Dan McMahill wrote:
>
>> Hello,
>>
>> Quite some time back there was a proposal on this list for an API for
>> supporting hyperlinks in the pdf output from cairo. Has there been any
>> further discussion or movement towards implementing this?
>>
>
> At the last cairo summit it was agreed that the best way to make the
> non-graphical PDF features available would be to provide a minimal API
> for inserting objects into the PDF and offload the work to an external
> library [1].
>
> I've recently started looking into this. I've started work on a patch
> for allowing objects to be inserted into the PDF [2]. This allows some
> of the PDF features such as outlines and annotations to be implemented.
> Additional API would be required to support the full set of PDF features.
>
> Currently the API is:
>
> Allocate an object number for later use by cairo_pdf_surface_insert_object()
>
> int
> cairo_pdf_surface_allocate_object (cairo_surface_t *surface)
>
> Insert a dictionary and stream into the PDF file. stream may be NULL if
> only a dictionary is required.
>
> void
> cairo_pdf_surface_insert_object (cairo_surface_t *surface,
> int object,
> const char *dictionary,
> cairo_pdf_read_func_t stream,
> void *closure)
>
> Insert a key/value pair into the dictionary specified by type
>
> typedef enum _cairo_pdf_dictionary_type {
> CAIRO_PDF_DICTIONARY_TYPE_CATALOG,
> CAIRO_PDF_DICTIONARY_TYPE_INFO,
> CAIRO_PDF_DICTIONARY_TYPE_PAGE,
> } cairo_pdf_dictionary_type_t;
>
> void
> cairo_pdf_surface_insert_dictionary_entry (cairo_surface_t *surface,
> cairo_pdf_dictionary_type_t type,
> const char *key,
> const char *value)
>
> Return the object number of the current page. I intend changing this to
> take a page number so the object number of any page can be obtained.
>
> int
> cairo_pdf_surface_get_page_object (cairo_surface_t *surface)
>
>
> I've also started coding a library that makes the additional PDF
> features available to cairo using the above API [3]. I've used the
> placeholder name "cpdf" for the library until someone can suggest a
> better name.
>
> At present there is not much there. Just a bit of code for creating
> outlines, a function for setting the PDF metadata, and an attempt at
> getting link annotations to work. At this stage I've only been writing
> this code to help design and test the cairo API for inserting PDF
> objects. A real library for adding advanced PDF features to cairo PDFs
> may look very different to this.
>
> [1] http://www.cairographics.org/summit/2008/notes/
> [2] http://cgit.freedesktop.org/~ajohnson/cairo/log/?h=pdf-insert-object
> [3] http://cgit.freedesktop.org/~ajohnson/cpdf/
>
> _______________________________________________
> cairo mailing list
> cairo at cairographics.org
> http://lists.cairographics.org/mailman/listinfo/cairo
>
More information about the cairo
mailing list