summaryrefslogtreecommitdiff
path: root/apps/pdfmerge.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/pdfmerge.c')
-rw-r--r--apps/pdfmerge.c54
1 files changed, 20 insertions, 34 deletions
diff --git a/apps/pdfmerge.c b/apps/pdfmerge.c
index 5ad161f0..8c431308 100644
--- a/apps/pdfmerge.c
+++ b/apps/pdfmerge.c
@@ -4,14 +4,10 @@
void usage()
{
fprintf(stderr,
- "usage: pdfmerge [options] file.pdf pages ...\n"
+ "usage: pdfmerge [options] file1.pdf file2.pdf ...\n"
+ " -d -\tpassword for decryption\n"
" -o -\toutput file name (default out.pdf)\n"
- " -d -\tset user password for decryption\n"
- " -e\tencrypt outfile\n"
- " -U -\tset user password for encryption\n"
- " -O -\tset owner password\n"
- " -P -\tset permissions\n"
- " -N -\tkey length in bits: 40 <= n <= 128\n"
+ " -v \tverbose\n"
);
exit(1);
}
@@ -35,25 +31,15 @@ int main(int argc, char **argv)
int i, k;
int c;
- pdf_crypt *encrypt = 0;
- int doencrypt = 0;
-
- char *userpw = "";
- char *ownerpw = "";
- int perms = -4; /* 0xfffffffc */
- int keylen = 40;
+ int verbose = 0;
char *password = "";
- while ((c = getopt(argc, argv, "reo:U:O:P:N:")) != -1)
+ while ((c = getopt(argc, argv, "vo:d:")) != -1)
{
switch (c)
{
- case 'e': ++ doencrypt; break;
+ case 'v': ++ verbose; break;
case 'o': savename = optarg; break;
- case 'U': userpw = optarg; break;
- case 'O': ownerpw = optarg; break;
- case 'P': perms = atoi(optarg); break;
- case 'N': keylen = atoi(optarg); break;
case 'd': password = optarg; break;
default: usage();
}
@@ -84,6 +70,12 @@ int main(int argc, char **argv)
for (i = optind; i < argc; i++)
{
+ if (verbose)
+ {
+ printf("loading pdf '%s' ", argv[i]);
+ fflush(stdout);
+ }
+
error = pdf_newxref(&src);
if (error)
fz_abort(error);
@@ -111,6 +103,9 @@ int main(int argc, char **argv)
if (error)
fz_abort(error);
+ if (verbose)
+ printf("(%d pages)\n", srcpages->count);
+
for (k = 0; k < srcpages->count; k++)
{
fz_dictdels(srcpages->pobj[k], "Parent");
@@ -152,6 +147,10 @@ int main(int argc, char **argv)
* Create and relink Pages object
*/
+ if (verbose)
+ printf("creating pdf '%s' (%d pages)\n",
+ savename, fz_arraylen(dstrefs));
+
error = pdf_allocobject(dst, &pagesoid, &pagesgid);
if (error)
fz_abort(error);
@@ -213,20 +212,7 @@ int main(int argc, char **argv)
* Write out the new PDF
*/
- if (doencrypt)
- {
- fz_obj *id = fz_dictgets(dst->trailer, "ID");
- if (!id)
- fz_packobj(&id, "[(ABCDEFGHIJKLMNOP)(ABCDEFGHIJKLMNOP)]");
- else
- fz_keepobj(id);
- error = pdf_newencrypt(&encrypt, userpw, ownerpw, perms, keylen, id);
- if (error)
- fz_abort(error);
- fz_dropobj(id);
- }
-
- error = pdf_savexref(dst, savename, encrypt);
+ error = pdf_savexref(dst, savename, nil);
if (error)
fz_abort(error);