summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/pdfapp.c2
-rw-r--r--apps/pdfclean.c8
-rw-r--r--apps/pdfdraw.c4
-rw-r--r--apps/pdfinfo.c6
-rw-r--r--apps/pdfshow.c17
-rw-r--r--fitz/res_pixmap.c2
-rw-r--r--mupdf/mupdf.h2
-rw-r--r--mupdf/pdf_xref.c16
8 files changed, 28 insertions, 29 deletions
diff --git a/apps/pdfapp.c b/apps/pdfapp.c
index 95885e2a..32de4265 100644
--- a/apps/pdfapp.c
+++ b/apps/pdfapp.c
@@ -103,7 +103,7 @@ void pdfapp_open(pdfapp_t *app, char *filename, int fd)
*/
file = fz_openfile(fd);
- error = pdf_newxref(&app->xref, file, NULL);
+ error = pdf_openxrefwithstream(&app->xref, file, NULL);
if (error)
pdfapp_error(app, fz_rethrow(error, "cannot open document '%s'", filename));
fz_dropstream(file);
diff --git a/apps/pdfclean.c b/apps/pdfclean.c
index 0ecbb98e..6824707d 100644
--- a/apps/pdfclean.c
+++ b/apps/pdfclean.c
@@ -225,9 +225,15 @@ static void removeduplicateobjs(void)
static void retainpages(int argc, char **argv)
{
+ fz_error error;
fz_obj *root, *pages, *kids;
int count;
+ /* Load the old page tree */
+ error = pdf_loadpagetree(xref);
+ if (error)
+ die(fz_rethrow(error, "cannot load page tree"));
+
/* Snatch pages entry from root dict */
root = fz_dictgets(xref->trailer, "Root");
pages = fz_keepobj(fz_dictgets(root, "Pages"));
@@ -557,7 +563,7 @@ int main(int argc, char **argv)
die(fz_throw("cannot open output file '%s'", outfile));
fprintf(out, "%%PDF-%d.%d\n", xref->version / 10, xref->version % 10);
- fprintf(out, "%%\342\343\317\323\n\n");
+ fprintf(out, "%%\316\274\341\277\246\n\n");
uselist = malloc(sizeof (char) * (xref->len + 1));
ofslist = malloc(sizeof (int) * (xref->len + 1));
diff --git a/apps/pdfdraw.c b/apps/pdfdraw.c
index 3c645d86..f7314ff5 100644
--- a/apps/pdfdraw.c
+++ b/apps/pdfdraw.c
@@ -222,6 +222,10 @@ int main(int argc, char **argv)
if (error)
die(fz_rethrow(error, "cannot open document: %s", filename));
+ error = pdf_loadpagetree(xref);
+ if (error)
+ die(fz_rethrow(error, "cannot load page tree: %s", filename));
+
if (showxml)
printf("<document name=\"%s\">\n", filename);
diff --git a/apps/pdfinfo.c b/apps/pdfinfo.c
index af29c0d2..0eae9137 100644
--- a/apps/pdfinfo.c
+++ b/apps/pdfinfo.c
@@ -980,12 +980,18 @@ int main(int argc, char **argv)
}
closexref();
+
filename = argv[fz_optind];
printf("%s:\n", filename);
error = pdf_openxref(&xref, filename, password);
if (error)
die(fz_rethrow(error, "cannot open input file '%s'", filename));
+
+ error = pdf_loadpagetree(xref);
+ if (error)
+ die(fz_rethrow(error, "cannot load page tree: %s", filename));
pagecount = pdf_getpagecount(xref);
+
showglobalinfo();
state = NO_INFO_GATHERED;
}
diff --git a/apps/pdfshow.c b/apps/pdfshow.c
index b15fae1b..6d4d2672 100644
--- a/apps/pdfshow.c
+++ b/apps/pdfshow.c
@@ -160,19 +160,10 @@ int main(int argc, char **argv)
if (fz_optind == argc)
usage();
- /* Use newxref directly because we don't care about the page tree */
- {
- filename = argv[fz_optind++];
- fd = open(filename, O_BINARY | O_RDONLY);
- if (fd < 0)
- return fz_throw("cannot open file '%s': %s", filename, strerror(errno));
-
- file = fz_openfile(fd);
- error = pdf_newxref(&xref, file, password);
- if (error)
- die(fz_rethrow(error, "cannot load document '%s'", filename));
- fz_dropstream(file);
- }
+ filename = argv[fz_optind++];
+ error = pdf_openxref(&xref, filename, password);
+ if (error)
+ die(fz_rethrow(error, "cannot open document: %s", filename));
if (fz_optind == argc)
showtrailer();
diff --git a/fitz/res_pixmap.c b/fitz/res_pixmap.c
index 80ace5fa..e1184fff 100644
--- a/fitz/res_pixmap.c
+++ b/fitz/res_pixmap.c
@@ -127,7 +127,7 @@ fz_writepnm(fz_pixmap *pixmap, char *filename)
}
/*
- * Write pixmap to PAM file (with alpha channel)
+ * Write pixmap to PAM file (with or without alpha channel)
*/
fz_error
diff --git a/mupdf/mupdf.h b/mupdf/mupdf.h
index 6babf05c..49c3065d 100644
--- a/mupdf/mupdf.h
+++ b/mupdf/mupdf.h
@@ -159,8 +159,8 @@ fz_error pdf_openrawstream(fz_stream **stmp, pdf_xref *, int num, int gen);
fz_error pdf_openstream(fz_stream **stmp, pdf_xref *, int num, int gen);
fz_error pdf_openstreamat(fz_stream **stmp, pdf_xref *xref, int num, int gen, fz_obj *dict, int stmofs);
+fz_error pdf_openxrefwithstream(pdf_xref **xrefp, fz_stream *file, char *password);
fz_error pdf_openxref(pdf_xref **xrefp, char *filename, char *password);
-fz_error pdf_newxref(pdf_xref **xrefp, fz_stream *file, char *password);
void pdf_freexref(pdf_xref *);
/* private */
diff --git a/mupdf/pdf_xref.c b/mupdf/pdf_xref.c
index a20dc8d5..f19d5f8d 100644
--- a/mupdf/pdf_xref.c
+++ b/mupdf/pdf_xref.c
@@ -618,7 +618,7 @@ pdf_loadxref(pdf_xref *xref, char *buf, int bufsize)
*/
fz_error
-pdf_newxref(pdf_xref **xrefp, fz_stream *file, char *password)
+pdf_openxrefwithstream(pdf_xref **xrefp, fz_stream *file, char *password)
{
pdf_xref *xref;
fz_error error;
@@ -939,9 +939,8 @@ pdf_loadobject(fz_obj **objp, pdf_xref *xref, int num, int gen)
}
/*
- * Convenience function to open a file, create the xref and load the page tree.
- * If password is not null, try to decrypt.
- */
+ * Convenience function to open a file then call pdf_openxrefwithstream.
+ */
fz_error
pdf_openxref(pdf_xref **xrefp, char *filename, char *password)
@@ -956,18 +955,11 @@ pdf_openxref(pdf_xref **xrefp, char *filename, char *password)
return fz_throw("cannot open file '%s': %s", filename, strerror(errno));
file = fz_openfile(fd);
- error = pdf_newxref(&xref, file, password);
+ error = pdf_openxrefwithstream(&xref, file, password);
if (error)
return fz_rethrow(error, "cannot load document '%s'", filename);
fz_dropstream(file);
- error = pdf_loadpagetree(xref);
- if (error)
- {
- pdf_freexref(xref);
- return fz_rethrow(error, "cannot load page tree");
- }
-
*xrefp = xref;
return fz_okay;
}