]> www.fi.muni.cz Git - evince.git/blobdiff - pdf/xpdf/pdftopbm.cc
don't initialize embeddable (where did that come from?)
[evince.git] / pdf / xpdf / pdftopbm.cc
index 42fa3cd80024db5cd38be05e5cf1cda4d482b4d3..460377ffac6bc040637cf80ae1271b2ee78660f5 100644 (file)
@@ -2,10 +2,11 @@
 //
 // pdftopbm.cc
 //
-// Copyright 1998 Derek B. Noonburg
+// Copyright 1998-2002 Glyph & Cog, LLC
 //
 //========================================================================
 
+#include <aconf.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
@@ -13,6 +14,7 @@
 #include "parseargs.h"
 #include "GString.h"
 #include "gmem.h"
+#include "GlobalParams.h"
 #include "Object.h"
 #include "Stream.h"
 #include "Array.h"
 #include "Page.h"
 #include "PDFDoc.h"
 #include "PBMOutputDev.h"
-#include "Params.h"
 #include "Error.h"
 #include "config.h"
 
 static int firstPage = 1;
 static int lastPage = 0;
 static int resolution = 150;
-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[] = {
@@ -39,10 +44,24 @@ static ArgDesc argDesc[] = {
    "last page to print"},
   {"-r",      argInt,      &resolution,    0,
    "resolution, in DPI (default is 150)"},
+  {"-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"},
+  {"-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"},
+  {"--help",  argFlag,     &printHelp,     0,
+   "print usage information"},
+  {"-?",      argFlag,     &printHelp,     0,
+   "print usage information"},
   {NULL}
 };
 
@@ -50,31 +69,50 @@ int main(int argc, char *argv[]) {
   PDFDoc *doc;
   GString *fileName;
   char *pbmRoot;
+  GString *ownerPW, *userPW;
   PBMOutputDev *pbmOut;
   GBool ok;
 
   // parse args
   ok = parseArgs(argDesc, &argc, argv);
-  if (!ok || argc != 3 || printHelp) {
+  if (!ok || argc != 3 || printVersion || printHelp) {
     fprintf(stderr, "pdftopbm version %s\n", xpdfVersion);
     fprintf(stderr, "%s\n", xpdfCopyright);
-    printUsage("pdftopbm", "<PDF-file> <PBM-root>", argDesc);
+    if (!printVersion) {
+      printUsage("pdftopbm", "<PDF-file> <PBM-root>", argDesc);
+    }
     exit(1);
   }
   fileName = new GString(argv[1]);
   pbmRoot = argv[2];
 
-  // init error file
-  errorInit();
-
   // read config file
-  initParams(xpdfConfigFile);
+  globalParams = new GlobalParams(cfgFileName);
+  if (quiet) {
+    globalParams->setErrQuiet(quiet);
+  }
 
   // open PDF file
-  xref = NULL;
-  doc = new PDFDoc(fileName);
-  if (!doc->isOk())
-    exit(1);
+  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()) {
+    goto err;
+  }
 
   // get page range
   if (firstPage < 1)
@@ -83,18 +121,19 @@ int main(int argc, char *argv[]) {
     lastPage = doc->getNumPages();
 
   // write PBM files
-  rgbCubeSize = 1;
   pbmOut = PBMOutputDev::makePBMOutputDev(NULL, pbmRoot);
-  doc->displayPages(pbmOut, firstPage, lastPage, resolution, 0);
-  delete pbmOut;
+  pbmOut->startDoc(doc->getXRef());
+  doc->displayPages(pbmOut, firstPage, lastPage, resolution, 0, gFalse);
+  PBMOutputDev::killPBMOutputDev(pbmOut);
 
   // clean up
+ err:
   delete doc;
-  freeParams();
+  delete globalParams;
 
   // check for memory leaks
-  Object::memCheck(errFile);
-  gMemReport(errFile);
+  Object::memCheck(stderr);
+  gMemReport(stderr);
 
   return 0;
 }