Add pdfium_test --show-pageinfo to dump page bounding boxes. The bounding boxes are LBRT coordinates. e.g. Page 0: MediaBox: 0.00 0.00 595.00 842.00 Page 0: No CropBox. Page 0: BleedBox: 0.04 0.00 842.04 594.96 Page 0: TrimBox: 0.04 0.00 842.04 594.96 Page 0: ArtBox: 0.00 0.02 594.96 594.96 Change-Id: I2809aab69f3c51bde9a443d6c92f3167ee10b3c9 Reviewed-on: https://pdfium-review.googlesource.com/c/43976 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: Shirleen Lou <xlou@chromium.org>
diff --git a/samples/pdfium_test.cc b/samples/pdfium_test.cc index 2e8487e..e64382c 100644 --- a/samples/pdfium_test.cc +++ b/samples/pdfium_test.cc
@@ -70,6 +70,7 @@ enum OutputFormat { OUTPUT_NONE, + OUTPUT_PAGEINFO, OUTPUT_STRUCTURE, OUTPUT_TEXT, OUTPUT_PPM, @@ -402,6 +403,12 @@ return false; } options->scale_factor_as_string = cur_arg.substr(8); + } else if (cur_arg == "--show-pageinfo") { + if (options->output_format != OUTPUT_NONE) { + fprintf(stderr, "Duplicate or conflicting --show-pageinfo argument\n"); + return false; + } + options->output_format = OUTPUT_PAGEINFO; } else if (cur_arg == "--show-structure") { if (options->output_format != OUTPUT_NONE) { fprintf(stderr, "Duplicate or conflicting --show-structure argument\n"); @@ -534,6 +541,11 @@ SendPageEvents(form, page, events); if (options.save_images) WriteImages(page, name.c_str(), page_index); + + if (options.output_format == OUTPUT_PAGEINFO) { + DumpPageInfo(page, page_index); + return true; + } if (options.output_format == OUTPUT_STRUCTURE) { DumpPageStructure(page, page_index); return true; @@ -814,6 +826,7 @@ "Usage: pdfium_test [OPTION] [FILE]...\n" " --show-config - print build options and exit\n" " --show-metadata - print the file metadata\n" + " --show-pageinfo - print information about pages\n" " --show-structure - print the structure elements from the document\n" " --send-events - send input described by .evt file\n" " --render-oneshot - render image without using progressive renderer\n"
diff --git a/samples/pdfium_test_dump_helper.cc b/samples/pdfium_test_dump_helper.cc index 2b422a9..93a184a 100644 --- a/samples/pdfium_test_dump_helper.cc +++ b/samples/pdfium_test_dump_helper.cc
@@ -7,13 +7,18 @@ #include <string.h> #include <algorithm> +#include <functional> #include <memory> #include <string> #include <utility> #include "public/cpp/fpdf_scopers.h" +#include "public/fpdf_transformpage.h" #include "testing/test_support.h" +using GetBoxInfoFunc = + std::function<bool(FPDF_PAGE, float*, float*, float*, float*)>; + namespace { std::wstring ConvertToWString(const unsigned short* buf, @@ -24,6 +29,20 @@ return result; } +void DumpBoxInfo(GetBoxInfoFunc func, + const char* box_type, + FPDF_PAGE page, + int page_idx) { + FS_RECTF rect; + bool ret = func(page, &rect.left, &rect.bottom, &rect.right, &rect.top); + if (!ret) { + printf("Page %d: No %s.\n", page_idx, box_type); + return; + } + printf("Page %d: %s: %0.2f %0.2f %0.2f %0.2f\n", page_idx, box_type, + rect.left, rect.bottom, rect.right, rect.top); +} + } // namespace void DumpChildStructure(FPDF_STRUCTELEMENT child, int indent) { @@ -54,7 +73,15 @@ } } -void DumpPageStructure(FPDF_PAGE page, const int page_idx) { +void DumpPageInfo(FPDF_PAGE page, int page_idx) { + DumpBoxInfo(&FPDFPage_GetMediaBox, "MediaBox", page, page_idx); + DumpBoxInfo(&FPDFPage_GetCropBox, "CropBox", page, page_idx); + DumpBoxInfo(&FPDFPage_GetBleedBox, "BleedBox", page, page_idx); + DumpBoxInfo(&FPDFPage_GetTrimBox, "TrimBox", page, page_idx); + DumpBoxInfo(&FPDFPage_GetArtBox, "ArtBox", page, page_idx); +} + +void DumpPageStructure(FPDF_PAGE page, int page_idx) { ScopedFPDFStructTree tree(FPDF_StructTree_GetForPage(page)); if (!tree) { fprintf(stderr, "Failed to load struct tree for page %d\n", page_idx);
diff --git a/samples/pdfium_test_dump_helper.h b/samples/pdfium_test_dump_helper.h index e2276f7..17cbd8f 100644 --- a/samples/pdfium_test_dump_helper.h +++ b/samples/pdfium_test_dump_helper.h
@@ -8,7 +8,8 @@ #include "public/fpdfview.h" void DumpChildStructure(FPDF_STRUCTELEMENT child, int indent); -void DumpPageStructure(FPDF_PAGE page, const int page_idx); +void DumpPageInfo(FPDF_PAGE page, int page_idx); +void DumpPageStructure(FPDF_PAGE page, int page_idx); void DumpMetaData(FPDF_DOCUMENT doc); #endif // SAMPLES_PDFIUM_TEST_DUMP_HELPER_H_