Adds -shift-boxes
This commit is contained in:
parent
415c172354
commit
15842dbd36
1
Changes
1
Changes
|
@ -20,6 +20,7 @@ o Build PDF files from JBIG2 streams, including globals
|
||||||
o Reprocess images within PDFs to further compress them
|
o Reprocess images within PDFs to further compress them
|
||||||
o Extract streams to disk
|
o Extract streams to disk
|
||||||
o Explore PDFs by printing objects
|
o Explore PDFs by printing objects
|
||||||
|
o Shift page boxes with -shift-boxes
|
||||||
|
|
||||||
Extended features:
|
Extended features:
|
||||||
|
|
||||||
|
|
|
@ -118,6 +118,7 @@ type op =
|
||||||
| PadMultiple of int
|
| PadMultiple of int
|
||||||
| PadMultipleBefore of int
|
| PadMultipleBefore of int
|
||||||
| Shift
|
| Shift
|
||||||
|
| ShiftBoxes
|
||||||
| Scale
|
| Scale
|
||||||
| ScaleToFit
|
| ScaleToFit
|
||||||
| ScaleContents of float
|
| ScaleContents of float
|
||||||
|
@ -260,6 +261,7 @@ let string_of_op = function
|
||||||
| PadMultiple _ -> "PadMultiple"
|
| PadMultiple _ -> "PadMultiple"
|
||||||
| PadMultipleBefore _ -> "PadMultipleBefore"
|
| PadMultipleBefore _ -> "PadMultipleBefore"
|
||||||
| Shift -> "Shift"
|
| Shift -> "Shift"
|
||||||
|
| ShiftBoxes -> "ShiftBoxes"
|
||||||
| Scale -> "Scale"
|
| Scale -> "Scale"
|
||||||
| ScaleToFit -> "ScaleToFit"
|
| ScaleToFit -> "ScaleToFit"
|
||||||
| ScaleContents _ -> "ScaleContents"
|
| ScaleContents _ -> "ScaleContents"
|
||||||
|
@ -907,7 +909,7 @@ let banned banlist = function
|
||||||
| Rotateby _ | Upright | VFlip | HFlip | Impose _ | Chop _ ->
|
| Rotateby _ | Upright | VFlip | HFlip | Impose _ | Chop _ ->
|
||||||
mem Pdfcrypt.NoAssemble banlist
|
mem Pdfcrypt.NoAssemble banlist
|
||||||
| TwoUp|TwoUpStack|RemoveBookmarks|AddRectangle|RemoveText|
|
| TwoUp|TwoUpStack|RemoveBookmarks|AddRectangle|RemoveText|
|
||||||
Draft|Shift|Scale|ScaleToFit|RemoveAttachedFiles|
|
Draft|Shift|ShiftBoxes | Scale|ScaleToFit|RemoveAttachedFiles|
|
||||||
RemoveAnnotations|RemoveFonts|Crop|RemoveCrop|Trim|RemoveTrim|Bleed|RemoveBleed|Art|RemoveArt|
|
RemoveAnnotations|RemoveFonts|Crop|RemoveCrop|Trim|RemoveTrim|Bleed|RemoveBleed|Art|RemoveArt|
|
||||||
CopyBox|MediaBox|HardBox _|SetTrapped|SetUntrapped|Presentation|
|
CopyBox|MediaBox|HardBox _|SetTrapped|SetUntrapped|Presentation|
|
||||||
BlackText|BlackLines|BlackFills|CopyFont _|StampOn _|StampUnder _|StampAsXObject _|
|
BlackText|BlackLines|BlackFills|CopyFont _|StampOn _|StampUnder _|StampAsXObject _|
|
||||||
|
@ -1201,6 +1203,10 @@ let setshift s =
|
||||||
setop Shift ();
|
setop Shift ();
|
||||||
args.coord <- s
|
args.coord <- s
|
||||||
|
|
||||||
|
let setshiftboxes s =
|
||||||
|
setop ShiftBoxes ();
|
||||||
|
args.coord <- s
|
||||||
|
|
||||||
let setscale s =
|
let setscale s =
|
||||||
setop Scale ();
|
setop Scale ();
|
||||||
args.coord <- s
|
args.coord <- s
|
||||||
|
@ -2171,6 +2177,9 @@ and specs =
|
||||||
("-shift",
|
("-shift",
|
||||||
Arg.String setshift,
|
Arg.String setshift,
|
||||||
" -shift \"dx dy\" shifts the chosen pages");
|
" -shift \"dx dy\" shifts the chosen pages");
|
||||||
|
("-shift-boxes",
|
||||||
|
Arg.String setshiftboxes,
|
||||||
|
" -shift \"dx dy\" shifts the chosen pages");
|
||||||
("-rotate",
|
("-rotate",
|
||||||
Arg.Int setrotate,
|
Arg.Int setrotate,
|
||||||
" Set rotation of pages to 0, 90, 180, 270");
|
" Set rotation of pages to 0, 90, 180, 270");
|
||||||
|
@ -4183,6 +4192,15 @@ let go () =
|
||||||
let range = parse_pagespec_allow_empty pdf (get_pagespec ()) in
|
let range = parse_pagespec_allow_empty pdf (get_pagespec ()) in
|
||||||
let dxdylist = Cpdfcoord.parse_coordinates pdf args.coord in
|
let dxdylist = Cpdfcoord.parse_coordinates pdf args.coord in
|
||||||
write_pdf false (Cpdfpage.shift_pdf ~fast:args.fast dxdylist pdf range)
|
write_pdf false (Cpdfpage.shift_pdf ~fast:args.fast dxdylist pdf range)
|
||||||
|
| Some ShiftBoxes ->
|
||||||
|
let pdf = get_single_pdf args.op false in
|
||||||
|
let range = parse_pagespec_allow_empty pdf (get_pagespec ()) in
|
||||||
|
let dxdylist = Cpdfcoord.parse_coordinates pdf args.coord in
|
||||||
|
let dx, dy = match dxdylist with (a, b)::_ -> a, b | _ -> 0.0, 0.0 in
|
||||||
|
Printf.printf "dx = %f, dy = %f\n" dx dy;
|
||||||
|
let f (xmin, xmax, ymin, ymax) = (xmin +. dx, xmax +. dx, ymin +. dy, ymax +. dy) in
|
||||||
|
let fpage _ p = Cpdfpage.change_boxes f pdf p in
|
||||||
|
write_pdf false (Cpdfpage.process_pages (Pdfpage.ppstub fpage) pdf range)
|
||||||
| Some Scale ->
|
| Some Scale ->
|
||||||
let pdf = get_single_pdf args.op false in
|
let pdf = get_single_pdf args.op false in
|
||||||
let range = parse_pagespec_allow_empty pdf (get_pagespec ()) in
|
let range = parse_pagespec_allow_empty pdf (get_pagespec ()) in
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
%Document -extract-stream - check enc
|
%Document -extract-stream - check enc
|
||||||
%Document -obj - check enc
|
%Document -obj - check enc
|
||||||
%Document -merge-no-struct-trees in merge and collate
|
%Document -merge-no-struct-trees in merge and collate
|
||||||
|
%Document -shift-boxes
|
||||||
\documentclass{book}
|
\documentclass{book}
|
||||||
% Edit here to produce cpdfmanual.pdf, cpdflibmanual.pdf, pycpdfmanual.pdf,
|
% Edit here to produce cpdfmanual.pdf, cpdflibmanual.pdf, pycpdfmanual.pdf,
|
||||||
% dotnetcpdflibmanual.pdf, jcpdflibmanual.pdf jscpdflibmanual.pdf etc.
|
% dotnetcpdflibmanual.pdf, jcpdflibmanual.pdf jscpdflibmanual.pdf etc.
|
||||||
|
|
Loading…
Reference in New Issue