summaryrefslogtreecommitdiff
path: root/source/tools
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2013-06-24 21:01:27 +0100
committerRobin Watts <robin.watts@artifex.com>2013-06-25 10:05:25 +0100
commit07dd8540ae72b0e7be64d04c38d8c19b83d184b6 (patch)
treedfaa48e8eeeb46fac17f8eb0cb8f226da9b841ca /source/tools
parent8a2b650a9d3910d9b5104b1d2560b6a34bf7583e (diff)
downloadmupdf-07dd8540ae72b0e7be64d04c38d8c19b83d184b6.tar.xz
Update pdf_obj's to have a pdf_document field.
Remove the fz_context field to avoid the structure growing.
Diffstat (limited to 'source/tools')
-rw-r--r--source/tools/pdfclean.c42
-rw-r--r--source/tools/pdfextract.c2
-rw-r--r--source/tools/pdfposter.c52
3 files changed, 48 insertions, 48 deletions
diff --git a/source/tools/pdfclean.c b/source/tools/pdfclean.c
index c437b819..aac3a888 100644
--- a/source/tools/pdfclean.c
+++ b/source/tools/pdfclean.c
@@ -11,7 +11,7 @@
#include "mupdf/pdf.h"
-static pdf_document *xref = NULL;
+static pdf_document *doc = NULL;
static fz_context *ctx = NULL;
static void usage(void)
@@ -41,21 +41,21 @@ static void retainpages(int argc, char **argv)
/* Keep only pages/type and (reduced) dest entries to avoid
* references to unretained pages */
- oldroot = pdf_dict_gets(pdf_trailer(xref), "Root");
+ oldroot = pdf_dict_gets(pdf_trailer(doc), "Root");
pages = pdf_dict_gets(oldroot, "Pages");
- olddests = pdf_load_name_tree(xref, "Dests");
+ olddests = pdf_load_name_tree(doc, "Dests");
- root = pdf_new_dict(ctx, 2);
+ 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"));
- pdf_update_object(xref, pdf_to_num(oldroot), root);
+ pdf_update_object(doc, pdf_to_num(oldroot), root);
pdf_drop_obj(root);
/* Create a new kids array with only the pages we want to keep */
- parent = pdf_new_indirect(ctx, pdf_to_num(pages), pdf_to_gen(pages), xref);
- kids = pdf_new_array(ctx, 1);
+ parent = pdf_new_indirect(doc, pdf_to_num(pages), pdf_to_gen(pages));
+ kids = pdf_new_array(doc, 1);
/* Retain pages specified */
while (argc - fz_optind)
@@ -64,7 +64,7 @@ static void retainpages(int argc, char **argv)
char *spec, *dash;
char *pagelist = argv[fz_optind];
- pagecount = pdf_count_pages(xref);
+ pagecount = pdf_count_pages(doc);
spec = fz_strsep(&pagelist, ",");
while (spec)
{
@@ -91,8 +91,8 @@ static void retainpages(int argc, char **argv)
for (page = spage; page <= epage; page++)
{
- pdf_obj *pageobj = xref->page_objs[page-1];
- pdf_obj *pageref = xref->page_refs[page-1];
+ pdf_obj *pageobj = doc->page_objs[page-1];
+ pdf_obj *pageref = doc->page_refs[page-1];
pdf_dict_puts(pageobj, "Parent", parent);
@@ -109,7 +109,7 @@ static void retainpages(int argc, char **argv)
pdf_drop_obj(parent);
/* Update page count and kids array */
- countobj = pdf_new_int(ctx, pdf_array_len(kids));
+ 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);
@@ -119,16 +119,16 @@ static void retainpages(int argc, char **argv)
if (olddests)
{
int i;
- pdf_obj *names = pdf_new_dict(ctx, 1);
- pdf_obj *dests = pdf_new_dict(ctx, 1);
- pdf_obj *names_list = pdf_new_array(ctx, 32);
+ pdf_obj *names = pdf_new_dict(doc, 1);
+ pdf_obj *dests = pdf_new_dict(doc, 1);
+ pdf_obj *names_list = pdf_new_array(doc, 32);
int len = pdf_dict_len(olddests);
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 *key_str = pdf_new_string(ctx, pdf_to_name(key), strlen(pdf_to_name(key)));
+ pdf_obj *key_str = pdf_new_string(doc, pdf_to_name(key), strlen(pdf_to_name(key)));
pdf_obj *dest = pdf_dict_gets(val, "D");
dest = pdf_array_get(dest ? dest : val, 0);
@@ -140,7 +140,7 @@ static void retainpages(int argc, char **argv)
pdf_drop_obj(key_str);
}
- root = pdf_dict_gets(pdf_trailer(xref), "Root");
+ 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);
@@ -209,20 +209,20 @@ int pdfclean_main(int argc, char **argv)
fz_try(ctx)
{
- xref = pdf_open_document_no_run(ctx, infile);
- if (pdf_needs_password(xref))
- if (!pdf_authenticate_password(xref, password))
+ doc = pdf_open_document_no_run(ctx, infile);
+ if (pdf_needs_password(doc))
+ if (!pdf_authenticate_password(doc, password))
fz_throw(ctx, FZ_ERROR_GENERIC, "cannot authenticate password: %s", infile);
/* Only retain the specified subset of the pages */
if (subset)
retainpages(argc, argv);
- pdf_write_document(xref, outfile, &opts);
+ pdf_write_document(doc, outfile, &opts);
}
fz_always(ctx)
{
- pdf_close_document(xref);
+ pdf_close_document(doc);
}
fz_catch(ctx)
{
diff --git a/source/tools/pdfextract.c b/source/tools/pdfextract.c
index e7418224..30a0de3f 100644
--- a/source/tools/pdfextract.c
+++ b/source/tools/pdfextract.c
@@ -67,7 +67,7 @@ static void saveimage(int num)
pdf_obj *ref;
char name[32];
- ref = pdf_new_indirect(ctx, num, 0, doc);
+ ref = pdf_new_indirect(doc, num, 0);
/* TODO: detect DCTD and save as jpeg */
diff --git a/source/tools/pdfposter.c b/source/tools/pdfposter.c
index ed3a4bda..603b3ac6 100644
--- a/source/tools/pdfposter.c
+++ b/source/tools/pdfposter.c
@@ -28,34 +28,34 @@ static void usage(void)
* Recreate page tree to only retain specified pages.
*/
-static void decimatepages(pdf_document *xref)
+static void decimatepages(pdf_document *doc)
{
pdf_obj *oldroot, *root, *pages, *kids, *parent;
- fz_context *ctx = xref->ctx;
- int num_pages = pdf_count_pages(xref);
+ fz_context *ctx = doc->ctx;
+ int num_pages = pdf_count_pages(doc);
int page, kidcount;
/* Keep only pages/type and (reduced) dest entries to avoid
* references to unretained pages */
- oldroot = pdf_dict_gets(pdf_trailer(xref), "Root");
+ oldroot = pdf_dict_gets(pdf_trailer(doc), "Root");
pages = pdf_dict_gets(oldroot, "Pages");
- root = pdf_new_dict(ctx, 2);
+ 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"));
- pdf_update_object(xref, pdf_to_num(oldroot), root);
+ pdf_update_object(doc, pdf_to_num(oldroot), root);
pdf_drop_obj(root);
/* Create a new kids array with only the pages we want to keep */
- parent = pdf_new_indirect(ctx, pdf_to_num(pages), pdf_to_gen(pages), xref);
- kids = pdf_new_array(ctx, 1);
+ parent = pdf_new_indirect(doc, pdf_to_num(pages), pdf_to_gen(pages));
+ kids = pdf_new_array(doc, 1);
kidcount = 0;
for (page=0; page < num_pages; page++)
{
- pdf_page *page_details = pdf_load_page(xref, page);
+ pdf_page *page_details = pdf_load_page(doc, page);
int xf = x_factor, yf = y_factor;
int x, y;
float w = page_details->mediabox.x1 - page_details->mediabox.x0;
@@ -82,12 +82,12 @@ static void decimatepages(pdf_document *xref)
fz_rect mb;
int num;
- newpageobj = pdf_copy_dict(ctx, xref->page_objs[page]);
- num = pdf_create_object(xref);
- pdf_update_object(xref, num, newpageobj);
- newpageref = pdf_new_indirect(ctx, num, 0, xref);
+ newpageobj = pdf_copy_dict(doc->page_objs[page]);
+ num = pdf_create_object(doc);
+ pdf_update_object(doc, num, newpageobj);
+ newpageref = pdf_new_indirect(doc, num, 0);
- newmediabox = pdf_new_array(ctx, 4);
+ newmediabox = pdf_new_array(doc, 4);
mb.x0 = page_details->mediabox.x0 + (w/xf)*x;
if (x == xf-1)
@@ -100,10 +100,10 @@ static void decimatepages(pdf_document *xref)
else
mb.y1 = page_details->mediabox.y0 + (h/yf)*(y+1);
- pdf_array_push(newmediabox, pdf_new_real(ctx, mb.x0));
- pdf_array_push(newmediabox, pdf_new_real(ctx, mb.y0));
- pdf_array_push(newmediabox, pdf_new_real(ctx, mb.x1));
- pdf_array_push(newmediabox, pdf_new_real(ctx, mb.y1));
+ 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_dict_puts(newpageobj, "Parent", parent);
pdf_dict_puts(newpageobj, "MediaBox", newmediabox);
@@ -119,7 +119,7 @@ static void decimatepages(pdf_document *xref)
pdf_drop_obj(parent);
/* Update page count and kids array */
- pdf_dict_puts(pages, "Count", pdf_new_int(ctx, kidcount));
+ pdf_dict_puts(pages, "Count", pdf_new_int(doc, kidcount));
pdf_dict_puts(pages, "Kids", kids);
pdf_drop_obj(kids);
}
@@ -131,7 +131,7 @@ int pdfposter_main(int argc, char **argv)
char *password = "";
int c;
fz_write_options opts;
- pdf_document *xref;
+ pdf_document *doc;
fz_context *ctx;
opts.do_garbage = 0;
@@ -167,17 +167,17 @@ int pdfposter_main(int argc, char **argv)
exit(1);
}
- xref = pdf_open_document_no_run(ctx, infile);
- if (pdf_needs_password(xref))
- if (!pdf_authenticate_password(xref, password))
+ doc = pdf_open_document_no_run(ctx, infile);
+ if (pdf_needs_password(doc))
+ if (!pdf_authenticate_password(doc, password))
fz_throw(ctx, FZ_ERROR_GENERIC, "cannot authenticate password: %s", infile);
/* Only retain the specified subset of the pages */
- decimatepages(xref);
+ decimatepages(doc);
- pdf_write_document(xref, outfile, &opts);
+ pdf_write_document(doc, outfile, &opts);
- pdf_close_document(xref);
+ pdf_close_document(doc);
fz_free_context(ctx);
return 0;
}