diff options
Diffstat (limited to 'source/tools')
-rw-r--r-- | source/tools/murun.c | 9 | ||||
-rw-r--r-- | source/tools/pdfclean.c | 28 | ||||
-rw-r--r-- | source/tools/pdfcreate.c | 19 | ||||
-rw-r--r-- | source/tools/pdfmerge.c | 22 |
4 files changed, 38 insertions, 40 deletions
diff --git a/source/tools/murun.c b/source/tools/murun.c index 88d429cc..c2a9f0bc 100644 --- a/source/tools/murun.c +++ b/source/tools/murun.c @@ -2513,10 +2513,13 @@ static void ffi_PDFDocument_save(js_State *J) fz_context *ctx = js_getcontext(J); pdf_document *pdf = js_touserdata(J, 0, "pdf_document"); const char *filename = js_tostring(J, 1); + const char *options = js_isdefined(J, 2) ? js_tostring(J, 2) : "ga"; + pdf_write_options pwo; - fz_try(ctx) - pdf_save_document(ctx, pdf, filename, NULL); - fz_catch(ctx) + fz_try(ctx) { + pdf_parse_write_options(ctx, &pwo, options); + pdf_save_document(ctx, pdf, filename, &pwo); + } fz_catch(ctx) rethrow(J); } diff --git a/source/tools/pdfclean.c b/source/tools/pdfclean.c index f703b155..22937186 100644 --- a/source/tools/pdfclean.c +++ b/source/tools/pdfclean.c @@ -19,13 +19,13 @@ static void usage(void) "\t-g\tgarbage collect unused objects\n" "\t-gg\tin addition to -g compact xref table\n" "\t-ggg\tin addition to -gg merge duplicate objects\n" - "\t-s\tclean content streams\n" - "\t-d\tdecompress all streams\n" "\t-l\tlinearize PDF\n" - "\t-i\ttoggle decompression of image streams\n" - "\t-f\ttoggle decompression of font streams\n" "\t-a\tascii hex encode binary streams\n" + "\t-d\tdecompress streams\n" "\t-z\tdeflate uncompressed streams\n" + "\t-f\tcompress font streams\n" + "\t-i\tcompress image streams\n" + "\t-s\tclean content streams\n" "\tpages\tcomma separated list of page numbers and ranges\n" ); exit(1); @@ -49,18 +49,22 @@ int pdfclean_main(int argc, char **argv) switch (c) { case 'p': password = fz_optarg; break; - case 'g': opts.do_garbage ++; break; - case 'd': opts.do_expand ^= PDF_EXPAND_ALL; break; - case 'f': opts.do_expand ^= PDF_EXPAND_FONTS; break; - case 'i': opts.do_expand ^= PDF_EXPAND_IMAGES; break; - case 'l': opts.do_linear ++; break; - case 'a': opts.do_ascii ++; break; - case 'z': opts.do_deflate ++; break; - case 's': opts.do_clean ++; break; + + case 'd': opts.do_decompress += 1; break; + case 'z': opts.do_compress += 1; break; + case 'f': opts.do_compress_fonts += 1; break; + case 'i': opts.do_compress_images += 1; break; + case 'a': opts.do_ascii += 1; break; + case 'g': opts.do_garbage += 1; break; + case 'l': opts.do_linear += 1; break; + case 's': opts.do_clean += 1; break; default: usage(); break; } } + if ((opts.do_ascii || opts.do_decompress) && !opts.do_compress) + opts.do_pretty = 1; + if (argc - fz_optind < 1) usage(); diff --git a/source/tools/pdfcreate.c b/source/tools/pdfcreate.c index 6f116c6a..839e493e 100644 --- a/source/tools/pdfcreate.c +++ b/source/tools/pdfcreate.c @@ -9,13 +9,9 @@ static void usage(void) { fprintf(stderr, - "usage: mutool create [-o output.pdf] [-adlsz] page.txt [page2.txt ...]\n" + "usage: mutool create [-o output.pdf] [-O options] page.txt [page2.txt ...]\n" "\t-o\tname of PDF file to create\n" - "\t-a\tascii hex encode binary streams\n" - "\t-d\tdecompress all streams\n" - "\t-l\tlinearize PDF\n" - "\t-s\tclean content streams\n" - "\t-z\tdeflate uncompressed streams\n" + "\t-O\tPDF write options\n" "\tpage.txt file defines page size, fonts, images and contents\n" ); exit(1); @@ -145,18 +141,15 @@ int pdfcreate_main(int argc, char **argv) { pdf_write_options opts = { 0 }; char *output = "out.pdf"; + char *flags = "z"; int i, c; - while ((c = fz_getopt(argc, argv, "adlszo:")) != -1) + while ((c = fz_getopt(argc, argv, "o:O:")) != -1) { switch (c) { case 'o': output = fz_optarg; break; - case 'a': opts.do_ascii ++; break; - case 'd': opts.do_expand ^= PDF_EXPAND_ALL; break; - case 'l': opts.do_linear ++; break; - case 's': opts.do_clean ++; break; - case 'z': opts.do_deflate ++; break; + case 'O': flags = fz_optarg; break; default: usage(); break; } } @@ -171,6 +164,8 @@ int pdfcreate_main(int argc, char **argv) exit(1); } + pdf_parse_write_options(ctx, &opts, flags); + doc = pdf_create_document(ctx); for (i = fz_optind; i < argc; ++i) diff --git a/source/tools/pdfmerge.c b/source/tools/pdfmerge.c index 13905460..f63a90c7 100644 --- a/source/tools/pdfmerge.c +++ b/source/tools/pdfmerge.c @@ -9,14 +9,11 @@ static void usage(void) { fprintf(stderr, - "usage: mutool merge [-o output.pdf] [-adlsz] input.pdf [pages] [input2.pdf] [pages2] ...\n" + "usage: mutool merge [-o output.pdf] [-O options] input.pdf [pages] [input2.pdf] [pages2] ...\n" "\t-o\tname of PDF file to create\n" - "\t-a\tascii hex encode binary streams\n" - "\t-d\tdecompress all streams\n" - "\t-l\tlinearize PDF\n" - "\t-s\tclean content streams\n" - "\t-z\tdeflate uncompressed streams\n" - "\tinput.pdf name of first PDF file from which we are copying pages\n" + "\t-O\tPDF write options\n" + "\tinput.pdf\tname of first PDF file from which we are copying pages\n" + "\tpages: comma separated list of page ranges (for example: 1-5,6,10-)\n" ); exit(1); } @@ -149,19 +146,16 @@ int pdfmerge_main(int argc, char **argv) { pdf_write_options opts = { 0 }; char *output = "out.pdf"; + char *flags = ""; char *input; int c; - while ((c = fz_getopt(argc, argv, "adlszo:")) != -1) + while ((c = fz_getopt(argc, argv, "o:O:")) != -1) { switch (c) { case 'o': output = fz_optarg; break; - case 'a': opts.do_ascii ++; break; - case 'd': opts.do_expand ^= PDF_EXPAND_ALL; break; - case 'l': opts.do_linear ++; break; - case 's': opts.do_clean ++; break; - case 'z': opts.do_deflate ++; break; + case 'O': flags = fz_optarg; break; default: usage(); break; } } @@ -176,6 +170,8 @@ int pdfmerge_main(int argc, char **argv) exit(1); } + pdf_parse_write_options(ctx, &opts, flags); + fz_try(ctx) { doc_des = pdf_create_document(ctx); |