home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 110 / EnigmaAmiga110CD.iso / indispensabili / utility / apdf / xpdf-0.80 / xpdf / pdftopbm.cc < prev    next >
C/C++ Source or Header  |  1999-04-10  |  2KB  |  101 lines

  1. //========================================================================
  2. //
  3. // pdftopbm.cc
  4. //
  5. // Copyright 1998 Derek B. Noonburg
  6. //
  7. //========================================================================
  8.  
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <stddef.h>
  12. #include <string.h>
  13. #include "parseargs.h"
  14. #include "GString.h"
  15. #include "gmem.h"
  16. #include "Object.h"
  17. #include "Stream.h"
  18. #include "Array.h"
  19. #include "Dict.h"
  20. #include "XRef.h"
  21. #include "Catalog.h"
  22. #include "Page.h"
  23. #include "PDFDoc.h"
  24. #include "PBMOutputDev.h"
  25. #include "Params.h"
  26. #include "Error.h"
  27. #include "config.h"
  28.  
  29. static int firstPage = 1;
  30. static int lastPage = 0;
  31. static int resolution = 150;
  32. GBool printCommands = gFalse;
  33. static GBool printHelp = gFalse;
  34.  
  35. static ArgDesc argDesc[] = {
  36.   {"-f",      argInt,      &firstPage,     0,
  37.    "first page to print"},
  38.   {"-l",      argInt,      &lastPage,      0,
  39.    "last page to print"},
  40.   {"-r",      argInt,      &resolution,    0,
  41.    "resolution, in DPI (default is 150)"},
  42.   {"-h",      argFlag,     &printHelp,     0,
  43.    "print usage information"},
  44.   {"-help",   argFlag,     &printHelp,     0,
  45.    "print usage information"},
  46.   {NULL}
  47. };
  48.  
  49. int main(int argc, char *argv[]) {
  50.   PDFDoc *doc;
  51.   GString *fileName;
  52.   char *pbmRoot;
  53.   PBMOutputDev *pbmOut;
  54.   GBool ok;
  55.  
  56.   // parse args
  57.   ok = parseArgs(argDesc, &argc, argv);
  58.   if (!ok || argc != 3 || printHelp) {
  59.     fprintf(stderr, "pdftopbm version %s\n", xpdfVersion);
  60.     fprintf(stderr, "%s\n", xpdfCopyright);
  61.     printUsage("pdftopbm", "<PDF-file> <PBM-root>", argDesc);
  62.     exit(1);
  63.   }
  64.   fileName = new GString(argv[1]);
  65.   pbmRoot = argv[2];
  66.  
  67.   // init error file
  68.   errorInit();
  69.  
  70.   // read config file
  71.   initParams(xpdfConfigFile);
  72.  
  73.   // open PDF file
  74.   xref = NULL;
  75.   doc = new PDFDoc(fileName);
  76.   if (!doc->isOk())
  77.     exit(1);
  78.  
  79.   // get page range
  80.   if (firstPage < 1)
  81.     firstPage = 1;
  82.   if (lastPage < 1 || lastPage > doc->getNumPages())
  83.     lastPage = doc->getNumPages();
  84.  
  85.   // write PBM files
  86.   rgbCubeSize = 1;
  87.   pbmOut = PBMOutputDev::makePBMOutputDev(NULL, pbmRoot);
  88.   doc->displayPages(pbmOut, firstPage, lastPage, resolution, 0);
  89.   delete pbmOut;
  90.  
  91.   // clean up
  92.   delete doc;
  93.   freeParams();
  94.  
  95.   // check for memory leaks
  96.   Object::memCheck(errFile);
  97.   gMemReport(errFile);
  98.  
  99.   return 0;
  100. }
  101.