From 27e9b12487f668894224c3df7fb4574222216781 Mon Sep 17 00:00:00 2001 From: John Whitington Date: Thu, 31 Oct 2024 14:48:56 +0000 Subject: [PATCH] -center-to-fit done --- cpdfcommand.ml | 4 ++-- cpdfpage.ml | 17 +++++++++-------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/cpdfcommand.ml b/cpdfcommand.ml index 8310327..afe7d2a 100644 --- a/cpdfcommand.ml +++ b/cpdfcommand.ml @@ -1219,7 +1219,7 @@ let setstretch s = setop Stretch (); args.coord <- s -let setcenter s = +let setcentertofit s = setop CenterToFit (); args.coord <- s @@ -2102,7 +2102,7 @@ let specs = Arg.String setstretch, " -stretch \"x y\" scales without preserving aspect ratio"); ("-center-to-fit", - Arg.String setcenter, + Arg.String setcentertofit, " -center-to-fit \"x y\" centers pages on page size (x, y)"); ("-scale-contents", Arg.Float setscalecontents, diff --git a/cpdfpage.ml b/cpdfpage.ml index d49d0f9..f73a418 100644 --- a/cpdfpage.ml +++ b/cpdfpage.ml @@ -573,12 +573,6 @@ let crop_pdf ?(box="/CropBox") xywhlist pdf range = (* Centre page content (crop box) on given page size, with no scaling. *) let center_to_fit sxsylist pdf range = - let list4 = map (fun (x, y) -> (0., 0., x, y)) sxsylist in - let pdf = set_mediabox list4 pdf range in - let pdf = crop_pdf list4 pdf range in - let pdf = remove_bleed_pdf pdf range in - let pdf = remove_art_pdf pdf range in - let pdf = remove_bleed_pdf pdf range in let dxdylist = let tx, ty = hd sxsylist in map @@ -590,10 +584,17 @@ let center_to_fit sxsylist pdf range = | Some r -> r | None -> page.Pdfpage.mediabox) in - (tx -. (maxx -. minx)) /. 2., (ty -. (maxy -. miny)) /. 2.) + (~-.((tx -. (maxx -. minx)) /. 2.), + ~-.((ty -. (maxy -. miny)) /. 2.))) (Pdfpage.pages_of_pagetree pdf) in - shift_boxes dxdylist pdf range + let list4 = map (fun (x, y) -> (0., 0., x, y)) sxsylist in + let pdf = set_mediabox list4 pdf range in + let pdf = crop_pdf list4 pdf range in + let pdf = remove_bleed_pdf pdf range in + let pdf = remove_art_pdf pdf range in + let pdf = remove_bleed_pdf pdf range in + shift_boxes dxdylist pdf range (* Scale to fit page of size x * y *) let scale_to_fit_pdf ?(fast=false) position input_scale xylist op pdf range =