From 803a72ba9de9d3f9dfb755f3f4043a3bb3daa963 Mon Sep 17 00:00:00 2001 From: John Whitington Date: Tue, 11 Mar 2025 16:48:51 +0000 Subject: [PATCH] Allow artifacting in combine --- cpdfcommand.ml | 2 +- cpdfpage.ml | 5 +++-- cpdfpage.mli | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/cpdfcommand.ml b/cpdfcommand.ml index 8c847e8..da8acc2 100644 --- a/cpdfcommand.ml +++ b/cpdfcommand.ml @@ -4576,7 +4576,7 @@ let go () = args.fast (prerotate (parse_pagespec underpdf "all") underpdf) (prerotate (parse_pagespec overpdf "all") overpdf) - false false true) + false false) | Some Encrypt -> let pdf = get_single_pdf args.op false in let pdf = Cpdfsqueeze.recompress_pdf pdf diff --git a/cpdfpage.ml b/cpdfpage.ml index 43d69e2..ff11f18 100644 --- a/cpdfpage.ml +++ b/cpdfpage.ml @@ -915,7 +915,8 @@ let equalize_pages under over = else under, over -let combine_pages ~process_struct_tree fast under over scaletofit swap equalize = +let combine_pages ~process_struct_tree fast under over scaletofit swap = + let over, under = if swap then under, over else over, under in let over = if process_struct_tree then mark_all_as_artifact (remove_struct_tree over) else over in let debug_combine_pages = false in let debug_pdf pdf n = @@ -924,7 +925,7 @@ let combine_pages ~process_struct_tree fast under over scaletofit swap equalize in Pdfpage.add_prefix over (Pdfpage.shortest_unused_prefix under); let marks_under, marks_over = Pdfmarks.read_bookmarks under, Pdfmarks.read_bookmarks over in - let under, over = if equalize then equalize_pages under over else under, over in + let under, over = equalize_pages under over in let under_length, over_length = Pdfpage.endpage under, Pdfpage.endpage over in if under_length <> over_length then raise (Pdf.PDFError "combine_pages: not of equal length") diff --git a/cpdfpage.mli b/cpdfpage.mli index ac4a335..438893c 100644 --- a/cpdfpage.mli +++ b/cpdfpage.mli @@ -91,7 +91,7 @@ the same number of pages as the shorter file. If [scaletofit] is true, the [over] file will be scaled to fit. If [swap] is true, [over] and [under] are swapped. If [fast] is true, the PDFs are assumed to be well-formed and no fixes are done. *) -val combine_pages : process_struct_tree:bool -> bool -> Pdf.t -> Pdf.t -> bool -> bool -> bool -> Pdf.t +val combine_pages : process_struct_tree:bool -> bool -> Pdf.t -> Pdf.t -> bool -> bool -> Pdf.t (** [stamp relative_to_cropbox position topline midline fast scale_to_fit isover range over pdf] stamps the first page of [over] over each page of the PDF. The arguments have the same meaning as in