if (!action)
continue;
- switch (action->type) {
- case POPPLER_ACTION_GOTO_DEST: {
- /* For bookmarks, solve named destinations */
- if (action->goto_dest.dest->type == POPPLER_DEST_NAMED) {
- PopplerDest *dest;
- EvLinkDest *ev_dest = NULL;
- EvLinkAction *ev_action;
-
- dest = poppler_document_find_dest (pdf_document->document,
- action->goto_dest.dest->named_dest);
- if (!dest) {
- link = ev_link_from_action (pdf_document, action);
- break;
- }
-
- ev_dest = ev_link_dest_from_dest (pdf_document, dest);
- poppler_dest_free (dest);
-
- ev_action = ev_link_action_new_dest (ev_dest);
- link = ev_link_new (action->any.title, ev_action);
- } else {
- link = ev_link_from_action (pdf_document, action);
- }
- }
- break;
- default:
- link = ev_link_from_action (pdf_document, action);
- break;
- }
-
+ link = ev_link_from_action (pdf_document, action);
if (!link || strlen (ev_link_get_title (link)) <= 0) {
poppler_action_free (action);
if (link)
return ev_dest;
}
+static gint
+pdf_document_links_find_link_page (EvDocumentLinks *document_links,
+ const gchar *link_name)
+{
+ PdfDocument *pdf_document;
+ PopplerDest *dest;
+ gint retval = -1;
+
+ pdf_document = PDF_DOCUMENT (document_links);
+ dest = poppler_document_find_dest (pdf_document->document,
+ link_name);
+ if (dest) {
+ retval = dest->page_num - 1;
+ poppler_dest_free (dest);
+ }
+
+ return retval;
+}
+
static void
pdf_document_document_links_iface_init (EvDocumentLinksInterface *iface)
{
iface->get_links_model = pdf_document_links_get_links_model;
iface->get_links = pdf_document_links_get_links;
iface->find_link_dest = pdf_document_links_find_link_dest;
+ iface->find_link_page = pdf_document_links_find_link_page;
}
static EvMappingList *