summaryrefslogtreecommitdiff
path: root/source/tools
diff options
context:
space:
mode:
Diffstat (limited to 'source/tools')
-rw-r--r--source/tools/murun.c9
-rw-r--r--source/tools/pdfclean.c28
-rw-r--r--source/tools/pdfcreate.c19
-rw-r--r--source/tools/pdfmerge.c22
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);