From 3d93bbe5aa12c783b2a12267e2e0d558e575cb62 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Sat, 15 Aug 2026 21:08:08 +0300 Subject: [PATCH] improve flatten --- lib/pdfium.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/pdfium.rb b/lib/pdfium.rb index 7e993464..8d3802b1 100644 --- a/lib/pdfium.rb +++ b/lib/pdfium.rb @@ -1763,6 +1763,20 @@ class Pdfium def flatten(flag = Pdfium::FLAT_NORMALDISPLAY) ensure_not_closed! + load_page_view + + l_ptr, b_ptr, r_ptr, t_ptr = Array.new(4) { FFI::MemoryPointer.new(:float) } + + left, bottom, right, top = box.map(&:to_f) + + if Pdfium.FPDFPage_GetMediaBox(page_ptr, l_ptr, b_ptr, r_ptr, t_ptr).zero? + Pdfium.FPDFPage_SetMediaBox(page_ptr, left, bottom, right, top) + end + + if Pdfium.FPDFPage_GetCropBox(page_ptr, l_ptr, b_ptr, r_ptr, t_ptr).zero? + Pdfium.FPDFPage_SetCropBox(page_ptr, left, bottom, right, top) + end + result = Pdfium.FPDFPage_Flatten(page_ptr, flag) if result == Pdfium::FLATTEN_FAIL