diff options
-rw-r--r-- | include/mupdf/pdf/page.h | 4 | ||||
-rw-r--r-- | source/pdf/pdf-page.c | 7 |
2 files changed, 7 insertions, 4 deletions
diff --git a/include/mupdf/pdf/page.h b/include/mupdf/pdf/page.h index bae9193f..f09e9260 100644 --- a/include/mupdf/pdf/page.h +++ b/include/mupdf/pdf/page.h @@ -9,9 +9,9 @@ pdf_obj *pdf_lookup_page_obj(fz_context *ctx, pdf_document *doc, int needle); pdf_lookup_anchor: Find the page number of a named destination. For use with looking up the destination page of a fragment - identifier in hyperlinks: foo.pdf#bar. + identifier in hyperlinks: foo.pdf#bar or foo.pdf#page=5. */ -int pdf_lookup_anchor(fz_context *ctx, pdf_document *doc, const char *name); +int pdf_lookup_anchor(fz_context *ctx, pdf_document *doc, const char *name, float *xp, float *yp); /* pdf_flatten_inheritable_page_items: Make page self sufficient. diff --git a/source/pdf/pdf-page.c b/source/pdf/pdf-page.c index 8335614a..64b30cf6 100644 --- a/source/pdf/pdf-page.c +++ b/source/pdf/pdf-page.c @@ -201,11 +201,14 @@ pdf_lookup_page_number(fz_context *ctx, pdf_document *doc, pdf_obj *node) } int -pdf_lookup_anchor(fz_context *ctx, pdf_document *doc, const char *name) +pdf_lookup_anchor(fz_context *ctx, pdf_document *doc, const char *name, float *xp, float *yp) { pdf_obj *needle, *dest; char *uri; + if (xp) *xp = 0; + if (yp) *yp = 0; + needle = pdf_new_string(ctx, doc, name, strlen(name)); fz_try(ctx) dest = pdf_lookup_dest(ctx, doc, needle); @@ -217,7 +220,7 @@ pdf_lookup_anchor(fz_context *ctx, pdf_document *doc, const char *name) if (dest) { uri = pdf_parse_link_dest(ctx, doc, dest); - return pdf_resolve_link(ctx, doc, uri, NULL, NULL); + return pdf_resolve_link(ctx, doc, uri, xp, yp); } if (!strncmp(name, "page=", 5)) |