mirror of
https://github.com/johnwhitington/cpdf-source.git
synced 2025-02-16 11:50:54 +01:00
-draft-remove-only finished
This commit is contained in:
parent
ff846fc84d
commit
c92a2089c2
21
cpdf.ml
21
cpdf.ml
@ -3899,8 +3899,8 @@ let rec remove_images_stream onlyremove boxes pdf resources prev = function
|
||||
| [] -> rev prev
|
||||
| (Pdfops.Op_Do name) as h::t ->
|
||||
if xobject_isimage pdf resources name && (match onlyremove with None -> true | Some x -> x = name)
|
||||
then remove_images_stream onlyremove boxes pdf resources (substitute boxes @ prev) t
|
||||
else remove_images_stream onlyremove boxes pdf resources (h::prev) t
|
||||
then remove_images_stream onlyremove boxes pdf resources (substitute boxes @ prev) t
|
||||
else remove_images_stream onlyremove boxes pdf resources (h::prev) t
|
||||
| Pdfops.InlineImage _ as h::t ->
|
||||
if onlyremove <> None
|
||||
then remove_images_stream onlyremove boxes pdf resources (h::prev) t
|
||||
@ -3947,12 +3947,16 @@ and remove_images_page onlyremove boxes pdf page =
|
||||
let isform pdf xobj =
|
||||
match Pdf.lookup_direct pdf "/Subtype" xobj with Some (Pdf.Name "/Form") -> true | _ -> false
|
||||
in
|
||||
let isimage pdf xobj =
|
||||
match Pdf.lookup_direct pdf "/Subtype" xobj with Some (Pdf.Name "/Image") -> true | _ -> false
|
||||
in
|
||||
(* Remove image xobjects and look into form ones *)
|
||||
let form_xobjects =
|
||||
let form_xobjects, image_xobjects =
|
||||
match Pdf.lookup_direct pdf "/XObject" page.Pdfpage.resources with
|
||||
| Some (Pdf.Dictionary elts) ->
|
||||
keep (function (_, p) -> isform pdf p) elts
|
||||
| _ -> []
|
||||
keep (function (_, p) -> isform pdf p) elts,
|
||||
keep (function (_, p) -> isimage pdf p) elts
|
||||
| _ -> [], []
|
||||
in
|
||||
let resources', pdf =
|
||||
let names, pointers = split form_xobjects in
|
||||
@ -3973,8 +3977,13 @@ and remove_images_page onlyremove boxes pdf page =
|
||||
let objnum = Pdf.addobj pdf xobj in
|
||||
nums =| objnum)
|
||||
form_xobjects';
|
||||
let image_xobjects' =
|
||||
match onlyremove with
|
||||
None -> image_xobjects
|
||||
| Some n -> option_map (function (n', _) as xobj -> if n = n' then None else Some xobj) image_xobjects
|
||||
in
|
||||
let newdict =
|
||||
Pdf.Dictionary (combine names (map (fun x -> Pdf.Indirect x) (rev !nums)))
|
||||
Pdf.Dictionary (image_xobjects' @ combine names (map (fun x -> Pdf.Indirect x) (rev !nums)))
|
||||
in
|
||||
Pdf.add_dict_entry page.Pdfpage.resources "/XObject" newdict, pdf
|
||||
in
|
||||
|
Loading…
x
Reference in New Issue
Block a user