mirror of
				https://github.com/johnwhitington/cpdf-source.git
				synced 2025-06-05 22:09:39 +02:00 
			
		
		
		
	Added -remove-dict-entry
This commit is contained in:
		| @@ -155,6 +155,7 @@ type op = | |||||||
|   | RemovePageLabels |   | RemovePageLabels | ||||||
|   | PrintPageLabels |   | PrintPageLabels | ||||||
|   | Revisions |   | Revisions | ||||||
|  |   | RemoveDictEntry of string | ||||||
|  |  | ||||||
| let string_of_op = function | let string_of_op = function | ||||||
|   | CopyFont _ -> "CopyFont" |   | CopyFont _ -> "CopyFont" | ||||||
| @@ -256,6 +257,7 @@ let string_of_op = function | |||||||
|   | RemovePageLabels -> "RemovePageLabels" |   | RemovePageLabels -> "RemovePageLabels" | ||||||
|   | PrintPageLabels -> "PrintPageLabels" |   | PrintPageLabels -> "PrintPageLabels" | ||||||
|   | Revisions -> "Revisions" |   | Revisions -> "Revisions" | ||||||
|  |   | RemoveDictEntry _ -> "RemoveDictEntry" | ||||||
|  |  | ||||||
| (* Inputs: filename, pagespec. *) | (* Inputs: filename, pagespec. *) | ||||||
| type input_kind = | type input_kind = | ||||||
| @@ -1328,6 +1330,9 @@ let setcpdflin s = | |||||||
| let setrecrypt () = | let setrecrypt () = | ||||||
|   args.recrypt <- true |   args.recrypt <- true | ||||||
|  |  | ||||||
|  | let setremovedictentry s = | ||||||
|  |   args.op <- Some (RemoveDictEntry s) | ||||||
|  |  | ||||||
| (* Parse a control file, make an argv, and then make Arg parse it. *) | (* Parse a control file, make an argv, and then make Arg parse it. *) | ||||||
| let rec make_control_argv_and_parse filename = | let rec make_control_argv_and_parse filename = | ||||||
|   control_args := !control_args @ parse_control_file filename |   control_args := !control_args @ parse_control_file filename | ||||||
| @@ -1828,6 +1833,9 @@ and specs = | |||||||
|    ("-label-startval", |    ("-label-startval", | ||||||
|       Arg.Int setlabelstartval, |       Arg.Int setlabelstartval, | ||||||
|       " Set label start value (default 1)"); |       " Set label start value (default 1)"); | ||||||
|  |    ("-remove-dict-entry", | ||||||
|  |     Arg.String setremovedictentry, | ||||||
|  |     " Remove an entry from all dictionaries"); | ||||||
|    (*These items are undocumented *) |    (*These items are undocumented *) | ||||||
|    ("-extract-fontfile", Arg.Unit (setop ExtractFontFile), ""); |    ("-extract-fontfile", Arg.Unit (setop ExtractFontFile), ""); | ||||||
|    ("-extract-images", Arg.Unit setextractimages, ""); |    ("-extract-images", Arg.Unit setextractimages, ""); | ||||||
| @@ -3581,6 +3589,17 @@ let go () = | |||||||
|         iter |         iter | ||||||
|           print_string |           print_string | ||||||
|           (map Pdfpagelabels.string_of_pagelabel (Pdfpagelabels.read pdf)) |           (map Pdfpagelabels.string_of_pagelabel (Pdfpagelabels.read pdf)) | ||||||
|  |   | Some (RemoveDictEntry key) -> | ||||||
|  |       let pdf = get_single_pdf args.op true in | ||||||
|  |         (* 1. Process all objects *) | ||||||
|  |         Pdf.objselfmap | ||||||
|  |           (function | ||||||
|  |              (Pdf.Dictionary _ as d) | (Pdf.Stream _ as d) -> | ||||||
|  |                Pdf.remove_dict_entry d key | ||||||
|  |            | x -> x) | ||||||
|  |           pdf; | ||||||
|  |         (* FIXME: We might like to do the trailer dictionary too *) | ||||||
|  |         write_pdf false pdf | ||||||
|  |  | ||||||
| let parse_argv () = | let parse_argv () = | ||||||
|   Arg.parse_argv ~current:(ref 0) |   Arg.parse_argv ~current:(ref 0) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user