Support for landscape / portrait page range selections

This commit is contained in:
John Whitington 2014-09-16 14:31:14 +01:00
parent 4ce9606bc6
commit 715bef3acc
1 changed files with 14 additions and 6 deletions

20
cpdf.ml
View File

@ -237,17 +237,25 @@ let is_dimension comparison {Pdfpage.mediabox = box} =
let select_dimensions comparison pdf candidates = let select_dimensions comparison pdf candidates =
let pages = Pdfpage.pages_of_pagetree pdf in let pages = Pdfpage.pages_of_pagetree pdf in
option_map2 let pagenums, kept_pages =
(fun pagenum page -> split
if is_dimension comparison page then Some pagenum else None) (option_map
(keep (mem' candidates) (indx pages)) (fun (index, page) ->
pages if mem index candidates then Some (index, page) else None)
(combine (indx pages) pages))
in
option_map2
(fun pagenum page ->
if is_dimension comparison page then Some pagenum else None)
pagenums
kept_pages
let select_portrait = select_dimensions ( < ) let select_portrait = select_dimensions ( < )
let select_landscape = select_dimensions ( > ) let select_landscape = select_dimensions ( > )
let rec mk_numbers pdf endpage = function let rec mk_numbers pdf endpage lexemes =
match lexemes with
| [Pdfgenlex.LexInt n] -> [n] | [Pdfgenlex.LexInt n] -> [n]
| [Pdfgenlex.LexName "end"] -> [endpage] | [Pdfgenlex.LexName "end"] -> [endpage]
| [Pdfgenlex.LexInt n; Pdfgenlex.LexName "-"; Pdfgenlex.LexInt n'] -> | [Pdfgenlex.LexInt n; Pdfgenlex.LexName "-"; Pdfgenlex.LexInt n'] ->