summaryrefslogtreecommitdiff
path: root/source/tools
diff options
context:
space:
mode:
Diffstat (limited to 'source/tools')
-rw-r--r--source/tools/mjsgen.c12
-rw-r--r--source/tools/mudraw.c166
-rw-r--r--source/tools/pdfclean.c132
-rw-r--r--source/tools/pdfextract.c44
-rw-r--r--source/tools/pdfinfo.c499
-rw-r--r--source/tools/pdfposter.c66
-rw-r--r--source/tools/pdfshow.c52
7 files changed, 485 insertions, 486 deletions
diff --git a/source/tools/mjsgen.c b/source/tools/mjsgen.c
index cb4c1f1c..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_drop_document(doc);
+ fz_drop_document(ctx, doc);
}
fz_catch(ctx)
{
diff --git a/source/tools/mudraw.c b/source/tools/mudraw.c
index 7f93d492..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_drop_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_drop_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_drop_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_drop_device(dev);
+ fz_drop_device(ctx, dev);
dev = NULL;
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_drop_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_drop_device(dev);
+ fz_run_page(ctx, page, dev, &ctm, &cookie);
+ fz_drop_device(ctx, dev);
dev = NULL;
}
fz_always(ctx)
{
- fz_drop_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_drop_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_drop_device(dev);
+ fz_run_page(ctx, page, dev, &ctm, &cookie);
+ fz_drop_device(ctx, dev);
dev = NULL;
}
fz_always(ctx)
{
- fz_drop_device(dev);
+ fz_drop_device(ctx, dev);
dev = NULL;
- fz_drop_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_drop_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_drop_device(dev);
+ fz_drop_device(ctx, dev);
dev = NULL;
fz_drop_pixmap(ctx, pix);
if (output_file)
- fz_drop_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,7 +749,7 @@ static void drawoutline(fz_context *ctx, fz_document *doc)
}
fz_always(ctx)
{
- fz_drop_output(out);
+ 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_drop_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_drop_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_drop_document(doc);
+ fz_drop_document(ctx, doc);
fprintf(stderr, "error: cannot draw '%s'\n", filename);
errored = 1;
}
@@ -1092,16 +1092,16 @@ 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)
@@ -1109,7 +1109,7 @@ int main(int argc, char **argv)
if (showxml || showtext)
{
- fz_drop_output(out);
+ fz_drop_output(ctx, out);
out = NULL;
}
diff --git a/source/tools/pdfclean.c b/source/tools/pdfclean.c
index bfeca0e4..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)
{
diff --git a/source/tools/pdfextract.c b/source/tools/pdfextract.c
index 0c7463f7..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,13 +212,13 @@ 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);
+ int len = pdf_count_objects(ctx, doc);
for (o = 1; o < len; o++)
showobject(o);
}
@@ -231,7 +231,7 @@ int pdfextract_main(int argc, char **argv)
}
}
- pdf_close_document(doc);
+ pdf_close_document(ctx, doc);
fz_flush_warnings(ctx);
fz_drop_context(ctx);
return 0;
diff --git a/source/tools/pdfinfo.c b/source/tools/pdfinfo.c
index 453f271a..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_drop_output(out);
+ fz_drop_output(ctx, out);
fz_drop_context(ctx);
return ret;
}
diff --git a/source/tools/pdfposter.c b/source/tools/pdfposter.c
index e4b631a6..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);
+ pdf_close_document(ctx, doc);
fz_drop_context(ctx);
return 0;
}
diff --git a/source/tools/pdfshow.c b/source/tools/pdfshow.c
index 344f4c40..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_drop_stream(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);
+ pdf_close_document(ctx, doc);
fz_drop_context(ctx);
return 0;
}