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_
