diff options
-rw-r--r-- | apps/pdfapp.c | 2 | ||||
-rw-r--r-- | apps/pdfclean.c | 8 | ||||
-rw-r--r-- | apps/pdfdraw.c | 4 | ||||
-rw-r--r-- | apps/pdfinfo.c | 6 | ||||
-rw-r--r-- | apps/pdfshow.c | 17 | ||||
-rw-r--r-- | fitz/res_pixmap.c | 2 | ||||
-rw-r--r-- | mupdf/mupdf.h | 2 | ||||
-rw-r--r-- | mupdf/pdf_xref.c | 16 |
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; } |