]> www.fi.muni.cz Git - evince.git/blobdiff - pdf/xpdf/pdfimages.cc
distribute gpdf-window-ui.xml
[evince.git] / pdf / xpdf / pdfimages.cc
index 9d7a484799381d07ba89695ba6fc729d78e5e4c7..898ad00ed5f5ea951f51e17e0dea99b495543c8a 100644 (file)
@@ -2,10 +2,11 @@
 //
 // pdfimages.cc
 //
 //
 // pdfimages.cc
 //
-// Copyright 1998 Derek B. Noonburg
+// Copyright 1998-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
 //
 //========================================================================
 
+#include <aconf.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
@@ -13,6 +14,7 @@
 #include "parseargs.h"
 #include "GString.h"
 #include "gmem.h"
 #include "parseargs.h"
 #include "GString.h"
 #include "gmem.h"
+#include "GlobalParams.h"
 #include "Object.h"
 #include "Stream.h"
 #include "Array.h"
 #include "Object.h"
 #include "Stream.h"
 #include "Array.h"
 #include "Page.h"
 #include "PDFDoc.h"
 #include "ImageOutputDev.h"
 #include "Page.h"
 #include "PDFDoc.h"
 #include "ImageOutputDev.h"
-#include "Params.h"
 #include "Error.h"
 #include "config.h"
 
 static int firstPage = 1;
 static int lastPage = 0;
 static GBool dumpJPEG = gFalse;
 #include "Error.h"
 #include "config.h"
 
 static int firstPage = 1;
 static int lastPage = 0;
 static GBool dumpJPEG = gFalse;
-GBool printCommands = gFalse;
+static char ownerPassword[33] = "";
+static char userPassword[33] = "";
+static GBool quiet = gFalse;
+static char cfgFileName[256] = "";
+static GBool printVersion = gFalse;
 static GBool printHelp = gFalse;
 
 static ArgDesc argDesc[] = {
 static GBool printHelp = gFalse;
 
 static ArgDesc argDesc[] = {
@@ -39,12 +44,24 @@ static ArgDesc argDesc[] = {
    "last page to convert"},
   {"-j",      argFlag,     &dumpJPEG,      0,
    "write JPEG images as JPEG files"},
    "last page to convert"},
   {"-j",      argFlag,     &dumpJPEG,      0,
    "write JPEG images as JPEG files"},
-  {"-q",      argFlag,     &errQuiet,      0,
+  {"-opw",    argString,   ownerPassword,  sizeof(ownerPassword),
+   "owner password (for encrypted files)"},
+  {"-upw",    argString,   userPassword,   sizeof(userPassword),
+   "user password (for encrypted files)"},
+  {"-q",      argFlag,     &quiet,         0,
    "don't print any messages or errors"},
    "don't print any messages or errors"},
+  {"-cfg",        argString,      cfgFileName,    sizeof(cfgFileName),
+   "configuration file to use in place of .xpdfrc"},
+  {"-v",      argFlag,     &printVersion,  0,
+   "print copyright and version info"},
   {"-h",      argFlag,     &printHelp,     0,
    "print usage information"},
   {"-help",   argFlag,     &printHelp,     0,
    "print usage information"},
   {"-h",      argFlag,     &printHelp,     0,
    "print usage information"},
   {"-help",   argFlag,     &printHelp,     0,
    "print usage information"},
+  {"--help",  argFlag,     &printHelp,     0,
+   "print usage information"},
+  {"-?",      argFlag,     &printHelp,     0,
+   "print usage information"},
   {NULL}
 };
 
   {NULL}
 };
 
@@ -52,37 +69,55 @@ int main(int argc, char *argv[]) {
   PDFDoc *doc;
   GString *fileName;
   char *imgRoot;
   PDFDoc *doc;
   GString *fileName;
   char *imgRoot;
+  GString *ownerPW, *userPW;
   ImageOutputDev *imgOut;
   GBool ok;
 
   // parse args
   ok = parseArgs(argDesc, &argc, argv);
   ImageOutputDev *imgOut;
   GBool ok;
 
   // parse args
   ok = parseArgs(argDesc, &argc, argv);
-  if (!ok || argc != 3 || printHelp) {
+  if (!ok || argc != 3 || printVersion || printHelp) {
     fprintf(stderr, "pdfimages version %s\n", xpdfVersion);
     fprintf(stderr, "%s\n", xpdfCopyright);
     fprintf(stderr, "pdfimages version %s\n", xpdfVersion);
     fprintf(stderr, "%s\n", xpdfCopyright);
-    printUsage("pdfimages", "<PDF-file> <image-root>", argDesc);
+    if (!printVersion) {
+      printUsage("pdfimages", "<PDF-file> <image-root>", argDesc);
+    }
     exit(1);
   }
   fileName = new GString(argv[1]);
   imgRoot = argv[2];
 
     exit(1);
   }
   fileName = new GString(argv[1]);
   imgRoot = argv[2];
 
-  // init error file
-  errorInit();
-
   // read config file
   // read config file
-  initParams(xpdfConfigFile);
+  globalParams = new GlobalParams(cfgFileName);
+  if (quiet) {
+    globalParams->setErrQuiet(quiet);
+  }
 
 
-  // open PDF fihe
-  xref = NULL;
-  doc = new PDFDoc(bxpdfopen(fileName), fileName);
+  // open PDF file
+  if (ownerPassword[0]) {
+    ownerPW = new GString(ownerPassword);
+  } else {
+    ownerPW = NULL;
+  }
+  if (userPassword[0]) {
+    userPW = new GString(userPassword);
+  } else {
+    userPW = NULL;
+  }
+  doc = new PDFDoc(fileName, ownerPW, userPW);
+  if (userPW) {
+    delete userPW;
+  }
+  if (ownerPW) {
+    delete ownerPW;
+  }
   if (!doc->isOk()) {
   if (!doc->isOk()) {
-    goto err1;
+    goto err;
   }
 
   // check for copy permission
   if (!doc->okToCopy()) {
     error(-1, "Copying of images from this document is not allowed.");
   }
 
   // check for copy permission
   if (!doc->okToCopy()) {
     error(-1, "Copying of images from this document is not allowed.");
-    goto err2;
+    goto err;
   }
 
   // get page range
   }
 
   // get page range
@@ -94,14 +129,13 @@ int main(int argc, char *argv[]) {
   // write image files
   imgOut = new ImageOutputDev(imgRoot, dumpJPEG);
   if (imgOut->isOk())
   // write image files
   imgOut = new ImageOutputDev(imgRoot, dumpJPEG);
   if (imgOut->isOk())
-    doc->displayPages(imgOut, firstPage, lastPage, 72, 0);
+    doc->displayPages(imgOut, firstPage, lastPage, 72, 0, gFalse);
   delete imgOut;
 
   // clean up
   delete imgOut;
 
   // clean up
- err2:
+ err:
   delete doc;
   delete doc;
- err1:
-  freeParams();
+  delete globalParams;
 
   // check for memory leaks
   Object::memCheck(stderr);
 
   // check for memory leaks
   Object::memCheck(stderr);