diff options
-rw-r--r-- | include/mupdf/fitz/outline.h | 1 | ||||
-rw-r--r-- | source/pdf/pdf-outline.c | 7 |
2 files changed, 8 insertions, 0 deletions
diff --git a/include/mupdf/fitz/outline.h b/include/mupdf/fitz/outline.h index 6a3ca81a..f0b2cc42 100644 --- a/include/mupdf/fitz/outline.h +++ b/include/mupdf/fitz/outline.h @@ -34,6 +34,7 @@ struct fz_outline_s fz_link_dest dest; fz_outline *next; fz_outline *down; + int is_open; }; /* diff --git a/source/pdf/pdf-outline.c b/source/pdf/pdf-outline.c index 8f83fdf9..e8635551 100644 --- a/source/pdf/pdf-outline.c +++ b/source/pdf/pdf-outline.c @@ -23,6 +23,7 @@ pdf_load_outline_imp(fz_context *ctx, pdf_document *doc, pdf_obj *dict) node->dest.kind = FZ_LINK_NONE; node->down = NULL; node->next = NULL; + node->is_open = 0; *prev = node; prev = &node->next; @@ -37,8 +38,14 @@ pdf_load_outline_imp(fz_context *ctx, pdf_document *doc, pdf_obj *dict) obj = pdf_dict_get(ctx, dict, PDF_NAME_First); if (obj) + { node->down = pdf_load_outline_imp(ctx, doc, obj); + obj = pdf_dict_gets(ctx, dict, PDF_NAME_Count); + if (pdf_to_int(ctx, obj) > 0) + node->is_open = 1; + } + dict = pdf_dict_get(ctx, dict, PDF_NAME_Next); } } |