Chromium Code Reviews| Index: samples/pdfium_test.cc |
| diff --git a/samples/pdfium_test.cc b/samples/pdfium_test.cc |
| index 9bbd7717807459151777cac1ef8dc83588b342de..f291c558a8a47e73b83a4ffa82eb51c4facb6caa 100644 |
| --- a/samples/pdfium_test.cc |
| +++ b/samples/pdfium_test.cc |
| @@ -64,15 +64,21 @@ enum OutputFormat { |
| struct Options { |
| Options() |
| - : show_config(false), send_events(false), output_format(OUTPUT_NONE) {} |
| + : show_config(false), |
| + send_events(false), |
| + pages(false), |
| + output_format(OUTPUT_NONE) {} |
| bool show_config; |
| bool send_events; |
| + bool pages; |
| OutputFormat output_format; |
| std::string scale_factor_as_string; |
| std::string exe_path; |
| std::string bin_directory; |
| std::string font_directory; |
| + int firstPage; |
|
Lei Zhang
2016/11/14 19:09:23
first_page, last_page
npm
2016/11/14 20:14:15
Hmm I missed the format
|
| + int lastPage; |
| }; |
| struct FPDF_FORMFILLINFO_PDFiumTest : public FPDF_FORMFILLINFO { |
| @@ -466,6 +472,23 @@ bool ParseCommandLine(const std::vector<std::string>& args, |
| return false; |
| } |
| options->scale_factor_as_string = cur_arg.substr(8); |
| + } else if (cur_arg.size() > 8 && cur_arg.compare(0, 8, "--pages=") == 0) { |
| + if (options->pages) { |
| + fprintf(stderr, "Duplicate --pages argument\n"); |
| + return false; |
| + } |
| + options->pages = true; |
| + const std::string pagesstring = cur_arg.substr(8); |
| + size_t firstdash = pagesstring.find("-"); |
| + if (firstdash == std::string::npos) { |
| + std::stringstream(pagesstring) >> options->firstPage; |
| + options->lastPage = options->firstPage; |
| + } else { |
| + std::stringstream(pagesstring.substr(0, firstdash)) >> |
| + options->firstPage; |
| + std::stringstream(pagesstring.substr(firstdash + 1)) >> |
| + options->lastPage; |
| + } |
| } else if (cur_arg.size() >= 2 && cur_arg[0] == '-' && cur_arg[1] == '-') { |
| fprintf(stderr, "Unrecognized argument %s\n", cur_arg.c_str()); |
| return false; |
| @@ -777,7 +800,9 @@ void RenderPdf(const std::string& name, |
| int page_count = FPDF_GetPageCount(doc); |
| int rendered_pages = 0; |
| int bad_pages = 0; |
| - for (int i = 0; i < page_count; ++i) { |
| + int firstPage = options.pages ? options.firstPage : 0; |
|
Lei Zhang
2016/11/14 19:09:23
If the user passes in --pages=1-2, they actually g
npm
2016/11/14 20:14:15
This is because it is 0-indexed. This is consisten
|
| + int lastPage = options.pages ? options.lastPage + 1 : page_count; |
| + for (int i = firstPage; i < lastPage; ++i) { |
| if (bIsLinearized) { |
| nRet = PDF_DATA_NOTAVAIL; |
| while (nRet == PDF_DATA_NOTAVAIL) |
| @@ -835,6 +860,7 @@ static const char kUsageString[] = |
| " --bin-dir=<path> - override path to v8 external data\n" |
| " --font-dir=<path> - override path to external fonts\n" |
| " --scale=<number> - scale output size by number (e.g. 0.5)\n" |
| + " --pages=<number>(-<number>) - only render the given page(s)\n" |
| #ifdef _WIN32 |
| " --bmp - write page images <pdf-name>.<page-number>.bmp\n" |
| " --emf - write page meta files <pdf-name>.<page-number>.emf\n" |