diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/pdfclean.c | 37 | ||||
-rw-r--r-- | test/pdfdebug.c | 61 | ||||
-rw-r--r-- | test/pdfmerge.c | 44 | ||||
-rw-r--r-- | test/pdfrip.c | 39 |
4 files changed, 69 insertions, 112 deletions
diff --git a/test/pdfclean.c b/test/pdfclean.c index 58e8b828..7dd15427 100644 --- a/test/pdfclean.c +++ b/test/pdfclean.c @@ -24,11 +24,11 @@ void preloadobjstms(pdf_xref *xref) fz_obj *obj; int i; - for (i = 0; i < xref->size; i++) + for (i = 0; i < xref->len; i++) { if (xref->table[i].type == 'o') { - error = pdf_loadobject0(&obj, xref, i, 0, nil); + error = pdf_loadobject(&obj, xref, i, 0); if (error) fz_abort(error); fz_dropobj(obj); } @@ -39,23 +39,22 @@ void expandstreams(pdf_xref *xref) { fz_error *error; fz_obj *stmobj; - int stmofs; fz_buffer *buf; fz_obj *stmlen; int i, gen; - for (i = 0; i < xref->size; i++) + for (i = 0; i < xref->len; i++) { if (xref->table[i].type == 'n') { gen = xref->table[i].gen; - error = pdf_loadobject0(&stmobj, xref, i, gen, &stmofs); - if (error) fz_abort(error); - - if (stmofs != -1) + if (pdf_isstream(xref, i, gen)) { - error = pdf_readstream0(&buf, xref, stmobj, i, gen, stmofs); + error = pdf_loadobject(&stmobj, xref, i, gen); + if (error) fz_abort(error); + + error = pdf_loadstream(&buf, xref, i, gen); if (error) fz_abort(error); fz_dictdels(stmobj, "Filter"); @@ -67,10 +66,10 @@ void expandstreams(pdf_xref *xref) if (error) fz_abort(error); fz_dropobj(stmlen); - error = pdf_saveobject(xref, i, gen, stmobj); - if (error) fz_abort(error); - error = pdf_savestream(xref, i, gen, buf); - if (error) fz_abort(error); + pdf_updateobject(xref, i, gen, stmobj); + pdf_updatestream(xref, i, gen, buf); + + fz_dropobj(stmobj); } } } @@ -119,18 +118,14 @@ int main(int argc, char **argv) infile = argv[optind++]; outfile = argv[optind++]; - error = pdf_newxref(&xref); - if (error) - fz_abort(error); - if (dorepair) - error = pdf_repairxref(xref, infile); + error = pdf_repairpdf(&xref, infile); else - error = pdf_openxref(xref, infile); + error = pdf_openpdf(&xref, infile); if (error) fz_abort(error); - error = pdf_decryptxref(xref); + error = pdf_decryptpdf(xref); if (error) fz_abort(error); @@ -167,7 +162,7 @@ int main(int argc, char **argv) if (error) fz_abort(error); - pdf_closexref(xref); + pdf_closepdf(xref); return 0; } diff --git a/test/pdfdebug.c b/test/pdfdebug.c index 7536e7e0..eefa0a74 100644 --- a/test/pdfdebug.c +++ b/test/pdfdebug.c @@ -41,86 +41,73 @@ void printsafe(unsigned char *buf, int n) } } -void decodestream(pdf_xref *xref, fz_obj *stream, int oid, int gid, int ofs) +void decodestream(pdf_xref *xref, int oid, int gid) { fz_error *error; unsigned char buf[512]; safecol = 0; - error = pdf_openstream0(xref, stream, oid, gid, ofs); + error = pdf_openstream(xref, oid, gid); if (error) fz_abort(error); while (1) { - int n = fz_read(xref->file, buf, sizeof buf); + int n = fz_read(xref->stream, buf, sizeof buf); if (n == 0) break; if (n < 0) - fz_abort(fz_ferror(xref->file)); + fz_abort(fz_ferror(xref->stream)); printsafe(buf, n); } pdf_closestream(xref); } -void copystream(pdf_xref *xref, fz_obj *stream, int ofs) +void copystream(pdf_xref *xref, int oid, int gid) { fz_error *error; unsigned char buf[512]; - fz_filter *filter; - fz_obj *obj; - int len; safecol = 0; - obj = fz_dictgets(stream, "Length"); - error = pdf_resolve(&obj, xref); - if (error) fz_abort(error); - len = fz_toint(obj); - fz_dropobj(obj); - - error = fz_newnullfilter(&filter, len); - if (error) fz_abort(error); - - fz_seek(xref->file, ofs, 0); - - error = fz_pushfilter(xref->file, filter); + error = pdf_openrawstream(xref, oid, gid); if (error) fz_abort(error); while (1) { - int n = fz_read(xref->file, buf, sizeof buf); + int n = fz_read(xref->stream, buf, sizeof buf); if (n == 0) break; if (n < 0) - fz_abort(fz_ferror(xref->file)); + fz_abort(fz_ferror(xref->stream)); printsafe(buf, n); } - fz_popfilter(xref->file); + pdf_closestream(xref); } void printobject(pdf_xref *xref, int oid, int gid) { fz_error *error; - int stmofs; fz_obj *obj; - error = pdf_loadobject0(&obj, xref, oid, gid, &stmofs); + error = pdf_loadobject(&obj, xref, oid, gid); if (error) fz_abort(error); printf("%d %d obj\n", oid, gid); fz_debugobj(obj); printf("\n"); - if (stmofs != -1) { + + if (xref->table[oid].stmofs) { printf("stream\n"); if (dodecode) - decodestream(xref, obj, oid, gid, stmofs); + decodestream(xref, oid, gid); else - copystream(xref, obj, stmofs); + copystream(xref, oid, gid); printf("endstream\n"); } + printf("endobj\n"); fz_dropobj(obj); @@ -159,18 +146,14 @@ int main(int argc, char **argv) filename = argv[optind++]; - error = pdf_newxref(&xref); - if (error) - fz_abort(error); - if (dorepair) - error = pdf_repairxref(xref, filename); + error = pdf_repairpdf(&xref, filename); else - error = pdf_openxref(xref, filename); + error = pdf_openpdf(&xref, filename); if (error) fz_abort(error); - error = pdf_decryptxref(xref); + error = pdf_decryptpdf(xref); if (error) fz_abort(error); @@ -180,9 +163,6 @@ int main(int argc, char **argv) if (error) fz_abort(error); } - if (doprintxref) - pdf_debugxref(xref); - if (optind == argc) { printf("trailer\n"); @@ -196,7 +176,10 @@ int main(int argc, char **argv) printf("\n"); } - pdf_closexref(xref); + if (doprintxref) + pdf_debugpdf(xref); + + pdf_closepdf(xref); return 0; } diff --git a/test/pdfmerge.c b/test/pdfmerge.c index a3041188..0ccaeaa4 100644 --- a/test/pdfmerge.c +++ b/test/pdfmerge.c @@ -65,11 +65,7 @@ int main(int argc, char **argv) * Create new blank xref table */ - error = pdf_newxref(&dst); - if (error) - fz_abort(error); - - error = pdf_emptyxref(dst, 1.3); + error = pdf_newpdf(&dst); if (error) fz_abort(error); @@ -83,15 +79,11 @@ int main(int argc, char **argv) for (i = optind; i < argc; i++) { - error = pdf_newxref(&src); - if (error) - fz_abort(error); - - error = pdf_openxref(src, argv[i]); + error = pdf_openpdf(&src, argv[i]); if (error) fz_abort(error); - error = pdf_decryptxref(src); + error = pdf_decryptpdf(src); if (error) fz_abort(error); @@ -119,9 +111,9 @@ int main(int argc, char **argv) fz_dictdels(srcpages->pobj[k], "Annots"); fz_dictdels(srcpages->pobj[k], "Tabs"); - pdf_saveobject(src, - fz_toobjid(srcpages->pref[k]), - fz_togenid(srcpages->pref[k]), + pdf_updateobject(src, + fz_tonum(srcpages->pref[k]), + fz_togen(srcpages->pref[k]), srcpages->pobj[k]); error = fz_arraypush(srcrefs, srcpages->pref[k]); if (error) @@ -141,14 +133,14 @@ int main(int argc, char **argv) pdf_freepagetree(srcpages); - pdf_closexref(src); + pdf_closepdf(src); } /* * Create and relink Pages object */ - error = pdf_createobject(dst, &pagesoid, &pagesgid); + error = pdf_allocobject(dst, &pagesoid, &pagesgid); if (error) fz_abort(error); @@ -159,9 +151,7 @@ int main(int argc, char **argv) if (error) fz_abort(error); - error = pdf_saveobject(dst, pagesoid, pagesgid, obj); - if (error) - fz_abort(error); + pdf_updateobject(dst, pagesoid, pagesgid, obj); fz_dropobj(obj); @@ -171,17 +161,15 @@ int main(int argc, char **argv) for (i = 0; i < fz_arraylen(dstrefs); i++) { - int oid = fz_toobjid(fz_arrayget(dstrefs, i)); - int gid = fz_togenid(fz_arrayget(dstrefs, i)); - error = pdf_loadobject0(&obj, dst, oid, gid, nil); + int oid = fz_tonum(fz_arrayget(dstrefs, i)); + int gid = fz_togen(fz_arrayget(dstrefs, i)); + error = pdf_loadobject(&obj, dst, oid, gid); if (error) fz_abort(error); error = fz_dictputs(obj, "Parent", pagesref); if (error) fz_abort(error); - error = pdf_saveobject(dst, oid, gid, obj); - if (error) - fz_abort(error); + pdf_updateobject(dst, oid, gid, obj); fz_dropobj(obj); } @@ -191,7 +179,7 @@ int main(int argc, char **argv) * Create Catalog and trailer */ - error = pdf_createobject(dst, &rootoid, &rootgid); + error = pdf_allocobject(dst, &rootoid, &rootgid); if (error) fz_abort(error); @@ -201,9 +189,7 @@ int main(int argc, char **argv) if (error) fz_abort(error); - error = pdf_saveobject(dst, rootoid, rootgid, obj); - if (error) - fz_abort(error); + pdf_updateobject(dst, rootoid, rootgid, obj); fz_dropobj(obj); diff --git a/test/pdfrip.c b/test/pdfrip.c index 2bcceada..34d6a141 100644 --- a/test/pdfrip.c +++ b/test/pdfrip.c @@ -15,10 +15,10 @@ void runcsi(pdf_xref *xref, pdf_csi *csi, pdf_resources *rdb, fz_obj *stmref) { fz_error *error; - error = pdf_openstream(xref, stmref); + error = pdf_openstream(xref, fz_tonum(stmref), fz_togen(stmref)); if (error) fz_abort(error); - error = pdf_runcsi(csi, rdb, xref->file); + error = pdf_runcsi(csi, rdb, xref->stream); if (error) fz_abort(error); pdf_closestream(xref); @@ -84,25 +84,27 @@ printf("\nfitz tree:\n"); fz_pixmap *pix; fz_renderer *gc; fz_matrix ctm; + fz_rect bbox; #define W 612 #define H 792 -#define xW 1106 -#define xH 1548 - fz_newrenderer(&gc); - fz_newpixmap(&pix, 0, 0, W, H, 1, 0); - ctm = fz_concat(fz_translate(0, -H), fz_scale(1,-1)); - memset(pix->samples, 0x00, pix->stride * pix->h * 2); + bbox.min.x = 0; + bbox.min.y = 0; + bbox.max.x = W; + bbox.max.y = H; + + ctm = fz_concat(fz_translate(0, -H), fz_scale(1,-1)); printf("rendering!\n"); - fz_rendernode(gc, csi->tree->root, ctm, pix); + fz_rendertree(&pix, gc, csi->tree, ctm, bbox); printf("done!\n"); + fz_debugpixmap(pix); + fz_droppixmap(pix); - fz_freepixmap(pix); fz_freerenderer(gc); } @@ -118,13 +120,11 @@ int main(int argc, char **argv) int c; char *password = ""; - int dorepair = 0; - while ((c = getopt(argc, argv, "rp:")) != -1) + while ((c = getopt(argc, argv, "p:")) != -1) { switch (c) { - case 'r': dorepair ++; break; case 'p': password = optarg; break; default: usage(); } @@ -135,18 +135,11 @@ int main(int argc, char **argv) filename = argv[optind++]; - error = pdf_newxref(&xref); - if (error) - fz_abort(error); - - if (dorepair) - error = pdf_repairxref(xref, filename); - else - error = pdf_openxref(xref, filename); + error = pdf_openpdf(&xref, filename); if (error) fz_abort(error); - error = pdf_decryptxref(xref); + error = pdf_decryptpdf(xref); if (error) fz_abort(error); @@ -175,7 +168,7 @@ int main(int argc, char **argv) showpage(xref, pages->pobj[page - 1]); } - pdf_closexref(xref); + pdf_closepdf(xref); return 0; } |