1 //========================================================================
5 // Copyright 1998-2003 Glyph & Cog, LLC
7 //========================================================================
14 #include "parseargs.h"
17 #include "GlobalParams.h"
26 #include "ImageOutputDev.h"
30 static int firstPage
= 1;
31 static int lastPage
= 0;
32 static GBool dumpJPEG
= gFalse
;
33 static char ownerPassword
[33] = "\001";
34 static char userPassword
[33] = "\001";
35 static GBool quiet
= gFalse
;
36 static char cfgFileName
[256] = "";
37 static GBool printVersion
= gFalse
;
38 static GBool printHelp
= gFalse
;
40 static ArgDesc argDesc
[] = {
41 {"-f", argInt
, &firstPage
, 0,
42 "first page to convert"},
43 {"-l", argInt
, &lastPage
, 0,
44 "last page to convert"},
45 {"-j", argFlag
, &dumpJPEG
, 0,
46 "write JPEG images as JPEG files"},
47 {"-opw", argString
, ownerPassword
, sizeof(ownerPassword
),
48 "owner password (for encrypted files)"},
49 {"-upw", argString
, userPassword
, sizeof(userPassword
),
50 "user password (for encrypted files)"},
51 {"-q", argFlag
, &quiet
, 0,
52 "don't print any messages or errors"},
53 {"-cfg", argString
, cfgFileName
, sizeof(cfgFileName
),
54 "configuration file to use in place of .xpdfrc"},
55 {"-v", argFlag
, &printVersion
, 0,
56 "print copyright and version info"},
57 {"-h", argFlag
, &printHelp
, 0,
58 "print usage information"},
59 {"-help", argFlag
, &printHelp
, 0,
60 "print usage information"},
61 {"--help", argFlag
, &printHelp
, 0,
62 "print usage information"},
63 {"-?", argFlag
, &printHelp
, 0,
64 "print usage information"},
68 int main(int argc
, char *argv
[]) {
72 GString
*ownerPW
, *userPW
;
73 ImageOutputDev
*imgOut
;
80 ok
= parseArgs(argDesc
, &argc
, argv
);
81 if (!ok
|| argc
!= 3 || printVersion
|| printHelp
) {
82 fprintf(stderr
, "pdfimages version %s\n", xpdfVersion
);
83 fprintf(stderr
, "%s\n", xpdfCopyright
);
85 printUsage("pdfimages", "<PDF-file> <image-root>", argDesc
);
89 fileName
= new GString(argv
[1]);
93 globalParams
= new GlobalParams(cfgFileName
);
95 globalParams
->setErrQuiet(quiet
);
99 if (ownerPassword
[0] != '\001') {
100 ownerPW
= new GString(ownerPassword
);
104 if (userPassword
[0] != '\001') {
105 userPW
= new GString(userPassword
);
109 doc
= new PDFDoc(fileName
, ownerPW
, userPW
);
121 // check for copy permission
122 if (!doc
->okToCopy()) {
123 error(-1, "Copying of images from this document is not allowed.");
131 if (lastPage
< 1 || lastPage
> doc
->getNumPages())
132 lastPage
= doc
->getNumPages();
135 imgOut
= new ImageOutputDev(imgRoot
, dumpJPEG
);
136 if (imgOut
->isOk()) {
137 doc
->displayPages(imgOut
, firstPage
, lastPage
, 72, 72, 0,
138 gFalse
, gTrue
, gFalse
);
150 // check for memory leaks
151 xObject::memCheck(stderr
);