diff options
Diffstat (limited to 'source/tools')
-rw-r--r-- | source/tools/mjsgen.c | 14 | ||||
-rw-r--r-- | source/tools/mudraw.c | 174 | ||||
-rw-r--r-- | source/tools/pdfclean.c | 134 | ||||
-rw-r--r-- | source/tools/pdfextract.c | 48 | ||||
-rw-r--r-- | source/tools/pdfinfo.c | 501 | ||||
-rw-r--r-- | source/tools/pdfposter.c | 68 | ||||
-rw-r--r-- | source/tools/pdfshow.c | 54 |
7 files changed, 496 insertions, 497 deletions
diff --git a/source/tools/mjsgen.c b/source/tools/mjsgen.c index 3e11fde3..d1366062 100644 --- a/source/tools/mjsgen.c +++ b/source/tools/mjsgen.c @@ -100,14 +100,14 @@ static void processpage(fz_context *ctx, fz_document *doc, int pagenum) fz_try(ctx) { - page = fz_load_page(doc, pagenum - 1); + page = fz_load_page(ctx, doc, pagenum - 1); } fz_catch(ctx) { fz_rethrow_message(ctx, "cannot load page %d in file '%s'", pagenum, filename); } - pdf_document *inter = pdf_specifics(doc); + pdf_document *inter = pdf_specifics(ctx, doc); pdf_widget *widget = NULL; if (inter) @@ -220,7 +220,7 @@ static void processpage(fz_context *ctx, fz_document *doc, int pagenum) static void processpages(fz_context *ctx, fz_document *doc) { int page, pagecount; - pagecount = fz_count_pages(doc); + pagecount = fz_count_pages(ctx, doc); for (page = 1; page <= pagecount; ++page) processpage(ctx, doc, page); } @@ -232,7 +232,7 @@ int main(int argc, char **argv) fz_context *ctx; int c; - fz_var(doc); + fz_var(ctx, doc); while ((c = fz_getopt(argc, argv, "p:")) != -1) { @@ -269,7 +269,7 @@ int main(int argc, char **argv) if (fz_needs_password(doc)) { - if (!fz_authenticate_password(doc, password)) + if (!fz_authenticate_password(ctx, doc, password)) fz_throw(ctx, FZ_ERROR_GENERIC, "cannot authenticate password: %s", filename); fprintf(mujstest_file, "PASSWORD %s\n", password); } @@ -278,7 +278,7 @@ int main(int argc, char **argv) processpages(ctx, doc); - fz_close_document(doc); + fz_drop_document(ctx, doc); } fz_catch(ctx) { @@ -287,7 +287,7 @@ int main(int argc, char **argv) } fclose(mujstest_file); - fz_free_context(ctx); + fz_drop_context(ctx); return 0; } diff --git a/source/tools/mudraw.c b/source/tools/mudraw.c index 420ca1dc..b2feccf6 100644 --- a/source/tools/mudraw.c +++ b/source/tools/mudraw.c @@ -212,7 +212,7 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) fz_try(ctx) { - page = fz_load_page(doc, pagenum - 1); + page = fz_load_page(ctx, doc, pagenum - 1); } fz_catch(ctx) { @@ -225,17 +225,17 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) { list = fz_new_display_list(ctx); dev = fz_new_list_device(ctx, list); - fz_run_page(doc, page, dev, &fz_identity, &cookie); + fz_run_page(ctx, page, dev, &fz_identity, &cookie); } fz_always(ctx) { - fz_free_device(dev); + fz_drop_device(ctx, dev); dev = NULL; } fz_catch(ctx) { fz_drop_display_list(ctx, list); - fz_free_page(doc, page); + fz_drop_page(ctx, page); fz_rethrow_message(ctx, "cannot draw page %d in file '%s'", pagenum, filename); } } @@ -246,19 +246,19 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) { dev = fz_new_trace_device(ctx); if (list) - fz_run_display_list(list, dev, &fz_identity, &fz_infinite_rect, &cookie); + fz_run_display_list(ctx, list, dev, &fz_identity, &fz_infinite_rect, &cookie); else - fz_run_page(doc, page, dev, &fz_identity, &cookie); + fz_run_page(ctx, page, dev, &fz_identity, &cookie); } fz_always(ctx) { - fz_free_device(dev); + fz_drop_device(ctx, dev); dev = NULL; } fz_catch(ctx) { fz_drop_display_list(ctx, list); - fz_free_page(doc, page); + fz_drop_page(ctx, page); fz_rethrow(ctx); } } @@ -274,12 +274,12 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) text = fz_new_text_page(ctx); dev = fz_new_text_device(ctx, sheet, text); if (showtext == TEXT_HTML) - fz_disable_device_hints(dev, FZ_IGNORE_IMAGE); + fz_disable_device_hints(ctx, dev, FZ_IGNORE_IMAGE); if (list) - fz_run_display_list(list, dev, &fz_identity, &fz_infinite_rect, &cookie); + fz_run_display_list(ctx, list, dev, &fz_identity, &fz_infinite_rect, &cookie); else - fz_run_page(doc, page, dev, &fz_identity, &cookie); - fz_free_device(dev); + fz_run_page(ctx, page, dev, &fz_identity, &cookie); + fz_drop_device(ctx, dev); dev = NULL; if (showtext == TEXT_XML) { @@ -293,19 +293,19 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) else if (showtext == TEXT_PLAIN) { fz_print_text_page(ctx, out, text); - fz_printf(out, "\f\n"); + fz_printf(ctx, out, "\f\n"); } } fz_always(ctx) { - fz_free_device(dev); + fz_drop_device(ctx, dev); dev = NULL; - fz_free_text_page(ctx, text); + fz_drop_text_page(ctx, text); } fz_catch(ctx) { fz_drop_display_list(ctx, list); - fz_free_page(doc, page); + fz_drop_page(ctx, page); fz_rethrow(ctx); } } @@ -320,13 +320,13 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) fz_try(ctx) { if (list) - fz_run_display_list(list, dev, &fz_identity, &fz_infinite_rect, NULL); + fz_run_display_list(ctx, list, dev, &fz_identity, &fz_infinite_rect, NULL); else - fz_run_page(doc, page, dev, &fz_identity, &cookie); + fz_run_page(ctx, page, dev, &fz_identity, &cookie); } fz_always(ctx) { - fz_free_device(dev); + fz_drop_device(ctx, dev); dev = NULL; } fz_catch(ctx) @@ -342,36 +342,36 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) fz_rect bounds, tbounds; pdf_page *newpage; - fz_bound_page(doc, page, &bounds); + fz_bound_page(ctx, page, &bounds); fz_rotate(&ctm, rotation); tbounds = bounds; fz_transform_rect(&tbounds, &ctm); - newpage = pdf_create_page(pdfout, bounds, 72, 0); + newpage = pdf_create_page(ctx, pdfout, bounds, 72, 0); fz_try(ctx) { - dev = pdf_page_write(pdfout, newpage); + dev = pdf_page_write(ctx, pdfout, newpage); if (list) - fz_run_display_list(list, dev, &ctm, &tbounds, &cookie); + fz_run_display_list(ctx, list, dev, &ctm, &tbounds, &cookie); else - fz_run_page(doc, page, dev, &ctm, &cookie); - fz_free_device(dev); + fz_run_page(ctx, page, dev, &ctm, &cookie); + fz_drop_device(ctx, dev); dev = NULL; } fz_always(ctx) { - fz_free_device(dev); + fz_drop_device(ctx, dev); dev = NULL; } fz_catch(ctx) { fz_drop_display_list(ctx, list); - fz_free_page(doc, page); + fz_drop_page(ctx, page); fz_rethrow(ctx); } - pdf_insert_page(pdfout, newpage, INT_MAX); - pdf_free_page(pdfout, newpage); + pdf_insert_page(ctx, pdfout, newpage, INT_MAX); + fz_drop_page(ctx, &newpage->super); } if (output && output_format == OUT_SVG) @@ -393,9 +393,9 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) fz_throw(ctx, FZ_ERROR_GENERIC, "cannot open file '%s': %s", buf, strerror(errno)); } - out = fz_new_output_with_file(ctx, file); + out = fz_new_output_with_file(ctx, file, 0); - fz_bound_page(doc, page, &bounds); + fz_bound_page(ctx, page, &bounds); zoom = resolution / 72; fz_pre_rotate(fz_scale(&ctm, zoom, zoom), rotation); tbounds = bounds; @@ -405,24 +405,24 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) { dev = fz_new_svg_device(ctx, out, tbounds.x1-tbounds.x0, tbounds.y1-tbounds.y0); if (list) - fz_run_display_list(list, dev, &ctm, &tbounds, &cookie); + fz_run_display_list(ctx, list, dev, &ctm, &tbounds, &cookie); else - fz_run_page(doc, page, dev, &ctm, &cookie); - fz_free_device(dev); + fz_run_page(ctx, page, dev, &ctm, &cookie); + fz_drop_device(ctx, dev); dev = NULL; } fz_always(ctx) { - fz_free_device(dev); + fz_drop_device(ctx, dev); dev = NULL; - fz_close_output(out); + fz_drop_output(ctx, out); if (file != stdout) fclose(file); } fz_catch(ctx) { fz_drop_display_list(ctx, list); - fz_free_page(doc, page); + fz_drop_page(ctx, page); fz_rethrow(ctx); } } @@ -441,7 +441,7 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) fz_var(pix); fz_var(poc); - fz_bound_page(doc, page, &bounds); + fz_bound_page(ctx, page, &bounds); zoom = resolution / 72; fz_pre_scale(fz_rotate(&ctm, rotation), zoom, zoom); tbounds = bounds; @@ -527,7 +527,7 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) if (output) { if (!strcmp(output, "-")) - output_file = fz_new_output_with_file(ctx, stdout); + output_file = fz_new_output_with_file(ctx, stdout, 0); else { sprintf(filename_buf, output, pagenum); @@ -535,11 +535,11 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) } if (output_format == OUT_PGM || output_format == OUT_PPM || output_format == OUT_PNM) - fz_output_pnm_header(output_file, pix->w, totalheight, pix->n); + fz_output_pnm_header(ctx, output_file, pix->w, totalheight, pix->n); else if (output_format == OUT_PAM) - fz_output_pam_header(output_file, pix->w, totalheight, pix->n, savealpha); + fz_output_pam_header(ctx, output_file, pix->w, totalheight, pix->n, savealpha); else if (output_format == OUT_PNG) - poc = fz_output_png_header(output_file, pix->w, totalheight, pix->n, savealpha); + poc = fz_output_png_header(ctx, output_file, pix->w, totalheight, pix->n, savealpha); } for (band = 0; band < bands; band++) @@ -551,12 +551,12 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) dev = fz_new_draw_device(ctx, pix); if (alphabits == 0) - fz_enable_device_hints(dev, FZ_DONT_INTERPOLATE_IMAGES); + fz_enable_device_hints(ctx, dev, FZ_DONT_INTERPOLATE_IMAGES); if (list) - fz_run_display_list(list, dev, &ctm, &tbounds, &cookie); + fz_run_display_list(ctx, list, dev, &ctm, &tbounds, &cookie); else - fz_run_page(doc, page, dev, &ctm, &cookie); - fz_free_device(dev); + fz_run_page(ctx, page, dev, &ctm, &cookie); + fz_drop_device(ctx, dev); dev = NULL; if (invert) @@ -570,11 +570,11 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) if (output) { if (output_format == OUT_PGM || output_format == OUT_PPM || output_format == OUT_PNM) - fz_output_pnm_band(output_file, pix->w, totalheight, pix->n, band, drawheight, pix->samples); + fz_output_pnm_band(ctx, output_file, pix->w, totalheight, pix->n, band, drawheight, pix->samples); else if (output_format == OUT_PAM) - fz_output_pam_band(output_file, pix->w, totalheight, pix->n, band, drawheight, pix->samples, savealpha); + fz_output_pam_band(ctx, output_file, pix->w, totalheight, pix->n, band, drawheight, pix->samples, savealpha); else if (output_format == OUT_PNG) - fz_output_png_band(output_file, pix->w, totalheight, pix->n, band, drawheight, pix->samples, savealpha, poc); + fz_output_png_band(ctx, output_file, pix->w, totalheight, pix->n, band, drawheight, pix->samples, savealpha, poc); else if (output_format == OUT_PWG) { if (strstr(output, "%d") != NULL) @@ -625,7 +625,7 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) unsigned char digest[16]; int i; - fz_md5_pixmap(pix, digest); + fz_md5_pixmap(ctx, pix, digest); printf(" "); for (i = 0; i < 16; i++) printf("%02x", digest[i]); @@ -636,19 +636,19 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) if (output) { if (output_format == OUT_PNG) - fz_output_png_trailer(output_file, poc); + fz_output_png_trailer(ctx, output_file, poc); } - fz_free_device(dev); + fz_drop_device(ctx, dev); dev = NULL; fz_drop_pixmap(ctx, pix); if (output_file) - fz_close_output(output_file); + fz_drop_output(ctx, output_file); } fz_catch(ctx) { fz_drop_display_list(ctx, list); - fz_free_page(doc, page); + fz_drop_page(ctx, page); fz_rethrow(ctx); } } @@ -656,7 +656,7 @@ static void drawpage(fz_context *ctx, fz_document *doc, int pagenum) if (list) fz_drop_display_list(ctx, list); - fz_free_page(doc, page); + fz_drop_page(ctx, page); if (showtime) { @@ -700,7 +700,7 @@ static void drawrange(fz_context *ctx, fz_document *doc, char *range) int page, spage, epage, pagecount; char *spec, *dash; - pagecount = fz_count_pages(doc); + pagecount = fz_count_pages(ctx, doc); spec = fz_strsep(&range, ","); while (spec) { @@ -735,13 +735,13 @@ static void drawrange(fz_context *ctx, fz_document *doc, char *range) static void drawoutline(fz_context *ctx, fz_document *doc) { - fz_outline *outline = fz_load_outline(doc); + fz_outline *outline = fz_load_outline(ctx, doc); fz_output *out = NULL; fz_var(out); fz_try(ctx) { - out = fz_new_output_with_file(ctx, stdout); + out = fz_new_output_with_file(ctx, stdout, 0); if (showoutline > 1) fz_print_outline_xml(ctx, out, outline); else @@ -749,8 +749,8 @@ static void drawoutline(fz_context *ctx, fz_document *doc) } fz_always(ctx) { - fz_close_output(out); - fz_free_outline(ctx, outline); + fz_drop_output(ctx, out); + fz_drop_outline(ctx, outline); } fz_catch(ctx) { @@ -1002,26 +1002,26 @@ int main(int argc, char **argv) timing.maxfilename = ""; if (showxml || showtext) - out = fz_new_output_with_file(ctx, stdout); + out = fz_new_output_with_file(ctx, stdout, 0); if (showxml || showtext == TEXT_XML) - fz_printf(out, "<?xml version=\"1.0\"?>\n"); + fz_printf(ctx, out, "<?xml version=\"1.0\"?>\n"); if (showtext) sheet = fz_new_text_sheet(ctx); if (showtext == TEXT_HTML) { - fz_printf(out, "<style>\n"); - fz_printf(out, "body{background-color:gray;margin:12pt;}\n"); - fz_printf(out, "div.page{background-color:white;margin:6pt;padding:6pt;}\n"); - fz_printf(out, "div.block{border:1px solid gray;margin:6pt;padding:6pt;}\n"); - fz_printf(out, "div.metaline{display:table;width:100%%}\n"); - fz_printf(out, "div.line{display:table-row;padding:6pt}\n"); - fz_printf(out, "div.cell{display:table-cell;padding-left:6pt;padding-right:6pt}\n"); - fz_printf(out, "p{margin:0pt;padding:0pt;}\n"); - fz_printf(out, "</style>\n"); - fz_printf(out, "<body>\n"); + fz_printf(ctx, out, "<style>\n"); + fz_printf(ctx, out, "body{background-color:gray;margin:12pt;}\n"); + fz_printf(ctx, out, "div.page{background-color:white;margin:6pt;padding:6pt;}\n"); + fz_printf(ctx, out, "div.block{border:1px solid gray;margin:6pt;padding:6pt;}\n"); + fz_printf(ctx, out, "div.metaline{display:table;width:100%%}\n"); + fz_printf(ctx, out, "div.line{display:table-row;padding:6pt}\n"); + fz_printf(ctx, out, "div.cell{display:table-cell;padding-left:6pt;padding-right:6pt}\n"); + fz_printf(ctx, out, "p{margin:0pt;padding:0pt;}\n"); + fz_printf(ctx, out, "</style>\n"); + fz_printf(ctx, out, "<body>\n"); } fz_try(ctx) @@ -1044,14 +1044,14 @@ int main(int argc, char **argv) fz_rethrow_message(ctx, "cannot open document: %s", filename); } - if (fz_needs_password(doc)) + if (fz_needs_password(ctx, doc)) { - if (!fz_authenticate_password(doc, password)) + if (!fz_authenticate_password(ctx, doc, password)) fz_throw(ctx, FZ_ERROR_GENERIC, "cannot authenticate password: %s", filename); } if (showxml || showtext == TEXT_XML) - fz_printf(out, "<document name=\"%s\">\n", filename); + fz_printf(ctx, out, "<document name=\"%s\">\n", filename); if (showoutline) drawoutline(ctx, doc); @@ -1065,9 +1065,9 @@ int main(int argc, char **argv) } if (showxml || showtext == TEXT_XML) - fz_printf(out, "</document>\n"); + fz_printf(ctx, out, "</document>\n"); - fz_close_document(doc); + fz_drop_document(ctx, doc); doc = NULL; } fz_catch(ctx) @@ -1075,7 +1075,7 @@ int main(int argc, char **argv) if (!ignore_errors) fz_rethrow(ctx); - fz_close_document(doc); + fz_drop_document(ctx, doc); doc = NULL; fz_warn(ctx, "ignoring error in '%s'", filename); } @@ -1083,7 +1083,7 @@ int main(int argc, char **argv) } fz_catch(ctx) { - fz_close_document(doc); + fz_drop_document(ctx, doc); fprintf(stderr, "error: cannot draw '%s'\n", filename); errored = 1; } @@ -1092,24 +1092,24 @@ int main(int argc, char **argv) { fz_write_options opts = { 0 }; - pdf_write_document(pdfout, output, &opts); - pdf_close_document(pdfout); + pdf_write_document(ctx, pdfout, output, &opts); + pdf_close_document(ctx, pdfout); } if (showtext == TEXT_HTML) { - fz_printf(out, "</body>\n"); - fz_printf(out, "<style>\n"); + fz_printf(ctx, out, "</body>\n"); + fz_printf(ctx, out, "<style>\n"); fz_print_text_sheet(ctx, out, sheet); - fz_printf(out, "</style>\n"); + fz_printf(ctx, out, "</style>\n"); } if (showtext) - fz_free_text_sheet(ctx, sheet); + fz_drop_text_sheet(ctx, sheet); if (showxml || showtext) { - fz_close_output(out); + fz_drop_output(ctx, out); out = NULL; } @@ -1131,7 +1131,7 @@ int main(int argc, char **argv) } } - fz_free_context(ctx); + fz_drop_context(ctx); if (showmemory) { diff --git a/source/tools/pdfclean.c b/source/tools/pdfclean.c index d7d5ac97..07ca7e5a 100644 --- a/source/tools/pdfclean.c +++ b/source/tools/pdfclean.c @@ -36,15 +36,15 @@ static void usage(void) } static int -string_in_names_list(pdf_obj *p, pdf_obj *names_list) +string_in_names_list(fz_context *ctx, pdf_obj *p, pdf_obj *names_list) { - int n = pdf_array_len(names_list); + int n = pdf_array_len(ctx, names_list); int i; - char *str = pdf_to_str_buf(p); + char *str = pdf_to_str_buf(ctx, p); for (i = 0; i < n ; i += 2) { - if (!strcmp(pdf_to_str_buf(pdf_array_get(names_list, i)), str)) + if (!strcmp(pdf_to_str_buf(ctx, pdf_array_get(ctx, names_list, i)), str)) return 1; } return 0; @@ -54,18 +54,18 @@ string_in_names_list(pdf_obj *p, pdf_obj *names_list) * Recreate page tree to only retain specified pages. */ -static void retainpage(pdf_document *doc, pdf_obj *parent, pdf_obj *kids, int page) +static void retainpage(fz_context *ctx, pdf_document *doc, pdf_obj *parent, pdf_obj *kids, int page) { - pdf_obj *pageref = pdf_lookup_page_obj(doc, page-1); - pdf_obj *pageobj = pdf_resolve_indirect(pageref); + pdf_obj *pageref = pdf_lookup_page_obj(ctx, doc, page-1); + pdf_obj *pageobj = pdf_resolve_indirect(ctx, pageref); - pdf_dict_puts(pageobj, "Parent", parent); + pdf_dict_puts(ctx, pageobj, "Parent", parent); /* Store page object in new kids array */ - pdf_array_push(kids, pageref); + pdf_array_push(ctx, kids, pageref); } -static void retainpages(globals *glo, int argc, char **argv) +static void retainpages(fz_context *ctx, globals *glo, int argc, char **argv) { pdf_obj *oldroot, *root, *pages, *kids, *countobj, *parent, *olddests; pdf_document *doc = glo->doc; @@ -76,21 +76,21 @@ static void retainpages(globals *glo, int argc, char **argv) /* Keep only pages/type and (reduced) dest entries to avoid * references to unretained pages */ - oldroot = pdf_dict_gets(pdf_trailer(doc), "Root"); - pages = pdf_dict_gets(oldroot, "Pages"); - olddests = pdf_load_name_tree(doc, "Dests"); + oldroot = pdf_dict_gets(ctx, pdf_trailer(ctx, doc), "Root"); + pages = pdf_dict_gets(ctx, oldroot, "Pages"); + olddests = pdf_load_name_tree(ctx, doc, "Dests"); - root = pdf_new_dict(doc, 2); - pdf_dict_puts(root, "Type", pdf_dict_gets(oldroot, "Type")); - pdf_dict_puts(root, "Pages", pdf_dict_gets(oldroot, "Pages")); + root = pdf_new_dict(ctx, doc, 2); + pdf_dict_puts(ctx, root, "Type", pdf_dict_gets(ctx, oldroot, "Type")); + pdf_dict_puts(ctx, root, "Pages", pdf_dict_gets(ctx, oldroot, "Pages")); - pdf_update_object(doc, pdf_to_num(oldroot), root); + pdf_update_object(ctx, doc, pdf_to_num(ctx, oldroot), root); - pdf_drop_obj(root); + pdf_drop_obj(ctx, root); /* Create a new kids array with only the pages we want to keep */ - parent = pdf_new_indirect(doc, pdf_to_num(pages), pdf_to_gen(pages)); - kids = pdf_new_array(doc, 1); + parent = pdf_new_indirect(ctx, doc, pdf_to_num(ctx, pages), pdf_to_gen(ctx, pages)); + kids = pdf_new_array(ctx, doc, 1); /* Retain pages specified */ while (argc - argidx) @@ -99,7 +99,7 @@ static void retainpages(globals *glo, int argc, char **argv) char *spec, *dash; char *pagelist = argv[argidx]; - pagecount = pdf_count_pages(doc); + pagecount = pdf_count_pages(ctx, doc); spec = fz_strsep(&pagelist, ","); while (spec) { @@ -123,10 +123,10 @@ static void retainpages(globals *glo, int argc, char **argv) if (spage < epage) for (page = spage; page <= epage; ++page) - retainpage(doc, parent, kids, page); + retainpage(ctx, doc, parent, kids, page); else for (page = spage; page >= epage; --page) - retainpage(doc, parent, kids, page); + retainpage(ctx, doc, parent, kids, page); spec = fz_strsep(&pagelist, ","); } @@ -134,49 +134,49 @@ static void retainpages(globals *glo, int argc, char **argv) argidx++; } - pdf_drop_obj(parent); + pdf_drop_obj(ctx, parent); /* Update page count and kids array */ - countobj = pdf_new_int(doc, pdf_array_len(kids)); - pdf_dict_puts(pages, "Count", countobj); - pdf_drop_obj(countobj); - pdf_dict_puts(pages, "Kids", kids); - pdf_drop_obj(kids); + countobj = pdf_new_int(ctx, doc, pdf_array_len(ctx, kids)); + pdf_dict_puts(ctx, pages, "Count", countobj); + pdf_drop_obj(ctx, countobj); + pdf_dict_puts(ctx, pages, "Kids", kids); + pdf_drop_obj(ctx, kids); /* Also preserve the (partial) Dests name tree */ if (olddests) { - pdf_obj *names = pdf_new_dict(doc, 1); - pdf_obj *dests = pdf_new_dict(doc, 1); - int len = pdf_dict_len(olddests); + pdf_obj *names = pdf_new_dict(ctx, doc, 1); + pdf_obj *dests = pdf_new_dict(ctx, doc, 1); + int len = pdf_dict_len(ctx, olddests); - names_list = pdf_new_array(doc, 32); + names_list = pdf_new_array(ctx, doc, 32); for (i = 0; i < len; i++) { - pdf_obj *key = pdf_dict_get_key(olddests, i); - pdf_obj *val = pdf_dict_get_val(olddests, i); - pdf_obj *dest = pdf_dict_gets(val, "D"); + pdf_obj *key = pdf_dict_get_key(ctx, olddests, i); + pdf_obj *val = pdf_dict_get_val(ctx, olddests, i); + pdf_obj *dest = pdf_dict_gets(ctx, val, "D"); - dest = pdf_array_get(dest ? dest : val, 0); - if (pdf_array_contains(pdf_dict_gets(pages, "Kids"), dest)) + dest = pdf_array_get(ctx, dest ? dest : val, 0); + if (pdf_array_contains(ctx, pdf_dict_gets(ctx, pages, "Kids"), dest)) { - pdf_obj *key_str = pdf_new_string(doc, pdf_to_name(key), strlen(pdf_to_name(key))); - pdf_array_push(names_list, key_str); - pdf_array_push(names_list, val); - pdf_drop_obj(key_str); + pdf_obj *key_str = pdf_new_string(ctx, doc, pdf_to_name(ctx, key), strlen(pdf_to_name(ctx, key))); + pdf_array_push(ctx, names_list, key_str); + pdf_array_push(ctx, names_list, val); + pdf_drop_obj(ctx, key_str); } } - root = pdf_dict_gets(pdf_trailer(doc), "Root"); - pdf_dict_puts(dests, "Names", names_list); - pdf_dict_puts(names, "Dests", dests); - pdf_dict_puts(root, "Names", names); + root = pdf_dict_gets(ctx, pdf_trailer(ctx, doc), "Root"); + pdf_dict_puts(ctx, dests, "Names", names_list); + pdf_dict_puts(ctx, names, "Dests", dests); + pdf_dict_puts(ctx, root, "Names", names); - pdf_drop_obj(names); - pdf_drop_obj(dests); - pdf_drop_obj(names_list); - pdf_drop_obj(olddests); + pdf_drop_obj(ctx, names); + pdf_drop_obj(ctx, dests); + pdf_drop_obj(ctx, names_list); + pdf_drop_obj(ctx, olddests); } /* Force the next call to pdf_count_pages to recount */ @@ -184,36 +184,36 @@ static void retainpages(globals *glo, int argc, char **argv) /* Edit each pages /Annot list to remove any links that point to * nowhere. */ - pagecount = pdf_count_pages(doc); + pagecount = pdf_count_pages(ctx, doc); for (i = 0; i < pagecount; i++) { - pdf_obj *pageref = pdf_lookup_page_obj(doc, i); - pdf_obj *pageobj = pdf_resolve_indirect(pageref); + pdf_obj *pageref = pdf_lookup_page_obj(ctx, doc, i); + pdf_obj *pageobj = pdf_resolve_indirect(ctx, pageref); - pdf_obj *annots = pdf_dict_gets(pageobj, "Annots"); + pdf_obj *annots = pdf_dict_gets(ctx, pageobj, "Annots"); - int len = pdf_array_len(annots); + int len = pdf_array_len(ctx, annots); int j; for (j = 0; j < len; j++) { - pdf_obj *o = pdf_array_get(annots, j); + pdf_obj *o = pdf_array_get(ctx, annots, j); pdf_obj *p; - if (strcmp(pdf_to_name(pdf_dict_gets(o, "Subtype")), "Link")) + if (strcmp(pdf_to_name(ctx, pdf_dict_gets(ctx, o, "Subtype")), "Link")) continue; - p = pdf_dict_gets(o, "A"); - if (strcmp(pdf_to_name(pdf_dict_gets(p, "S")), "GoTo")) + p = pdf_dict_gets(ctx, o, "A"); + if (strcmp(pdf_to_name(ctx, pdf_dict_gets(ctx, p, "S")), "GoTo")) continue; - if (string_in_names_list(pdf_dict_gets(p, "D"), names_list)) + if (string_in_names_list(ctx, pdf_dict_gets(ctx, p, "D"), names_list)) continue; /* FIXME: Should probably look at Next too */ /* Remove this annotation */ - pdf_array_delete(annots, j); + pdf_array_delete(ctx, annots, j); j--; } } @@ -228,19 +228,19 @@ void pdfclean_clean(fz_context *ctx, char *infile, char *outfile, char *password fz_try(ctx) { glo.doc = pdf_open_document_no_run(ctx, infile); - if (pdf_needs_password(glo.doc)) - if (!pdf_authenticate_password(glo.doc, password)) + if (pdf_needs_password(ctx, glo.doc)) + if (!pdf_authenticate_password(ctx, glo.doc, password)) fz_throw(glo.ctx, FZ_ERROR_GENERIC, "cannot authenticate password: %s", infile); /* Only retain the specified subset of the pages */ if (argc) - retainpages(&glo, argc, argv); + retainpages(ctx, &glo, argc, argv); - pdf_write_document(glo.doc, outfile, opts); + pdf_write_document(ctx, glo.doc, outfile, opts); } fz_always(ctx) { - pdf_close_document(glo.doc); + pdf_close_document(ctx, glo.doc); } fz_catch(ctx) { @@ -310,7 +310,7 @@ int pdfclean_main(int argc, char **argv) { errors++; } - fz_free_context(ctx); + fz_drop_context(ctx); return errors == 0; } diff --git a/source/tools/pdfextract.c b/source/tools/pdfextract.c index 0304845f..ce293cfd 100644 --- a/source/tools/pdfextract.c +++ b/source/tools/pdfextract.c @@ -18,14 +18,14 @@ static void usage(void) static int isimage(pdf_obj *obj) { - pdf_obj *type = pdf_dict_gets(obj, "Subtype"); - return pdf_is_name(type) && !strcmp(pdf_to_name(type), "Image"); + pdf_obj *type = pdf_dict_gets(ctx, obj, "Subtype"); + return pdf_is_name(ctx, type) && !strcmp(pdf_to_name(ctx, type), "Image"); } static int isfontdesc(pdf_obj *obj) { - pdf_obj *type = pdf_dict_gets(obj, "Type"); - return pdf_is_name(type) && !strcmp(pdf_to_name(type), "FontDescriptor"); + pdf_obj *type = pdf_dict_gets(ctx, obj, "Type"); + return pdf_is_name(ctx, type) && !strcmp(pdf_to_name(ctx, type), "FontDescriptor"); } static void writepixmap(fz_context *ctx, fz_pixmap *pix, char *file, int rgb) @@ -67,11 +67,11 @@ static void saveimage(int num) pdf_obj *ref; char buf[32]; - ref = pdf_new_indirect(doc, num, 0); + ref = pdf_new_indirect(ctx, doc, num, 0); /* TODO: detect DCTD and save as jpeg */ - image = pdf_load_image(doc, ref); + image = pdf_load_image(ctx, doc, ref); pix = fz_new_pixmap_from_image(ctx, image, 0, 0); fz_drop_image(ctx, image); @@ -79,7 +79,7 @@ static void saveimage(int num) writepixmap(ctx, pix, buf, dorgb); fz_drop_pixmap(ctx, pix); - pdf_drop_obj(ref); + pdf_drop_obj(ctx, ref); } static void savefont(pdf_obj *dict, int num) @@ -95,34 +95,34 @@ static void savefont(pdf_obj *dict, int num) int n, len; unsigned char *data; - obj = pdf_dict_gets(dict, "FontName"); + obj = pdf_dict_gets(ctx, dict, "FontName"); if (obj) - fontname = pdf_to_name(obj); + fontname = pdf_to_name(ctx, obj); - obj = pdf_dict_gets(dict, "FontFile"); + obj = pdf_dict_gets(ctx, dict, "FontFile"); if (obj) { stream = obj; ext = "pfa"; } - obj = pdf_dict_gets(dict, "FontFile2"); + obj = pdf_dict_gets(ctx, dict, "FontFile2"); if (obj) { stream = obj; ext = "ttf"; } - obj = pdf_dict_gets(dict, "FontFile3"); + obj = pdf_dict_gets(ctx, dict, "FontFile3"); if (obj) { stream = obj; - obj = pdf_dict_gets(obj, "Subtype"); - if (obj && !pdf_is_name(obj)) + obj = pdf_dict_gets(ctx, obj, "Subtype"); + if (obj && !pdf_is_name(ctx, obj)) fz_throw(ctx, FZ_ERROR_GENERIC, "invalid font descriptor subtype"); - subtype = pdf_to_name(obj); + subtype = pdf_to_name(ctx, obj); if (!strcmp(subtype, "Type1C")) ext = "cff"; else if (!strcmp(subtype, "CIDFontType0C")) @@ -139,7 +139,7 @@ static void savefont(pdf_obj *dict, int num) return; } - buf = pdf_load_stream(doc, pdf_to_num(stream), pdf_to_gen(stream)); + buf = pdf_load_stream(ctx, doc, pdf_to_num(ctx, stream), pdf_to_gen(ctx, stream)); snprintf(namebuf, sizeof(namebuf), "%s-%04d.%s", fontname, num, ext); printf("extracting font %s\n", namebuf); @@ -168,14 +168,14 @@ static void showobject(int num) fz_try(ctx) { - obj = pdf_load_object(doc, num, 0); + obj = pdf_load_object(ctx, doc, num, 0); if (isimage(obj)) saveimage(num); else if (isfontdesc(obj)) savefont(obj, num); - pdf_drop_obj(obj); + pdf_drop_obj(ctx, obj); } fz_catch(ctx) { @@ -212,14 +212,14 @@ int pdfextract_main(int argc, char **argv) } doc = pdf_open_document_no_run(ctx, infile); - if (pdf_needs_password(doc)) - if (!pdf_authenticate_password(doc, password)) + if (pdf_needs_password(ctx, doc)) + if (!pdf_authenticate_password(ctx, doc, password)) fz_throw(ctx, FZ_ERROR_GENERIC, "cannot authenticate password: %s", infile); if (fz_optind == argc) { - int len = pdf_count_objects(doc); - for (o = 0; o < len; o++) + int len = pdf_count_objects(ctx, doc); + for (o = 1; o < len; o++) showobject(o); } else @@ -231,8 +231,8 @@ int pdfextract_main(int argc, char **argv) } } - pdf_close_document(doc); + pdf_close_document(ctx, doc); fz_flush_warnings(ctx); - fz_free_context(ctx); + fz_drop_context(ctx); return 0; } diff --git a/source/tools/pdfinfo.c b/source/tools/pdfinfo.c index ff05012f..41989982 100644 --- a/source/tools/pdfinfo.c +++ b/source/tools/pdfinfo.c @@ -87,62 +87,62 @@ typedef struct globals_s int psobjs; } globals; -static void closexref(globals *glo) +static void closexref(fz_context *ctx, globals *glo) { int i; if (glo->doc) { - pdf_close_document(glo->doc); + pdf_close_document(ctx, glo->doc); glo->doc = NULL; } if (glo->dim) { for (i = 0; i < glo->dims; i++) - fz_free(glo->ctx, glo->dim[i].u.dim.bbox); - fz_free(glo->ctx, glo->dim); + fz_free(ctx, glo->dim[i].u.dim.bbox); + fz_free(ctx, glo->dim); glo->dim = NULL; glo->dims = 0; } if (glo->font) { - fz_free(glo->ctx, glo->font); + fz_free(ctx, glo->font); glo->font = NULL; glo->fonts = 0; } if (glo->image) { - fz_free(glo->ctx, glo->image); + fz_free(ctx, glo->image); glo->image = NULL; glo->images = 0; } if (glo->shading) { - fz_free(glo->ctx, glo->shading); + fz_free(ctx, glo->shading); glo->shading = NULL; glo->shadings = 0; } if (glo->pattern) { - fz_free(glo->ctx, glo->pattern); + fz_free(ctx, glo->pattern); glo->pattern = NULL; glo->patterns = 0; } if (glo->form) { - fz_free(glo->ctx, glo->form); + fz_free(ctx, glo->form); glo->form = NULL; glo->forms = 0; } if (glo->psobj) { - fz_free(glo->ctx, glo->psobj); + fz_free(ctx, glo->psobj); glo->psobj = NULL; glo->psobjs = 0; } @@ -164,48 +164,48 @@ infousage(void) } static void -showglobalinfo(globals *glo) +showglobalinfo(fz_context *ctx, globals *glo) { pdf_obj *obj; fz_output *out = glo->out; pdf_document *doc = glo->doc; - fz_printf(out, "\nPDF-%d.%d\n", doc->version / 10, doc->version % 10); + fz_printf(ctx, out, "\nPDF-%d.%d\n", doc->version / 10, doc->version % 10); - obj = pdf_dict_gets(pdf_trailer(doc), "Info"); + obj = pdf_dict_gets(ctx, pdf_trailer(ctx, doc), "Info"); if (obj) { - fz_printf(out, "Info object (%d %d R):\n", pdf_to_num(obj), pdf_to_gen(obj)); - pdf_output_obj(out, pdf_resolve_indirect(obj), 1); + fz_printf(ctx, out, "Info object (%d %d R):\n", pdf_to_num(ctx, obj), pdf_to_gen(ctx, obj)); + pdf_output_obj(ctx, out, pdf_resolve_indirect(ctx, obj), 1); } - obj = pdf_dict_gets(pdf_trailer(doc), "Encrypt"); + obj = pdf_dict_gets(ctx, pdf_trailer(ctx, doc), "Encrypt"); if (obj) { - fz_printf(out, "\nEncryption object (%d %d R):\n", pdf_to_num(obj), pdf_to_gen(obj)); - pdf_output_obj(out, pdf_resolve_indirect(obj), 1); + fz_printf(ctx, out, "\nEncryption object (%d %d R):\n", pdf_to_num(ctx, obj), pdf_to_gen(ctx, obj)); + pdf_output_obj(ctx, out, pdf_resolve_indirect(ctx, obj), 1); } - fz_printf(out, "\nPages: %d\n\n", glo->pagecount); + fz_printf(ctx, out, "\nPages: %d\n\n", glo->pagecount); } static void -gatherdimensions(globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj) +gatherdimensions(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj) { fz_rect bbox; pdf_obj *obj; int j; - obj = pdf_dict_gets(pageobj, "MediaBox"); - if (!pdf_is_array(obj)) + obj = pdf_dict_gets(ctx, pageobj, "MediaBox"); + if (!pdf_is_array(ctx, obj)) return; - pdf_to_rect(glo->ctx, obj, &bbox); + pdf_to_rect(ctx, obj, &bbox); - obj = pdf_dict_gets(pageobj, "UserUnit"); - if (pdf_is_real(obj)) + obj = pdf_dict_gets(ctx, pageobj, "UserUnit"); + if (pdf_is_real(ctx, obj)) { - float unit = pdf_to_real(obj); + float unit = pdf_to_real(ctx, obj); bbox.x0 *= unit; bbox.y0 *= unit; bbox.x1 *= unit; @@ -219,24 +219,24 @@ gatherdimensions(globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj) if (j < glo->dims) return; - glo->dim = fz_resize_array(glo->ctx, glo->dim, glo->dims+1, sizeof(struct info)); + glo->dim = fz_resize_array(ctx, glo->dim, glo->dims+1, sizeof(struct info)); glo->dims++; glo->dim[glo->dims - 1].page = page; glo->dim[glo->dims - 1].pageref = pageref; glo->dim[glo->dims - 1].pageobj = pageobj; - glo->dim[glo->dims - 1].u.dim.bbox = fz_malloc(glo->ctx, sizeof(fz_rect)); + glo->dim[glo->dims - 1].u.dim.bbox = fz_malloc(ctx, sizeof(fz_rect)); memcpy(glo->dim[glo->dims - 1].u.dim.bbox, &bbox, sizeof (fz_rect)); return; } static void -gatherfonts(globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_obj *dict) +gatherfonts(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_obj *dict) { int i, n; - n = pdf_dict_len(dict); + n = pdf_dict_len(ctx, dict); for (i = 0; i < n; i++) { pdf_obj *fontdict = NULL; @@ -245,26 +245,26 @@ gatherfonts(globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_obj pdf_obj *name = NULL; int k; - fontdict = pdf_dict_get_val(dict, i); - if (!pdf_is_dict(fontdict)) + fontdict = pdf_dict_get_val(ctx, dict, i); + if (!pdf_is_dict(ctx, fontdict)) { - fz_warn(glo->ctx, "not a font dict (%d %d R)", pdf_to_num(fontdict), pdf_to_gen(fontdict)); + fz_warn(ctx, "not a font dict (%d %d R)", pdf_to_num(ctx, fontdict), pdf_to_gen(ctx, fontdict)); continue; } - subtype = pdf_dict_gets(fontdict, "Subtype"); - basefont = pdf_dict_gets(fontdict, "BaseFont"); - if (!basefont || pdf_is_null(basefont)) - name = pdf_dict_gets(fontdict, "Name"); + subtype = pdf_dict_gets(ctx, fontdict, "Subtype"); + basefont = pdf_dict_gets(ctx, fontdict, "BaseFont"); + if (!basefont || pdf_is_null(ctx, basefont)) + name = pdf_dict_gets(ctx, fontdict, "Name"); for (k = 0; k < glo->fonts; k++) - if (!pdf_objcmp(glo->font[k].u.font.obj, fontdict)) + if (!pdf_objcmp(ctx, glo->font[k].u.font.obj, fontdict)) break; if (k < glo->fonts) continue; - glo->font = fz_resize_array(glo->ctx, glo->font, glo->fonts+1, sizeof(struct info)); + glo->font = fz_resize_array(ctx, glo->font, glo->fonts+1, sizeof(struct info)); glo->fonts++; glo->font[glo->fonts - 1].page = page; @@ -277,11 +277,11 @@ gatherfonts(globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_obj } static void -gatherimages(globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_obj *dict) +gatherimages(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_obj *dict) { int i, n; - n = pdf_dict_len(dict); + n = pdf_dict_len(ctx, dict); for (i = 0; i < n; i++) { pdf_obj *imagedict; @@ -294,46 +294,46 @@ gatherimages(globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_obj pdf_obj *altcs; int k; - imagedict = pdf_dict_get_val(dict, i); - if (!pdf_is_dict(imagedict)) + imagedict = pdf_dict_get_val(ctx, dict, i); + if (!pdf_is_dict(ctx, imagedict)) { - fz_warn(glo->ctx, "not an image dict (%d %d R)", pdf_to_num(imagedict), pdf_to_gen(imagedict)); + fz_warn(ctx, "not an image dict (%d %d R)", pdf_to_num(ctx, imagedict), pdf_to_gen(ctx, imagedict)); continue; } - type = pdf_dict_gets(imagedict, "Subtype"); - if (strcmp(pdf_to_name(type), "Image")) + type = pdf_dict_gets(ctx, imagedict, "Subtype"); + if (strcmp(pdf_to_name(ctx, type), "Image")) continue; - filter = pdf_dict_gets(imagedict, "Filter"); + filter = pdf_dict_gets(ctx, imagedict, "Filter"); altcs = NULL; - cs = pdf_dict_gets(imagedict, "ColorSpace"); - if (pdf_is_array(cs)) + cs = pdf_dict_gets(ctx, imagedict, "ColorSpace"); + if (pdf_is_array(ctx, cs)) { pdf_obj *cses = cs; - cs = pdf_array_get(cses, 0); - if (pdf_is_name(cs) && (!strcmp(pdf_to_name(cs), "DeviceN") || !strcmp(pdf_to_name(cs), "Separation"))) + cs = pdf_array_get(ctx, cses, 0); + if (pdf_is_name(ctx, cs) && (!strcmp(pdf_to_name(ctx, cs), "DeviceN") || !strcmp(pdf_to_name(ctx, cs), "Separation"))) { - altcs = pdf_array_get(cses, 2); - if (pdf_is_array(altcs)) - altcs = pdf_array_get(altcs, 0); + altcs = pdf_array_get(ctx, cses, 2); + if (pdf_is_array(ctx, altcs)) + altcs = pdf_array_get(ctx, altcs, 0); } } - width = pdf_dict_gets(imagedict, "Width"); - height = pdf_dict_gets(imagedict, "Height"); - bpc = pdf_dict_gets(imagedict, "BitsPerComponent"); + width = pdf_dict_gets(ctx, imagedict, "Width"); + height = pdf_dict_gets(ctx, imagedict, "Height"); + bpc = pdf_dict_gets(ctx, imagedict, "BitsPerComponent"); for (k = 0; k < glo->images; k++) - if (!pdf_objcmp(glo->image[k].u.image.obj, imagedict)) + if (!pdf_objcmp(ctx, glo->image[k].u.image.obj, imagedict)) break; if (k < glo->images) continue; - glo->image = fz_resize_array(glo->ctx, glo->image, glo->images+1, sizeof(struct info)); + glo->image = fz_resize_array(ctx, glo->image, glo->images+1, sizeof(struct info)); glo->images++; glo->image[glo->images - 1].page = page; @@ -350,11 +350,11 @@ gatherimages(globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_obj } static void -gatherforms(globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_obj *dict) +gatherforms(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_obj *dict) { int i, n; - n = pdf_dict_len(dict); + n = pdf_dict_len(ctx, dict); for (i = 0; i < n; i++) { pdf_obj *xobjdict; @@ -365,33 +365,33 @@ gatherforms(globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_obj pdf_obj *reference; int k; - xobjdict = pdf_dict_get_val(dict, i); - if (!pdf_is_dict(xobjdict)) + xobjdict = pdf_dict_get_val(ctx, dict, i); + if (!pdf_is_dict(ctx, xobjdict)) { - fz_warn(glo->ctx, "not a xobject dict (%d %d R)", pdf_to_num(xobjdict), pdf_to_gen(xobjdict)); + fz_warn(ctx, "not a xobject dict (%d %d R)", pdf_to_num(ctx, xobjdict), pdf_to_gen(ctx, xobjdict)); continue; } - type = pdf_dict_gets(xobjdict, "Subtype"); - if (strcmp(pdf_to_name(type), "Form")) + type = pdf_dict_gets(ctx, xobjdict, "Subtype"); + if (strcmp(pdf_to_name(ctx, type), "Form")) continue; - subtype = pdf_dict_gets(xobjdict, "Subtype2"); - if (!strcmp(pdf_to_name(subtype), "PS")) + subtype = pdf_dict_gets(ctx, xobjdict, "Subtype2"); + if (!strcmp(pdf_to_name(ctx, subtype), "PS")) continue; - group = pdf_dict_gets(xobjdict, "Group"); - groupsubtype = pdf_dict_gets(group, "S"); - reference = pdf_dict_gets(xobjdict, "Ref"); + group = pdf_dict_gets(ctx, xobjdict, "Group"); + groupsubtype = pdf_dict_gets(ctx, group, "S"); + reference = pdf_dict_gets(ctx, xobjdict, "Ref"); for (k = 0; k < glo->forms; k++) - if (!pdf_objcmp(glo->form[k].u.form.obj, xobjdict)) + if (!pdf_objcmp(ctx, glo->form[k].u.form.obj, xobjdict)) break; if (k < glo->forms) continue; - glo->form = fz_resize_array(glo->ctx, glo->form, glo->forms+1, sizeof(struct info)); + glo->form = fz_resize_array(ctx, glo->form, glo->forms+1, sizeof(struct info)); glo->forms++; glo->form[glo->forms - 1].page = page; @@ -404,11 +404,11 @@ gatherforms(globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_obj } static void -gatherpsobjs(globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_obj *dict) +gatherpsobjs(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_obj *dict) { int i, n; - n = pdf_dict_len(dict); + n = pdf_dict_len(ctx, dict); for (i = 0; i < n; i++) { pdf_obj *xobjdict; @@ -416,27 +416,27 @@ gatherpsobjs(globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_obj pdf_obj *subtype; int k; - xobjdict = pdf_dict_get_val(dict, i); - if (!pdf_is_dict(xobjdict)) + xobjdict = pdf_dict_get_val(ctx, dict, i); + if (!pdf_is_dict(ctx, xobjdict)) { - fz_warn(glo->ctx, "not a xobject dict (%d %d R)", pdf_to_num(xobjdict), pdf_to_gen(xobjdict)); + fz_warn(ctx, "not a xobject dict (%d %d R)", pdf_to_num(ctx, xobjdict), pdf_to_gen(ctx, xobjdict)); continue; } - type = pdf_dict_gets(xobjdict, "Subtype"); - subtype = pdf_dict_gets(xobjdict, "Subtype2"); - if (strcmp(pdf_to_name(type), "PS") && - (strcmp(pdf_to_name(type), "Form") || strcmp(pdf_to_name(subtype), "PS"))) + type = pdf_dict_gets(ctx, xobjdict, "Subtype"); + subtype = pdf_dict_gets(ctx, xobjdict, "Subtype2"); + if (strcmp(pdf_to_name(ctx, type), "PS") && + (strcmp(pdf_to_name(ctx, type), "Form") || strcmp(pdf_to_name(ctx, subtype), "PS"))) continue; for (k = 0; k < glo->psobjs; k++) - if (!pdf_objcmp(glo->psobj[k].u.form.obj, xobjdict)) + if (!pdf_objcmp(ctx, glo->psobj[k].u.form.obj, xobjdict)) break; if (k < glo->psobjs) continue; - glo->psobj = fz_resize_array(glo->ctx, glo->psobj, glo->psobjs+1, sizeof(struct info)); + glo->psobj = fz_resize_array(ctx, glo->psobj, glo->psobjs+1, sizeof(struct info)); glo->psobjs++; glo->psobj[glo->psobjs - 1].page = page; @@ -447,39 +447,39 @@ gatherpsobjs(globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_obj } static void -gathershadings(globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_obj *dict) +gathershadings(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_obj *dict) { int i, n; - n = pdf_dict_len(dict); + n = pdf_dict_len(ctx, dict); for (i = 0; i < n; i++) { pdf_obj *shade; pdf_obj *type; int k; - shade = pdf_dict_get_val(dict, i); - if (!pdf_is_dict(shade)) + shade = pdf_dict_get_val(ctx, dict, i); + if (!pdf_is_dict(ctx, shade)) { - fz_warn(glo->ctx, "not a shading dict (%d %d R)", pdf_to_num(shade), pdf_to_gen(shade)); + fz_warn(ctx, "not a shading dict (%d %d R)", pdf_to_num(ctx, shade), pdf_to_gen(ctx, shade)); continue; } - type = pdf_dict_gets(shade, "ShadingType"); - if (!pdf_is_int(type) || pdf_to_int(type) < 1 || pdf_to_int(type) > 7) + type = pdf_dict_gets(ctx, shade, "ShadingType"); + if (!pdf_is_int(ctx, type) || pdf_to_int(ctx, type) < 1 || pdf_to_int(ctx, type) > 7) { - fz_warn(glo->ctx, "not a shading type (%d %d R)", pdf_to_num(shade), pdf_to_gen(shade)); + fz_warn(ctx, "not a shading type (%d %d R)", pdf_to_num(ctx, shade), pdf_to_gen(ctx, shade)); type = NULL; } for (k = 0; k < glo->shadings; k++) - if (!pdf_objcmp(glo->shading[k].u.shading.obj, shade)) + if (!pdf_objcmp(ctx, glo->shading[k].u.shading.obj, shade)) break; if (k < glo->shadings) continue; - glo->shading = fz_resize_array(glo->ctx, glo->shading, glo->shadings+1, sizeof(struct info)); + glo->shading = fz_resize_array(ctx, glo->shading, glo->shadings+1, sizeof(struct info)); glo->shadings++; glo->shading[glo->shadings - 1].page = page; @@ -491,11 +491,11 @@ gathershadings(globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_o } static void -gatherpatterns(globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_obj *dict) +gatherpatterns(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_obj *dict) { int i, n; - n = pdf_dict_len(dict); + n = pdf_dict_len(ctx, dict); for (i = 0; i < n; i++) { pdf_obj *patterndict; @@ -505,49 +505,49 @@ gatherpatterns(globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_o pdf_obj *shading = NULL; int k; - patterndict = pdf_dict_get_val(dict, i); - if (!pdf_is_dict(patterndict)) + patterndict = pdf_dict_get_val(ctx, dict, i); + if (!pdf_is_dict(ctx, patterndict)) { - fz_warn(glo->ctx, "not a pattern dict (%d %d R)", pdf_to_num(patterndict), pdf_to_gen(patterndict)); + fz_warn(ctx, "not a pattern dict (%d %d R)", pdf_to_num(ctx, patterndict), pdf_to_gen(ctx, patterndict)); continue; } - type = pdf_dict_gets(patterndict, "PatternType"); - if (!pdf_is_int(type) || pdf_to_int(type) < 1 || pdf_to_int(type) > 2) + type = pdf_dict_gets(ctx, patterndict, "PatternType"); + if (!pdf_is_int(ctx, type) || pdf_to_int(ctx, type) < 1 || pdf_to_int(ctx, type) > 2) { - fz_warn(glo->ctx, "not a pattern type (%d %d R)", pdf_to_num(patterndict), pdf_to_gen(patterndict)); + fz_warn(ctx, "not a pattern type (%d %d R)", pdf_to_num(ctx, patterndict), pdf_to_gen(ctx, patterndict)); type = NULL; } - if (pdf_to_int(type) == 1) + if (pdf_to_int(ctx, type) == 1) { - paint = pdf_dict_gets(patterndict, "PaintType"); - if (!pdf_is_int(paint) || pdf_to_int(paint) < 1 || pdf_to_int(paint) > 2) + paint = pdf_dict_gets(ctx, patterndict, "PaintType"); + if (!pdf_is_int(ctx, paint) || pdf_to_int(ctx, paint) < 1 || pdf_to_int(ctx, paint) > 2) { - fz_warn(glo->ctx, "not a pattern paint type (%d %d R)", pdf_to_num(patterndict), pdf_to_gen(patterndict)); + fz_warn(ctx, "not a pattern paint type (%d %d R)", pdf_to_num(ctx, patterndict), pdf_to_gen(ctx, patterndict)); paint = NULL; } - tiling = pdf_dict_gets(patterndict, "TilingType"); - if (!pdf_is_int(tiling) || pdf_to_int(tiling) < 1 || pdf_to_int(tiling) > 3) + tiling = pdf_dict_gets(ctx, patterndict, "TilingType"); + if (!pdf_is_int(ctx, tiling) || pdf_to_int(ctx, tiling) < 1 || pdf_to_int(ctx, tiling) > 3) { - fz_warn(glo->ctx, "not a pattern tiling type (%d %d R)", pdf_to_num(patterndict), pdf_to_gen(patterndict)); + fz_warn(ctx, "not a pattern tiling type (%d %d R)", pdf_to_num(ctx, patterndict), pdf_to_gen(ctx, patterndict)); tiling = NULL; } } else { - shading = pdf_dict_gets(patterndict, "Shading"); + shading = pdf_dict_gets(ctx, patterndict, "Shading"); } for (k = 0; k < glo->patterns; k++) - if (!pdf_objcmp(glo->pattern[k].u.pattern.obj, patterndict)) + if (!pdf_objcmp(ctx, glo->pattern[k].u.pattern.obj, patterndict)) break; if (k < glo->patterns) continue; - glo->pattern = fz_resize_array(glo->ctx, glo->pattern, glo->patterns+1, sizeof(struct info)); + glo->pattern = fz_resize_array(ctx, glo->pattern, glo->patterns+1, sizeof(struct info)); glo->patterns++; glo->pattern[glo->patterns - 1].page = page; @@ -562,7 +562,7 @@ gatherpatterns(globals *glo, int page, pdf_obj *pageref, pdf_obj *pageobj, pdf_o } static void -gatherresourceinfo(globals *glo, int page, pdf_obj *rsrc, int show) +gatherresourceinfo(fz_context *ctx, globals *glo, int page, pdf_obj *rsrc, int show) { pdf_obj *pageobj; pdf_obj *pageref; @@ -573,88 +573,88 @@ gatherresourceinfo(globals *glo, int page, pdf_obj *rsrc, int show) pdf_obj *subrsrc; int i; - pageref = pdf_lookup_page_obj(glo->doc, page-1); - pageobj = pdf_resolve_indirect(pageref); + pageref = pdf_lookup_page_obj(ctx, glo->doc, page-1); + pageobj = pdf_resolve_indirect(ctx, pageref); if (!pageobj) - fz_throw(glo->ctx, FZ_ERROR_GENERIC, "cannot retrieve info from page %d", page); + fz_throw(ctx, FZ_ERROR_GENERIC, "cannot retrieve info from page %d", page); - font = pdf_dict_gets(rsrc, "Font"); + font = pdf_dict_gets(ctx, rsrc, "Font"); if (show & FONTS && font) { int n; - gatherfonts(glo, page, pageref, pageobj, font); - n = pdf_dict_len(font); + gatherfonts(ctx, glo, page, pageref, pageobj, font); + n = pdf_dict_len(ctx, font); for (i = 0; i < n; i++) { - pdf_obj *obj = pdf_dict_get_val(font, i); + pdf_obj *obj = pdf_dict_get_val(ctx, font, i); - subrsrc = pdf_dict_gets(obj, "Resources"); - if (subrsrc && pdf_objcmp(rsrc, subrsrc)) - gatherresourceinfo(glo, page, subrsrc, show); + subrsrc = pdf_dict_gets(ctx, obj, "Resources"); + if (subrsrc && pdf_objcmp(ctx, rsrc, subrsrc)) + gatherresourceinfo(ctx, glo, page, subrsrc, show); } } - xobj = pdf_dict_gets(rsrc, "XObject"); + xobj = pdf_dict_gets(ctx, rsrc, "XObject"); if (show & XOBJS && xobj) { int n; - gatherimages(glo, page, pageref, pageobj, xobj); - gatherforms(glo, page, pageref, pageobj, xobj); - gatherpsobjs(glo, page, pageref, pageobj, xobj); - n = pdf_dict_len(xobj); + gatherimages(ctx, glo, page, pageref, pageobj, xobj); + gatherforms(ctx, glo, page, pageref, pageobj, xobj); + gatherpsobjs(ctx, glo, page, pageref, pageobj, xobj); + n = pdf_dict_len(ctx, xobj); for (i = 0; i < n; i++) { - pdf_obj *obj = pdf_dict_get_val(xobj, i); - subrsrc = pdf_dict_gets(obj, "Resources"); - if (subrsrc && pdf_objcmp(rsrc, subrsrc)) - gatherresourceinfo(glo, page, subrsrc, show); + pdf_obj *obj = pdf_dict_get_val(ctx, xobj, i); + subrsrc = pdf_dict_gets(ctx, obj, "Resources"); + if (subrsrc && pdf_objcmp(ctx, rsrc, subrsrc)) + gatherresourceinfo(ctx, glo, page, subrsrc, show); } } - shade = pdf_dict_gets(rsrc, "Shading"); + shade = pdf_dict_gets(ctx, rsrc, "Shading"); if (show & SHADINGS && shade) - gathershadings(glo, page, pageref, pageobj, shade); + gathershadings(ctx, glo, page, pageref, pageobj, shade); - pattern = pdf_dict_gets(rsrc, "Pattern"); + pattern = pdf_dict_gets(ctx, rsrc, "Pattern"); if (show & PATTERNS && pattern) { int n; - gatherpatterns(glo, page, pageref, pageobj, pattern); - n = pdf_dict_len(pattern); + gatherpatterns(ctx, glo, page, pageref, pageobj, pattern); + n = pdf_dict_len(ctx, pattern); for (i = 0; i < n; i++) { - pdf_obj *obj = pdf_dict_get_val(pattern, i); - subrsrc = pdf_dict_gets(obj, "Resources"); - if (subrsrc && pdf_objcmp(rsrc, subrsrc)) - gatherresourceinfo(glo, page, subrsrc, show); + pdf_obj *obj = pdf_dict_get_val(ctx, pattern, i); + subrsrc = pdf_dict_gets(ctx, obj, "Resources"); + if (subrsrc && pdf_objcmp(ctx, rsrc, subrsrc)) + gatherresourceinfo(ctx, glo, page, subrsrc, show); } } } static void -gatherpageinfo(globals *glo, int page, int show) +gatherpageinfo(fz_context *ctx, globals *glo, int page, int show) { pdf_obj *pageobj; pdf_obj *pageref; pdf_obj *rsrc; - pageref = pdf_lookup_page_obj(glo->doc, page-1); - pageobj = pdf_resolve_indirect(pageref); + pageref = pdf_lookup_page_obj(ctx, glo->doc, page-1); + pageobj = pdf_resolve_indirect(ctx, pageref); if (!pageobj) - fz_throw(glo->ctx, FZ_ERROR_GENERIC, "cannot retrieve info from page %d", page); + fz_throw(ctx, FZ_ERROR_GENERIC, "cannot retrieve info from page %d", page); - gatherdimensions(glo, page, pageref, pageobj); + gatherdimensions(ctx, glo, page, pageref, pageobj); - rsrc = pdf_dict_gets(pageobj, "Resources"); - gatherresourceinfo(glo, page, rsrc, show); + rsrc = pdf_dict_gets(ctx, pageobj, "Resources"); + gatherresourceinfo(ctx, glo, page, rsrc, show); } static void -printinfo(globals *glo, char *filename, int show, int page) +printinfo(fz_context *ctx, globals *glo, char *filename, int show, int page) { int i; int j; @@ -664,85 +664,85 @@ printinfo(globals *glo, char *filename, int show, int page) if (show & DIMENSIONS && glo->dims > 0) { - fz_printf(out, "Mediaboxes (%d):\n", glo->dims); + fz_printf(ctx, out, "Mediaboxes (%d):\n", glo->dims); for (i = 0; i < glo->dims; i++) { - fz_printf(out, PAGE_FMT "[ %g %g %g %g ]\n", + fz_printf(ctx, out, PAGE_FMT "[ %g %g %g %g ]\n", glo->dim[i].page, - pdf_to_num(glo->dim[i].pageref), - pdf_to_gen(glo->dim[i].pageref), + pdf_to_num(ctx, glo->dim[i].pageref), + pdf_to_gen(ctx, glo->dim[i].pageref), glo->dim[i].u.dim.bbox->x0, glo->dim[i].u.dim.bbox->y0, glo->dim[i].u.dim.bbox->x1, glo->dim[i].u.dim.bbox->y1); } - fz_printf(out, "\n"); + fz_printf(ctx, out, "\n"); } if (show & FONTS && glo->fonts > 0) { - fz_printf(out, "Fonts (%d):\n", glo->fonts); + fz_printf(ctx, out, "Fonts (%d):\n", glo->fonts); for (i = 0; i < glo->fonts; i++) { - fz_printf(out, PAGE_FMT "%s '%s' (%d %d R)\n", + fz_printf(ctx, out, PAGE_FMT "%s '%s' (%d %d R)\n", glo->font[i].page, - pdf_to_num(glo->font[i].pageref), - pdf_to_gen(glo->font[i].pageref), - pdf_to_name(glo->font[i].u.font.subtype), - pdf_to_name(glo->font[i].u.font.name), - pdf_to_num(glo->font[i].u.font.obj), - pdf_to_gen(glo->font[i].u.font.obj)); + pdf_to_num(ctx, glo->font[i].pageref), + pdf_to_gen(ctx, glo->font[i].pageref), + pdf_to_name(ctx, glo->font[i].u.font.subtype), + pdf_to_name(ctx, glo->font[i].u.font.name), + pdf_to_num(ctx, glo->font[i].u.font.obj), + pdf_to_gen(ctx, glo->font[i].u.font.obj)); } - fz_printf(out, "\n"); + fz_printf(ctx, out, "\n"); } if (show & IMAGES && glo->images > 0) { - fz_printf(out, "Images (%d):\n", glo->images); + fz_printf(ctx, out, "Images (%d):\n", glo->images); for (i = 0; i < glo->images; i++) { char *cs = NULL; char *altcs = NULL; - fz_printf(out, PAGE_FMT "[ ", + fz_printf(ctx, out, PAGE_FMT "[ ", glo->image[i].page, - pdf_to_num(glo->image[i].pageref), - pdf_to_gen(glo->image[i].pageref)); + pdf_to_num(ctx, glo->image[i].pageref), + pdf_to_gen(ctx, glo->image[i].pageref)); - if (pdf_is_array(glo->image[i].u.image.filter)) + if (pdf_is_array(ctx, glo->image[i].u.image.filter)) { - int n = pdf_array_len(glo->image[i].u.image.filter); + int n = pdf_array_len(ctx, glo->image[i].u.image.filter); for (j = 0; j < n; j++) { - pdf_obj *obj = pdf_array_get(glo->image[i].u.image.filter, j); - char *filter = fz_strdup(glo->ctx, pdf_to_name(obj)); + pdf_obj *obj = pdf_array_get(ctx, glo->image[i].u.image.filter, j); + char *filter = fz_strdup(ctx, pdf_to_name(ctx, obj)); if (strstr(filter, "Decode")) *(strstr(filter, "Decode")) = '\0'; - fz_printf(out, "%s%s", + fz_printf(ctx, out, "%s%s", filter, - j == pdf_array_len(glo->image[i].u.image.filter) - 1 ? "" : " "); - fz_free(glo->ctx, filter); + j == pdf_array_len(ctx, glo->image[i].u.image.filter) - 1 ? "" : " "); + fz_free(ctx, filter); } } else if (glo->image[i].u.image.filter) { pdf_obj *obj = glo->image[i].u.image.filter; - char *filter = fz_strdup(glo->ctx, pdf_to_name(obj)); + char *filter = fz_strdup(ctx, pdf_to_name(ctx, obj)); if (strstr(filter, "Decode")) *(strstr(filter, "Decode")) = '\0'; - fz_printf(out, "%s", filter); - fz_free(glo->ctx, filter); + fz_printf(ctx, out, "%s", filter); + fz_free(ctx, filter); } else - fz_printf(out, "Raw"); + fz_printf(ctx, out, "Raw"); if (glo->image[i].u.image.cs) { - cs = fz_strdup(glo->ctx, pdf_to_name(glo->image[i].u.image.cs)); + cs = fz_strdup(ctx, pdf_to_name(ctx, glo->image[i].u.image.cs)); if (!strncmp(cs, "Device", 6)) { @@ -761,7 +761,7 @@ printinfo(globals *glo, char *filename, int show, int page) } if (glo->image[i].u.image.altcs) { - altcs = fz_strdup(glo->ctx, pdf_to_name(glo->image[i].u.image.altcs)); + altcs = fz_strdup(ctx, pdf_to_name(ctx, glo->image[i].u.image.altcs)); if (!strncmp(altcs, "Device", 6)) { @@ -779,25 +779,25 @@ printinfo(globals *glo, char *filename, int show, int page) fz_strlcpy(altcs, "Sep", 4); } - fz_printf(out, " ] %dx%d %dbpc %s%s%s (%d %d R)\n", - pdf_to_int(glo->image[i].u.image.width), - pdf_to_int(glo->image[i].u.image.height), - glo->image[i].u.image.bpc ? pdf_to_int(glo->image[i].u.image.bpc) : 1, + fz_printf(ctx, out, " ] %dx%d %dbpc %s%s%s (%d %d R)\n", + pdf_to_int(ctx, glo->image[i].u.image.width), + pdf_to_int(ctx, glo->image[i].u.image.height), + glo->image[i].u.image.bpc ? pdf_to_int(ctx, glo->image[i].u.image.bpc) : 1, glo->image[i].u.image.cs ? cs : "ImageMask", glo->image[i].u.image.altcs ? " " : "", glo->image[i].u.image.altcs ? altcs : "", - pdf_to_num(glo->image[i].u.image.obj), - pdf_to_gen(glo->image[i].u.image.obj)); + pdf_to_num(ctx, glo->image[i].u.image.obj), + pdf_to_gen(ctx, glo->image[i].u.image.obj)); - fz_free(glo->ctx, cs); - fz_free(glo->ctx, altcs); + fz_free(ctx, cs); + fz_free(ctx, altcs); } - fz_printf(out, "\n"); + fz_printf(ctx, out, "\n"); } if (show & SHADINGS && glo->shadings > 0) { - fz_printf(out, "Shading patterns (%d):\n", glo->shadings); + fz_printf(ctx, out, "Shading patterns (%d):\n", glo->shadings); for (i = 0; i < glo->shadings; i++) { char *shadingtype[] = @@ -812,23 +812,23 @@ printinfo(globals *glo, char *filename, int show, int page) "Tensor patch", }; - fz_printf(out, PAGE_FMT "%s (%d %d R)\n", + fz_printf(ctx, out, PAGE_FMT "%s (%d %d R)\n", glo->shading[i].page, - pdf_to_num(glo->shading[i].pageref), - pdf_to_gen(glo->shading[i].pageref), - shadingtype[pdf_to_int(glo->shading[i].u.shading.type)], - pdf_to_num(glo->shading[i].u.shading.obj), - pdf_to_gen(glo->shading[i].u.shading.obj)); + pdf_to_num(ctx, glo->shading[i].pageref), + pdf_to_gen(ctx, glo->shading[i].pageref), + shadingtype[pdf_to_int(ctx, glo->shading[i].u.shading.type)], + pdf_to_num(ctx, glo->shading[i].u.shading.obj), + pdf_to_gen(ctx, glo->shading[i].u.shading.obj)); } - fz_printf(out, "\n"); + fz_printf(ctx, out, "\n"); } if (show & PATTERNS && glo->patterns > 0) { - fz_printf(out, "Patterns (%d):\n", glo->patterns); + fz_printf(ctx, out, "Patterns (%d):\n", glo->patterns); for (i = 0; i < glo->patterns; i++) { - if (pdf_to_int(glo->pattern[i].u.pattern.type) == 1) + if (pdf_to_int(ctx, glo->pattern[i].u.pattern.type) == 1) { char *painttype[] = { @@ -844,67 +844,67 @@ printinfo(globals *glo, char *filename, int show, int page) "Constant/fast tiling", }; - fz_printf(out, PAGE_FMT "Tiling %s %s (%d %d R)\n", + fz_printf(ctx, out, PAGE_FMT "Tiling %s %s (%d %d R)\n", glo->pattern[i].page, - pdf_to_num(glo->pattern[i].pageref), - pdf_to_gen(glo->pattern[i].pageref), - painttype[pdf_to_int(glo->pattern[i].u.pattern.paint)], - tilingtype[pdf_to_int(glo->pattern[i].u.pattern.tiling)], - pdf_to_num(glo->pattern[i].u.pattern.obj), - pdf_to_gen(glo->pattern[i].u.pattern.obj)); + pdf_to_num(ctx, glo->pattern[i].pageref), + pdf_to_gen(ctx, glo->pattern[i].pageref), + painttype[pdf_to_int(ctx, glo->pattern[i].u.pattern.paint)], + tilingtype[pdf_to_int(ctx, glo->pattern[i].u.pattern.tiling)], + pdf_to_num(ctx, glo->pattern[i].u.pattern.obj), + pdf_to_gen(ctx, glo->pattern[i].u.pattern.obj)); } else { - fz_printf(out, PAGE_FMT "Shading %d %d R (%d %d R)\n", + fz_printf(ctx, out, PAGE_FMT "Shading %d %d R (%d %d R)\n", glo->pattern[i].page, - pdf_to_num(glo->pattern[i].pageref), - pdf_to_gen(glo->pattern[i].pageref), - pdf_to_num(glo->pattern[i].u.pattern.shading), - pdf_to_gen(glo->pattern[i].u.pattern.shading), - pdf_to_num(glo->pattern[i].u.pattern.obj), - pdf_to_gen(glo->pattern[i].u.pattern.obj)); + pdf_to_num(ctx, glo->pattern[i].pageref), + pdf_to_gen(ctx, glo->pattern[i].pageref), + pdf_to_num(ctx, glo->pattern[i].u.pattern.shading), + pdf_to_gen(ctx, glo->pattern[i].u.pattern.shading), + pdf_to_num(ctx, glo->pattern[i].u.pattern.obj), + pdf_to_gen(ctx, glo->pattern[i].u.pattern.obj)); } } - fz_printf(out, "\n"); + fz_printf(ctx, out, "\n"); } if (show & XOBJS && glo->forms > 0) { - fz_printf(out, "Form xobjects (%d):\n", glo->forms); + fz_printf(ctx, out, "Form xobjects (%d):\n", glo->forms); for (i = 0; i < glo->forms; i++) { - fz_printf(out, PAGE_FMT "Form%s%s%s%s (%d %d R)\n", + fz_printf(ctx, out, PAGE_FMT "Form%s%s%s%s (%d %d R)\n", glo->form[i].page, - pdf_to_num(glo->form[i].pageref), - pdf_to_gen(glo->form[i].pageref), + pdf_to_num(ctx, glo->form[i].pageref), + pdf_to_gen(ctx, glo->form[i].pageref), glo->form[i].u.form.groupsubtype ? " " : "", - glo->form[i].u.form.groupsubtype ? pdf_to_name(glo->form[i].u.form.groupsubtype) : "", + glo->form[i].u.form.groupsubtype ? pdf_to_name(ctx, glo->form[i].u.form.groupsubtype) : "", glo->form[i].u.form.groupsubtype ? " Group" : "", glo->form[i].u.form.reference ? " Reference" : "", - pdf_to_num(glo->form[i].u.form.obj), - pdf_to_gen(glo->form[i].u.form.obj)); + pdf_to_num(ctx, glo->form[i].u.form.obj), + pdf_to_gen(ctx, glo->form[i].u.form.obj)); } - fz_printf(out, "\n"); + fz_printf(ctx, out, "\n"); } if (show & XOBJS && glo->psobjs > 0) { - fz_printf(out, "Postscript xobjects (%d):\n", glo->psobjs); + fz_printf(ctx, out, "Postscript xobjects (%d):\n", glo->psobjs); for (i = 0; i < glo->psobjs; i++) { - fz_printf(out, PAGE_FMT "(%d %d R)\n", + fz_printf(ctx, out, PAGE_FMT "(%d %d R)\n", glo->psobj[i].page, - pdf_to_num(glo->psobj[i].pageref), - pdf_to_gen(glo->psobj[i].pageref), - pdf_to_num(glo->psobj[i].u.form.obj), - pdf_to_gen(glo->psobj[i].u.form.obj)); + pdf_to_num(ctx, glo->psobj[i].pageref), + pdf_to_gen(ctx, glo->psobj[i].pageref), + pdf_to_num(ctx, glo->psobj[i].u.form.obj), + pdf_to_gen(ctx, glo->psobj[i].u.form.obj)); } - fz_printf(out, "\n"); + fz_printf(ctx, out, "\n"); } } static void -showinfo(globals *glo, char *filename, int show, char *pagelist) +showinfo(fz_context *ctx, globals *glo, char *filename, int show, char *pagelist) { int page, spage, epage; char *spec, *dash; @@ -917,7 +917,7 @@ showinfo(globals *glo, char *filename, int show, char *pagelist) allpages = !strcmp(pagelist, "1-"); - pagecount = pdf_count_pages(glo->doc); + pagecount = pdf_count_pages(ctx, glo->doc); spec = fz_strsep(&pagelist, ","); while (spec && pagecount) { @@ -943,15 +943,15 @@ showinfo(globals *glo, char *filename, int show, char *pagelist) epage = fz_clampi(epage, 1, pagecount); if (allpages) - fz_printf(out, "Retrieving info from pages %d-%d...\n", spage, epage); + fz_printf(ctx, out, "Retrieving info from pages %d-%d...\n", spage, epage); for (page = spage; page <= epage; page++) { - gatherpageinfo(glo, page, show); + gatherpageinfo(ctx, glo, page, show); if (!allpages) { - fz_printf(out, "Page %d:\n", page); - printinfo(glo, filename, show, page); - fz_printf(out, "\n"); + fz_printf(ctx, out, "Page %d:\n", page); + printinfo(ctx, glo, filename, show, page); + fz_printf(ctx, out, "\n"); } } @@ -959,7 +959,7 @@ showinfo(globals *glo, char *filename, int show, char *pagelist) } if (allpages) - printinfo(glo, filename, show, -1); + printinfo(ctx, glo, filename, show, -1); } static int arg_is_page_range(const char *arg) @@ -981,7 +981,6 @@ pdfinfo_info(fz_context *ctx, fz_output *out, char *filename, char *password, in int argidx = 0; globals glo = { 0 }; - glo.ctx = ctx; glo.out = out; state = NO_FILE_OPENED; @@ -991,25 +990,25 @@ pdfinfo_info(fz_context *ctx, fz_output *out, char *filename, char *password, in { if (state == NO_INFO_GATHERED) { - showinfo(&glo, filename, show, "1-"); + showinfo(ctx, &glo, filename, show, "1-"); } - closexref(&glo); + closexref(ctx, &glo); filename = argv[argidx]; - fz_printf(out, "%s:\n", filename); + fz_printf(ctx, out, "%s:\n", filename); glo.doc = pdf_open_document_no_run(glo.ctx, filename); - if (pdf_needs_password(glo.doc)) - if (!pdf_authenticate_password(glo.doc, password)) + if (pdf_needs_password(ctx, glo.doc)) + if (!pdf_authenticate_password(ctx, glo.doc, password)) fz_throw(glo.ctx, FZ_ERROR_GENERIC, "cannot authenticate password: %s", filename); - glo.pagecount = pdf_count_pages(glo.doc); + glo.pagecount = pdf_count_pages(ctx, glo.doc); - showglobalinfo(&glo); + showglobalinfo(ctx, &glo); state = NO_INFO_GATHERED; } else { - showinfo(&glo, filename, show, argv[argidx]); + showinfo(ctx, &glo, filename, show, argv[argidx]); state = INFO_SHOWN; } @@ -1017,9 +1016,9 @@ pdfinfo_info(fz_context *ctx, fz_output *out, char *filename, char *password, in } if (state == NO_INFO_GATHERED) - showinfo(&glo, filename, show, "1-"); + showinfo(ctx, &glo, filename, show, "1-"); - closexref(&glo); + closexref(ctx, &glo); } int pdfinfo_main(int argc, char **argv) @@ -1064,14 +1063,14 @@ int pdfinfo_main(int argc, char **argv) ret = 0; fz_try(ctx) { - out = fz_new_output_with_file(ctx, stdout); + out = fz_new_output_with_file(ctx, stdout, 0); pdfinfo_info(ctx, out, filename, password, show, &argv[fz_optind], argc-fz_optind); } fz_catch(ctx) { ret = 1; } - fz_close_output(out); - fz_free_context(ctx); + fz_drop_output(ctx, out); + fz_drop_context(ctx); return ret; } diff --git a/source/tools/pdfposter.c b/source/tools/pdfposter.c index aedeccb4..f949a005 100644 --- a/source/tools/pdfposter.c +++ b/source/tools/pdfposter.c @@ -21,31 +21,31 @@ static void usage(void) * Recreate page tree with our posterised pages in. */ -static void decimatepages(pdf_document *doc) +static void decimatepages(fz_context *ctx, pdf_document *doc) { pdf_obj *oldroot, *root, *pages, *kids, *parent; - int num_pages = pdf_count_pages(doc); + int num_pages = pdf_count_pages(ctx, doc); int page, kidcount; - oldroot = pdf_dict_gets(pdf_trailer(doc), "Root"); - pages = pdf_dict_gets(oldroot, "Pages"); + oldroot = pdf_dict_gets(ctx, pdf_trailer(ctx, doc), "Root"); + pages = pdf_dict_gets(ctx, oldroot, "Pages"); - root = pdf_new_dict(doc, 2); - pdf_dict_puts(root, "Type", pdf_dict_gets(oldroot, "Type")); - pdf_dict_puts(root, "Pages", pdf_dict_gets(oldroot, "Pages")); + root = pdf_new_dict(ctx, doc, 2); + pdf_dict_puts(ctx, root, "Type", pdf_dict_gets(ctx, oldroot, "Type")); + pdf_dict_puts(ctx, root, "Pages", pdf_dict_gets(ctx, oldroot, "Pages")); - pdf_update_object(doc, pdf_to_num(oldroot), root); + pdf_update_object(ctx, doc, pdf_to_num(ctx, oldroot), root); - pdf_drop_obj(root); + pdf_drop_obj(ctx, root); /* Create a new kids array with our new pages in */ - parent = pdf_new_indirect(doc, pdf_to_num(pages), pdf_to_gen(pages)); - kids = pdf_new_array(doc, 1); + parent = pdf_new_indirect(ctx, doc, pdf_to_num(ctx, pages), pdf_to_gen(ctx, pages)); + kids = pdf_new_array(ctx, doc, 1); kidcount = 0; for (page=0; page < num_pages; page++) { - pdf_page *page_details = pdf_load_page(doc, page); + pdf_page *page_details = pdf_load_page(ctx, doc, page); int xf = x_factor, yf = y_factor; int x, y; float w = page_details->mediabox.x1 - page_details->mediabox.x0; @@ -72,12 +72,12 @@ static void decimatepages(pdf_document *doc) fz_rect mb; int num; - newpageobj = pdf_copy_dict(pdf_lookup_page_obj(doc, page)); - num = pdf_create_object(doc); - pdf_update_object(doc, num, newpageobj); - newpageref = pdf_new_indirect(doc, num, 0); + newpageobj = pdf_copy_dict(ctx, pdf_lookup_page_obj(ctx, doc, page)); + num = pdf_create_object(ctx, doc); + pdf_update_object(ctx, doc, num, newpageobj); + newpageref = pdf_new_indirect(ctx, doc, num, 0); - newmediabox = pdf_new_array(doc, 4); + newmediabox = pdf_new_array(ctx, doc, 4); mb.x0 = page_details->mediabox.x0 + (w/xf)*x; if (x == xf-1) @@ -90,28 +90,28 @@ static void decimatepages(pdf_document *doc) else mb.y1 = page_details->mediabox.y0 + (h/yf)*(y+1); - pdf_array_push(newmediabox, pdf_new_real(doc, mb.x0)); - pdf_array_push(newmediabox, pdf_new_real(doc, mb.y0)); - pdf_array_push(newmediabox, pdf_new_real(doc, mb.x1)); - pdf_array_push(newmediabox, pdf_new_real(doc, mb.y1)); + pdf_array_push(ctx, newmediabox, pdf_new_real(ctx, doc, mb.x0)); + pdf_array_push(ctx, newmediabox, pdf_new_real(ctx, doc, mb.y0)); + pdf_array_push(ctx, newmediabox, pdf_new_real(ctx, doc, mb.x1)); + pdf_array_push(ctx, newmediabox, pdf_new_real(ctx, doc, mb.y1)); - pdf_dict_puts(newpageobj, "Parent", parent); - pdf_dict_puts(newpageobj, "MediaBox", newmediabox); + pdf_dict_puts(ctx, newpageobj, "Parent", parent); + pdf_dict_puts(ctx, newpageobj, "MediaBox", newmediabox); /* Store page object in new kids array */ - pdf_array_push(kids, newpageref); + pdf_array_push(ctx, kids, newpageref); kidcount++; } } } - pdf_drop_obj(parent); + pdf_drop_obj(ctx, parent); /* Update page count and kids array */ - pdf_dict_puts(pages, "Count", pdf_new_int(doc, kidcount)); - pdf_dict_puts(pages, "Kids", kids); - pdf_drop_obj(kids); + pdf_dict_puts(ctx, pages, "Count", pdf_new_int(ctx, doc, kidcount)); + pdf_dict_puts(ctx, pages, "Kids", kids); + pdf_drop_obj(ctx, kids); } int pdfposter_main(int argc, char **argv) @@ -160,15 +160,15 @@ int pdfposter_main(int argc, char **argv) } doc = pdf_open_document_no_run(ctx, infile); - if (pdf_needs_password(doc)) - if (!pdf_authenticate_password(doc, password)) + if (pdf_needs_password(ctx, doc)) + if (!pdf_authenticate_password(ctx, doc, password)) fz_throw(ctx, FZ_ERROR_GENERIC, "cannot authenticate password: %s", infile); - decimatepages(doc); + decimatepages(ctx, doc); - pdf_write_document(doc, outfile, &opts); + pdf_write_document(ctx, doc, outfile, &opts); - pdf_close_document(doc); - fz_free_context(ctx); + pdf_close_document(ctx, doc); + fz_drop_context(ctx); return 0; } diff --git a/source/tools/pdfshow.c b/source/tools/pdfshow.c index c5d021ad..d084c080 100644 --- a/source/tools/pdfshow.c +++ b/source/tools/pdfshow.c @@ -27,7 +27,7 @@ static void showtrailer(void) if (!doc) fz_throw(ctx, FZ_ERROR_GENERIC, "no file specified"); fprintf(out, "trailer\n"); - pdf_fprint_obj(out, pdf_trailer(doc), 0); + pdf_fprint_obj(ctx, out, pdf_trailer(ctx, doc), 0); fprintf(out, "\n"); } @@ -37,11 +37,11 @@ static void showencrypt(void) if (!doc) fz_throw(ctx, FZ_ERROR_GENERIC, "no file specified"); - encrypt = pdf_dict_gets(pdf_trailer(doc), "Encrypt"); + encrypt = pdf_dict_gets(ctx, pdf_trailer(ctx, doc), "Encrypt"); if (!encrypt) fz_throw(ctx, FZ_ERROR_GENERIC, "document not encrypted"); fprintf(out, "encryption dictionary\n"); - pdf_fprint_obj(out, pdf_resolve_indirect(encrypt), 0); + pdf_fprint_obj(ctx, out, pdf_resolve_indirect(ctx, encrypt), 0); fprintf(out, "\n"); } @@ -49,7 +49,7 @@ static void showxref(void) { if (!doc) fz_throw(ctx, FZ_ERROR_GENERIC, "no file specified"); - pdf_print_xref(doc); + pdf_print_xref(ctx, doc); fprintf(out, "\n"); } @@ -62,11 +62,11 @@ static void showpagetree(void) if (!doc) fz_throw(ctx, FZ_ERROR_GENERIC, "no file specified"); - count = pdf_count_pages(doc); + count = pdf_count_pages(ctx, doc); for (i = 0; i < count; i++) { - ref = pdf_lookup_page_obj(doc, i); - fprintf(out, "page %d = %d %d R\n", i + 1, pdf_to_num(ref), pdf_to_gen(ref)); + ref = pdf_lookup_page_obj(ctx, doc, i); + fprintf(out, "page %d = %d %d R\n", i + 1, pdf_to_num(ctx, ref), pdf_to_gen(ctx, ref)); } fprintf(out, "\n"); } @@ -103,13 +103,13 @@ static void showstream(int num, int gen) showcolumn = 0; if (showdecode) - stm = pdf_open_stream(doc, num, gen); + stm = pdf_open_stream(ctx, doc, num, gen); else - stm = pdf_open_raw_stream(doc, num, gen); + stm = pdf_open_raw_stream(ctx, doc, num, gen); while (1) { - n = fz_read(stm, buf, sizeof buf); + n = fz_read(ctx, stm, buf, sizeof buf); if (n == 0) break; if (showbinary) @@ -118,7 +118,7 @@ static void showstream(int num, int gen) showsafe(buf, n); } - fz_close(stm); + fz_drop_stream(ctx, stm); } static void showobject(int num, int gen) @@ -128,9 +128,9 @@ static void showobject(int num, int gen) if (!doc) fz_throw(ctx, FZ_ERROR_GENERIC, "no file specified"); - obj = pdf_load_object(doc, num, gen); + obj = pdf_load_object(ctx, doc, num, gen); - if (pdf_is_stream(doc, num, gen)) + if (pdf_is_stream(ctx, doc, num, gen)) { if (showbinary) { @@ -139,7 +139,7 @@ static void showobject(int num, int gen) else { fprintf(out, "%d %d obj\n", num, gen); - pdf_fprint_obj(out, obj, 0); + pdf_fprint_obj(ctx, out, obj, 0); fprintf(out, "stream\n"); showstream(num, gen); fprintf(out, "endstream\n"); @@ -149,11 +149,11 @@ static void showobject(int num, int gen) else { fprintf(out, "%d %d obj\n", num, gen); - pdf_fprint_obj(out, obj, 0); + pdf_fprint_obj(ctx, out, obj, 0); fprintf(out, "endobj\n\n"); } - pdf_drop_obj(obj); + pdf_drop_obj(ctx, obj); } static void showgrep(char *filename) @@ -161,15 +161,15 @@ static void showgrep(char *filename) pdf_obj *obj; int i, len; - len = pdf_count_objects(doc); + len = pdf_count_objects(ctx, doc); for (i = 0; i < len; i++) { - pdf_xref_entry *entry = pdf_get_xref_entry(doc, i); + pdf_xref_entry *entry = pdf_get_xref_entry(ctx, doc, i); if (entry->type == 'n' || entry->type == 'o') { fz_try(ctx) { - obj = pdf_load_object(doc, i, 0); + obj = pdf_load_object(ctx, doc, i, 0); } fz_catch(ctx) { @@ -177,17 +177,17 @@ static void showgrep(char *filename) continue; } - pdf_sort_dict(obj); + pdf_sort_dict(ctx, obj); fprintf(out, "%s:%d: ", filename, i); - pdf_fprint_obj(out, obj, 1); + pdf_fprint_obj(ctx, out, obj, 1); - pdf_drop_obj(obj); + pdf_drop_obj(ctx, obj); } } fprintf(out, "%s:trailer: ", filename); - pdf_fprint_obj(out, pdf_trailer(doc), 1); + pdf_fprint_obj(ctx, out, pdf_trailer(ctx, doc), 1); } int pdfshow_main(int argc, char **argv) @@ -236,8 +236,8 @@ int pdfshow_main(int argc, char **argv) fz_try(ctx) { doc = pdf_open_document_no_run(ctx, filename); - if (pdf_needs_password(doc)) - if (!pdf_authenticate_password(doc, password)) + if (pdf_needs_password(ctx, doc)) + if (!pdf_authenticate_password(ctx, doc, password)) fz_warn(ctx, "cannot authenticate password: %s", filename); if (fz_optind == argc) @@ -264,7 +264,7 @@ int pdfshow_main(int argc, char **argv) if (out != stdout) fclose(out); - pdf_close_document(doc); - fz_free_context(ctx); + pdf_close_document(ctx, doc); + fz_drop_context(ctx); return 0; } |