Commit d8da6fd3 authored by Kris Jurka's avatar Kris Jurka Committed by Albert Astals Cid

pdftoxxx: error out when even/odd selects 0 pages

When page selection options and/or document length result in planned
output of a single page, further even/odd page selection can then
result in no pages being output.  Error out instead of producing no
output which is confusing to the user.

Closes: poppler/poppler#815
parent 311db0b2
......@@ -1170,6 +1170,16 @@ int main(int argc, char *argv[]) {
exit(99);
}
// If our page range selection and document size indicate we're only
// outputting a single page, ensure that even/odd page selection doesn't
// filter out that single page.
if (firstPage == lastPage &&
((printOnlyEven && firstPage % 2 == 0) ||
(printOnlyOdd && firstPage % 2 == 1))) {
fprintf(stderr, "Invalid even/odd page selection, no pages match criteria.\n");
exit(99);
}
if (singleFile && firstPage < lastPage) {
if (!quiet) {
fprintf(stderr,
......@@ -1197,9 +1207,6 @@ int main(int argc, char *argv[]) {
}
#endif
// Make sure firstPage is always used so that beginDocument() is called
if ((printOnlyEven && firstPage % 2 == 0) || (printOnlyOdd && firstPage % 2 == 1))
firstPage++;
cairoOut = new CairoOutputDev();
cairoOut->startDoc(doc);
......
......@@ -517,6 +517,17 @@ int main(int argc, char *argv[]) {
goto err1;
}
// If our page range selection and document size indicate we're only
// outputting a single page, ensure that even/odd page selection doesn't
// filter out that single page.
if (firstPage == lastPage &&
((printOnlyEven && firstPage % 2 == 0) ||
(printOnlyOdd && firstPage % 2 == 1))) {
fprintf(stderr, "Invalid even/odd page selection, no pages match criteria.\n");
goto err1;
}
if (singleFile && firstPage < lastPage) {
if (!quiet) {
fprintf(stderr,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment