mirror of
https://github.com/johnwhitington/cpdf-source.git
synced 2025-06-05 22:09:39 +02:00
Extend -draft to remove only given images with -draft-remove-only
This commit is contained in:
28
cpdf.ml
28
cpdf.ml
@@ -3895,18 +3895,20 @@ let substitute boxes =
|
|||||||
[]
|
[]
|
||||||
|
|
||||||
(* Remove references to images from a graphics stream. *)
|
(* Remove references to images from a graphics stream. *)
|
||||||
let rec remove_images_stream boxes pdf resources prev = function
|
let rec remove_images_stream onlyremove boxes pdf resources prev = function
|
||||||
| [] -> rev prev
|
| [] -> rev prev
|
||||||
| (Pdfops.Op_Do name) as h::t ->
|
| (Pdfops.Op_Do name) as h::t ->
|
||||||
if xobject_isimage pdf resources name
|
if xobject_isimage pdf resources name && (match onlyremove with None -> true | Some x -> x = name)
|
||||||
then remove_images_stream boxes pdf resources (substitute boxes @ prev) t
|
then remove_images_stream onlyremove boxes pdf resources (substitute boxes @ prev) t
|
||||||
else remove_images_stream boxes pdf resources (h::prev) t
|
else remove_images_stream onlyremove boxes pdf resources (h::prev) t
|
||||||
| Pdfops.InlineImage _::t ->
|
| Pdfops.InlineImage _ as h::t ->
|
||||||
remove_images_stream boxes pdf resources (substitute boxes @ prev) t
|
if onlyremove <> None
|
||||||
|
then remove_images_stream onlyremove boxes pdf resources (h::prev) t
|
||||||
|
else remove_images_stream onlyremove boxes pdf resources (substitute boxes @ prev) t
|
||||||
| h::t ->
|
| h::t ->
|
||||||
remove_images_stream boxes pdf resources (h::prev) t
|
remove_images_stream onlyremove boxes pdf resources (h::prev) t
|
||||||
|
|
||||||
let rec process_form_xobject boxes pdf form =
|
let rec process_form_xobject onlyremove boxes pdf form =
|
||||||
let form = Pdf.direct pdf form in
|
let form = Pdf.direct pdf form in
|
||||||
let page =
|
let page =
|
||||||
{Pdfpage.content = [form];
|
{Pdfpage.content = [form];
|
||||||
@@ -3920,7 +3922,7 @@ let rec process_form_xobject boxes pdf form =
|
|||||||
Pdfpage.rest = Pdf.Dictionary []}
|
Pdfpage.rest = Pdf.Dictionary []}
|
||||||
in
|
in
|
||||||
let page', pdf =
|
let page', pdf =
|
||||||
remove_images_page boxes pdf page
|
remove_images_page onlyremove boxes pdf page
|
||||||
in
|
in
|
||||||
let form' =
|
let form' =
|
||||||
match form with
|
match form with
|
||||||
@@ -3941,7 +3943,7 @@ let rec process_form_xobject boxes pdf form =
|
|||||||
form', pdf
|
form', pdf
|
||||||
|
|
||||||
(* Remove images from a page. *)
|
(* Remove images from a page. *)
|
||||||
and remove_images_page boxes pdf page =
|
and remove_images_page onlyremove boxes pdf page =
|
||||||
let isform pdf xobj =
|
let isform pdf xobj =
|
||||||
match Pdf.lookup_direct pdf "/Subtype" xobj with Some (Pdf.Name "/Form") -> true | _ -> false
|
match Pdf.lookup_direct pdf "/Subtype" xobj with Some (Pdf.Name "/Form") -> true | _ -> false
|
||||||
in
|
in
|
||||||
@@ -3959,7 +3961,7 @@ and remove_images_page boxes pdf page =
|
|||||||
in let outputs = ref [] in
|
in let outputs = ref [] in
|
||||||
iter
|
iter
|
||||||
(fun p ->
|
(fun p ->
|
||||||
let p', pdf' = process_form_xobject boxes !pdf p in
|
let p', pdf' = process_form_xobject onlyremove boxes !pdf p in
|
||||||
pdf := pdf';
|
pdf := pdf';
|
||||||
outputs =| p')
|
outputs =| p')
|
||||||
pointers;
|
pointers;
|
||||||
@@ -3977,7 +3979,7 @@ and remove_images_page boxes pdf page =
|
|||||||
Pdf.add_dict_entry page.Pdfpage.resources "/XObject" newdict, pdf
|
Pdf.add_dict_entry page.Pdfpage.resources "/XObject" newdict, pdf
|
||||||
in
|
in
|
||||||
let content' =
|
let content' =
|
||||||
remove_images_stream boxes pdf page.Pdfpage.resources []
|
remove_images_stream onlyremove boxes pdf page.Pdfpage.resources []
|
||||||
(Pdfops.parse_operators pdf page.Pdfpage.resources page.Pdfpage.content)
|
(Pdfops.parse_operators pdf page.Pdfpage.resources page.Pdfpage.content)
|
||||||
in
|
in
|
||||||
{page with
|
{page with
|
||||||
@@ -3997,7 +3999,7 @@ let draft onlyremove boxes range pdf =
|
|||||||
(fun p pagenum ->
|
(fun p pagenum ->
|
||||||
let p', pdf' =
|
let p', pdf' =
|
||||||
if mem pagenum range
|
if mem pagenum range
|
||||||
then remove_images_page boxes !pdf p
|
then remove_images_page onlyremove boxes !pdf p
|
||||||
else p, !pdf
|
else p, !pdf
|
||||||
in
|
in
|
||||||
pdf := pdf';
|
pdf := pdf';
|
||||||
|
@@ -25,6 +25,7 @@
|
|||||||
%FIXME: Explain in key places that you probably want UTF8 a lot
|
%FIXME: Explain in key places that you probably want UTF8 a lot
|
||||||
%FIXME: Document new -create-pdf functionality
|
%FIXME: Document new -create-pdf functionality
|
||||||
%FIXME: Explain fast more / better and list things it works on
|
%FIXME: Explain fast more / better and list things it works on
|
||||||
|
%FIXME: Document new -draft-remove-only functionality for deleting images
|
||||||
|
|
||||||
\documentclass{book}
|
\documentclass{book}
|
||||||
\usepackage{palatino}
|
\usepackage{palatino}
|
||||||
|
Reference in New Issue
Block a user