Added new -pad-with functionality
This commit is contained in:
parent
5303068dd6
commit
1d55dffab7
24
cpdf.ml
24
cpdf.ml
|
@ -2063,10 +2063,26 @@ let rec insert_after_many_changes isbefore padsize offset range = function
|
||||||
let print_changes =
|
let print_changes =
|
||||||
List.iter (fun (f, t) -> Printf.printf "%i --> %i\n" f t)
|
List.iter (fun (f, t) -> Printf.printf "%i --> %i\n" f t)
|
||||||
|
|
||||||
let pad_with_pdf range pdf isbefore padfile =
|
let pad_with_pdf (range : int list) (pdf : Pdf.t) (isbefore : bool) (padfile : Pdf.t) =
|
||||||
(* 1. Split the input pdf around the range, taking account of isbefore *)
|
let range = List.sort compare (setify range) in
|
||||||
(* 2. Build a merge after "a p b p c p" or before "p a p b p c" *)
|
let merged =
|
||||||
pdf
|
Pdfmerge.merge_pdfs
|
||||||
|
false false ["a"; "b"] [pdf; padfile] [ilist 1 (Pdfpage.endpage pdf); ilist 1 (Pdfpage.endpage padfile)]
|
||||||
|
in
|
||||||
|
let original_pages, padpages =
|
||||||
|
cleave (Pdfpage.pages_of_pagetree merged) (Pdfpage.endpage pdf)
|
||||||
|
in
|
||||||
|
let newpages =
|
||||||
|
List.map
|
||||||
|
(fun (pagenum, page) ->
|
||||||
|
if mem pagenum range then
|
||||||
|
(if isbefore then padpages @ [page] else [page] @ padpages)
|
||||||
|
else
|
||||||
|
[page])
|
||||||
|
(combine (indx original_pages) original_pages)
|
||||||
|
in
|
||||||
|
(* FIXME Provide ~changes here? *)
|
||||||
|
Pdfpage.change_pages false merged (flatten newpages)
|
||||||
|
|
||||||
let pad padwith range pdf isbefore =
|
let pad padwith range pdf isbefore =
|
||||||
match padwith with
|
match padwith with
|
||||||
|
|
|
@ -3787,7 +3787,12 @@ let go () =
|
||||||
| [] -> []
|
| [] -> []
|
||||||
| l -> if last l = Pdfpage.endpage pdf then all_but_last l else l
|
| l -> if last l = Pdfpage.endpage pdf then all_but_last l else l
|
||||||
in
|
in
|
||||||
write_pdf false (Cpdf.padafter range pdf)
|
let padwith =
|
||||||
|
match args.padwith with
|
||||||
|
None -> None
|
||||||
|
| Some filename -> Some (pdfread_pdf_of_file None None filename)
|
||||||
|
in
|
||||||
|
write_pdf false (Cpdf.padafter ?padwith range pdf)
|
||||||
| Some (PadMultiple n) ->
|
| Some (PadMultiple n) ->
|
||||||
let pdf = get_single_pdf args.op false in
|
let pdf = get_single_pdf args.op false in
|
||||||
write_pdf false (Cpdf.padmultiple n pdf)
|
write_pdf false (Cpdf.padmultiple n pdf)
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
%FIXME: Document %PageDiv2
|
%FIXME: Document %PageDiv2
|
||||||
%FIXME: Document new bookmark format
|
%FIXME: Document new bookmark format
|
||||||
%FIXME: Fix docs on -fit-window and friends
|
%FIXME: Fix docs on -fit-window and friends
|
||||||
|
%FIXME: Document new -pad-with (for -pad-before, -pad-after, -pad-every)
|
||||||
\documentclass{book}
|
\documentclass{book}
|
||||||
\usepackage{palatino}
|
\usepackage{palatino}
|
||||||
\usepackage{microtype}
|
\usepackage{microtype}
|
||||||
|
|
Loading…
Reference in New Issue