Implement -list-images-used-json / -image-resolution-json

This commit is contained in:
John Whitington 2023-11-09 18:36:41 +00:00
parent 5f69436d73
commit 18a222a49f
1 changed files with 13 additions and 8 deletions

View File

@ -2479,10 +2479,10 @@ and specs =
("-list-images-json", ("-list-images-json",
Arg.Unit setlistimagesjson, Arg.Unit setlistimagesjson,
" List images in JSON format"); " List images in JSON format");
("-list-image-use", ("-list-images-used",
Arg.Unit (fun () -> setop (ImageResolution max_float) ()), Arg.Unit (fun () -> setop (ImageResolution max_float) ()),
" List images at point of use"); " List images at point of use");
("-list-image-use-json", ("-list-images-used-json",
Arg.Unit (fun () -> args.format_json <- true; setop (ImageResolution max_float) ()), Arg.Unit (fun () -> args.format_json <- true; setop (ImageResolution max_float) ()),
" List images at point of use in JSON format"); " List images at point of use in JSON format");
("-image-resolution", ("-image-resolution",
@ -4162,10 +4162,15 @@ let go () =
let range = parse_pagespec_allow_empty pdf (get_pagespec ()) in let range = parse_pagespec_allow_empty pdf (get_pagespec ()) in
Cpdfimage.extract_images args.path_to_p2p args.path_to_im args.encoding args.dedup args.dedup_per_page pdf range output_spec Cpdfimage.extract_images args.path_to_p2p args.path_to_im args.encoding args.dedup args.dedup_per_page pdf range output_spec
| Some (ImageResolution f) -> | Some (ImageResolution f) ->
(* FIXME add JSON format option *)
let pdf = get_single_pdf args.op true in let pdf = get_single_pdf args.op true in
let range = parse_pagespec_allow_empty pdf (get_pagespec ()) in let range = parse_pagespec_allow_empty pdf (get_pagespec ()) in
let images = Cpdfimage.image_resolution pdf range f in let images = Cpdfimage.image_resolution pdf range f in
if args.format_json then
flprint
(Cpdfyojson.Safe.pretty_to_string
(`List (map (fun (pagenum, xobject, w, h, wdpi, hdpi) ->
`Assoc [("Page", `Int pagenum); ("XObject", `String xobject); ("W", `Int w); ("H", `Int h); ("Xdpi", `Float wdpi); ("Ydpi", `Float hdpi)]) images)))
else
iter iter
(function (pagenum, xobject, w, h, wdpi, hdpi) -> (function (pagenum, xobject, w, h, wdpi, hdpi) ->
if wdpi < f || hdpi < f then if wdpi < f || hdpi < f then