utils/pdftoppm.1 | 3 +++ utils/pdftoppm.cc | 26 +++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-)
New commits: commit bae91ecb638fcfee001e5c9a86a754610da796e4 Author: William Bader <[email protected]> Date: Tue Dec 28 11:53:54 2010 +0000 Add -singlefile option to pdftoppm Bug 32025 diff --git a/utils/pdftoppm.1 b/utils/pdftoppm.1 index cbc3ba9..f7af779 100644 --- a/utils/pdftoppm.1 +++ b/utils/pdftoppm.1 @@ -35,6 +35,9 @@ Generates only the odd numbered pages. .B \-e Generates only the even numbered pages. .TP +.BI \-singlefile +Writes only the first page and does not add digits. +.TP .BI \-r " number" Specifies the X and Y resolution, in DPI. The default is 150 DPI. .TP diff --git a/utils/pdftoppm.cc b/utils/pdftoppm.cc index f600e5b..aea65e8 100644 --- a/utils/pdftoppm.cc +++ b/utils/pdftoppm.cc @@ -22,6 +22,7 @@ // Copyright (C) 2010 Adrian Johnson <[email protected]> // Copyright (C) 2010 Hib Eris <[email protected]> // Copyright (C) 2010 Jonathan Liu <[email protected]> +// Copyright (C) 2010 William Bader <[email protected]> // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -53,6 +54,7 @@ static int firstPage = 1; static int lastPage = 0; static GBool printOnlyOdd = gFalse; static GBool printOnlyEven = gFalse; +static GBool singleFile = gFalse; static double resolution = 0.0; static double x_resolution = 150.0; static double y_resolution = 150.0; @@ -87,6 +89,8 @@ static const ArgDesc argDesc[] = { "print only odd pages"}, {"-e", argFlag, &printOnlyEven, 0, "print only even pages"}, + {"-singlefile", argFlag, &singleFile, 0, + "write only the first page and do not add digits"}, {"-r", argFP, &resolution, 0, "resolution, in DPI (default is 150)"}, @@ -306,9 +310,20 @@ int main(int argc, char *argv[]) { // get page range if (firstPage < 1) firstPage = 1; + if (singleFile && lastPage < 1) + lastPage = firstPage; if (lastPage < 1 || lastPage > doc->getNumPages()) lastPage = doc->getNumPages(); + if (singleFile && firstPage < lastPage) { + if (!quiet) { + fprintf(stderr, + "Warning: Single file will write only the first of the %d pages.\n", + lastPage + 1 - firstPage); + } + lastPage = firstPage; + } + // write PPM files paperColor[0] = 255; paperColor[1] = 255; @@ -350,9 +365,14 @@ int main(int argc, char *argv[]) { pg_h = tmp; } if (ppmRoot != NULL) { - snprintf(ppmFile, PPM_FILE_SZ, "%.*s-%0*d.%s", - PPM_FILE_SZ - 32, ppmRoot, pg_num_len, pg, - png ? "png" : jpeg ? "jpg" : mono ? "pbm" : gray ? "pgm" : "ppm"); + const char *ext = png ? "png" : jpeg ? "jpg" : mono ? "pbm" : gray ? "pgm" : "ppm"; + if (singleFile) { + snprintf(ppmFile, PPM_FILE_SZ, "%.*s.%s", + PPM_FILE_SZ - 32, ppmRoot, ext); + } else { + snprintf(ppmFile, PPM_FILE_SZ, "%.*s-%0*d.%s", + PPM_FILE_SZ - 32, ppmRoot, pg_num_len, pg, ext); + } savePageSlice(doc, splashOut, pg, x, y, w, h, pg_w, pg_h, ppmFile); } else { savePageSlice(doc, splashOut, pg, x, y, w, h, pg_w, pg_h, NULL); _______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
