| Index: samples/pdfium_test.cc
|
| diff --git a/samples/pdfium_test.cc b/samples/pdfium_test.cc
|
| index 9e1527d98d4104e49c81d18161cbff968eb68d9f..debe033369762d6ba51e45150577a9a2abb1d315 100644
|
| --- a/samples/pdfium_test.cc
|
| +++ b/samples/pdfium_test.cc
|
| @@ -8,6 +8,7 @@
|
| #include <string.h>
|
|
|
| #include <list>
|
| +#include <sstream>
|
| #include <string>
|
| #include <utility>
|
| #include <vector>
|
| @@ -40,6 +41,7 @@ struct Options {
|
| Options() : output_format(OUTPUT_NONE) { }
|
|
|
| OutputFormat output_format;
|
| + std::string scale_factor_as_string;
|
| std::string exe_path;
|
| std::string bin_directory;
|
| };
|
| @@ -303,6 +305,13 @@ bool ParseCommandLine(const std::vector<std::string>& args,
|
| options->bin_directory = cur_arg.substr(10);
|
| }
|
| #endif // V8_USE_EXTERNAL_STARTUP_DATA
|
| + else if (cur_arg.size() > 8 && cur_arg.compare(0, 8, "--scale=") == 0) {
|
| + if (!options->scale_factor_as_string.empty()) {
|
| + fprintf(stderr, "Duplicate --scale argument\n");
|
| + return false;
|
| + }
|
| + options->scale_factor_as_string = cur_arg.substr(8);
|
| + }
|
| else
|
| break;
|
| }
|
| @@ -344,7 +353,7 @@ void Add_Segment(FX_DOWNLOADHINTS* pThis, size_t offset, size_t size) {
|
| }
|
|
|
| void RenderPdf(const std::string& name, const char* pBuf, size_t len,
|
| - OutputFormat format) {
|
| + const Options& options) {
|
| printf("Rendering PDF file %s.\n", name.c_str());
|
|
|
| IPDF_JSPLATFORM platform_callbacks;
|
| @@ -420,9 +429,15 @@ void RenderPdf(const std::string& name, const char* pBuf, size_t len,
|
|
|
| int width = static_cast<int>(FPDF_GetPageWidth(page));
|
| int height = static_cast<int>(FPDF_GetPageHeight(page));
|
| + if (!options.scale_factor_as_string.empty()) {
|
| + double scale = 1.0;
|
| + std::stringstream(options.scale_factor_as_string) >> scale;
|
| + width *= scale;
|
| + height *= scale;
|
| + }
|
| +
|
| FPDF_BITMAP bitmap = FPDFBitmap_Create(width, height, 0);
|
| FPDFBitmap_FillRect(bitmap, 0, 0, width, height, 0xFFFFFFFF);
|
| -
|
| FPDF_RenderPageBitmap(bitmap, page, 0, 0, width, height, 0, 0);
|
| rendered_pages ++;
|
|
|
| @@ -431,7 +446,7 @@ void RenderPdf(const std::string& name, const char* pBuf, size_t len,
|
| const char* buffer =
|
| reinterpret_cast<const char*>(FPDFBitmap_GetBuffer(bitmap));
|
|
|
| - switch (format) {
|
| + switch (options.output_format) {
|
| #ifdef _WIN32
|
| case OUTPUT_BMP:
|
| WriteBmp(name.c_str(), i, buffer, stride, width, height);
|
| @@ -472,6 +487,7 @@ int main(int argc, const char* argv[]) {
|
| if (!ParseCommandLine(args, &options, &files)) {
|
| printf("Usage: pdfium_test [OPTION] [FILE]...\n");
|
| printf("--bin-dir=<path> - override path to v8 external data\n");
|
| + printf("--scale=<number> - scale output size by number (e.g. 0.5)\n");
|
| printf("--ppm - write page images <pdf-name>.<page-number>.ppm\n");
|
| #ifdef _WIN32
|
| printf("--bmp - write page images <pdf-name>.<page-number>.bmp\n");
|
| @@ -509,7 +525,7 @@ int main(int argc, const char* argv[]) {
|
| char* file_contents = GetFileContents(filename.c_str(), &file_length);
|
| if (!file_contents)
|
| continue;
|
| - RenderPdf(filename, file_contents, file_length, options.output_format);
|
| + RenderPdf(filename, file_contents, file_length, options);
|
| free(file_contents);
|
| }
|
|
|
|
|