From e821b1722c2b57d927e9e782ee3b2c5bc327cbf2 Mon Sep 17 00:00:00 2001 From: John Whitington Date: Wed, 15 Dec 2021 13:01:51 +0000 Subject: [PATCH] more --- Changes | 3 ++- cpdfcommand.ml | 25 ++++++++++++++++++++++--- cpdfmanual.tex | 1 + 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/Changes b/Changes index 3c95c01..71e4748 100644 --- a/Changes +++ b/Changes @@ -5,6 +5,7 @@ New features: o Can read as well as write PDFs in JSON format with -j o New operation -typeset typesets a text file as a PDF o New operation -table-of-contents makes table of contents from bookmarks +o New operations -impose and -impose-xy for document imposition o New operation -print-font-table gives (charcode, unicode, glyph name) triples o New -print-dict-entry operation prints values for a given key o New -replace-dict-entry function to search & replace e.g URLs @@ -13,7 +14,6 @@ o Prepend NOT to a page range to invert it o Output annotations in JSON form with -list-annotations-json o Output bookmarks in JSON format with -list-bookmarks-json o Load bookmarks in JSON format with -add-bookmarks-json -o New operations -impose and -impose-xy for document imposition o New option -collate to collate pages when merging o Text added in existing fonts is now encoding-aware (plus new raw mode) o Option -debug-force now properly documented as -decrypt-force @@ -26,6 +26,7 @@ o When adding text or graphics, may choose CYMK or Grey instead of RGB o The -list-fonts operation now obeys the range o Can now search for a font by real name with -font o Basic merging of AcroForms when merging documents +o Add -idir-only-pdfs to restrict -idir to just files ending in .pdf Internal changes: diff --git a/cpdfcommand.ml b/cpdfcommand.ml index 9f2b1e9..0fcaf0f 100644 --- a/cpdfcommand.ml +++ b/cpdfcommand.ml @@ -477,7 +477,8 @@ type args = mutable replace_dict_entry_value : Pdf.pdfobject; mutable dict_entry_search : Pdf.pdfobject option; mutable toc_title : string; - mutable toc_bookmark : bool} + mutable toc_bookmark : bool; + mutable idir_only_pdfs : bool} let args = {op = None; @@ -595,7 +596,8 @@ let args = replace_dict_entry_value = Pdf.Null; dict_entry_search = None; toc_title = "Table of Contents"; - toc_bookmark = true} + toc_bookmark = true; + idir_only_pdfs = false} let reset_arguments () = args.op <- None; @@ -698,7 +700,8 @@ let reset_arguments () = args.replace_dict_entry_value <- Pdf.Null; args.dict_entry_search <- None; args.toc_title <- "Table of Contents"; - args.toc_bookmark <- true + args.toc_bookmark <- true; + args.idir_only_pdfs <- false (* Do not reset original_filename or cpdflin or was_encrypted or * was_decrypted_with_owner or recrypt or producer or creator or path_to_* or * gs_malformed or gs_quiet, since we want these to work across ANDs. Or @@ -1231,6 +1234,16 @@ let set_json_input s = let set_input_dir s = let names = sort compare (leafnames_of_dir s) in + let names = + if args.idir_only_pdfs then + option_map + (fun x -> + if String.length x > 4 && String.lowercase_ascii (String.sub x (String.length x - 4) 4) = ".pdf" + then Some x else None) + names + else + names + in args.inputs <- (rev (map @@ -1644,6 +1657,9 @@ let settableofcontentstitle s = let settocnobookmark () = args.toc_bookmark <- false +let setidironlypdfs () = + args.idir_only_pdfs <- true + let whingemalformed () = prerr_string "Command line must be of exactly the form\ncpdf -gs -gs-malformed-force -o \n"; exit 1 @@ -1665,6 +1681,9 @@ and specs = ("-idir", Arg.String set_input_dir, " Add a directory of files"); + ("-idir-only-pdfs", + Arg.Unit setidironlypdfs, + " Have -idir ignore files not ending in .pdf"); ("-pw", Arg.String setdashpassword, " Supply a password explicitly -pw="); diff --git a/cpdfmanual.tex b/cpdfmanual.tex index 9a60e33..f2a5ff5 100644 --- a/cpdfmanual.tex +++ b/cpdfmanual.tex @@ -11,6 +11,7 @@ %Document new colourspaces for -add-text -add-rectangle %Document -table-of-contents, -table-of-contents-title (inc. newlines), -font. Mention -upright. %Document -typeset +%Document -idir-only-pdfs must precede -idir \documentclass{book} % Edit here to produce cpdfmanual.pdf, cpdflibmanual.pdf, pycpdfmanual.pdf etc. \usepackage{comment}\excludecomment{cpdflib}\excludecomment{pycpdflib}