//
// pdftotext.cc
//
-// Copyright 1997-2002 Glyph & Cog, LLC
+// Copyright 1997-2003 Glyph & Cog, LLC
//
//========================================================================
static int firstPage = 1;
static int lastPage = 0;
+static GBool physLayout = gFalse;
static GBool rawOrder = gFalse;
static GBool htmlMeta = gFalse;
static char textEncName[128] = "";
"first page to convert"},
{"-l", argInt, &lastPage, 0,
"last page to convert"},
+ {"-layout", argFlag, &physLayout, 0,
+ "maintain original physical layout"},
{"-raw", argFlag, &rawOrder, 0,
"keep strings in content stream order"},
{"-htmlmeta", argFlag, &htmlMeta, 0,
Object info;
GBool ok;
char *p;
+ int exitCode;
+
+ exitCode = 99;
// parse args
ok = parseArgs(argDesc, &argc, argv);
if (!printVersion) {
printUsage("pdftotext", "<PDF-file> [<text-file>]", argDesc);
}
- exit(1);
+ goto err0;
}
fileName = new GString(argv[1]);
delete ownerPW;
}
if (!doc->isOk()) {
+ exitCode = 1;
goto err2;
}
// check for copy permission
if (!doc->okToCopy()) {
error(-1, "Copying of text from this document is not allowed.");
+ exitCode = 3;
goto err2;
}
} else {
if (!(f = fopen(textFileName->getCString(), "wb"))) {
error(-1, "Couldn't open text file '%s'", textFileName->getCString());
+ exitCode = 2;
goto err3;
}
}
}
// write text file
- textOut = new TextOutputDev(textFileName->getCString(), rawOrder, htmlMeta);
+ textOut = new TextOutputDev(textFileName->getCString(),
+ physLayout, rawOrder, htmlMeta);
if (textOut->isOk()) {
doc->displayPages(textOut, firstPage, lastPage, 72, 0, gFalse);
+ } else {
+ delete textOut;
+ exitCode = 2;
+ goto err3;
}
delete textOut;
} else {
if (!(f = fopen(textFileName->getCString(), "ab"))) {
error(-1, "Couldn't open text file '%s'", textFileName->getCString());
+ exitCode = 2;
goto err3;
}
}
}
}
+ exitCode = 0;
+
// clean up
err3:
delete textFileName;
uMap->decRefCnt();
err1:
delete globalParams;
+ err0:
// check for memory leaks
Object::memCheck(stderr);
gMemReport(stderr);
- return 0;
+ return exitCode;
}
static void printInfoString(FILE *f, Dict *infoDict, char *key,