Во-первых, обратите внимание, что единица измерения для PDF такая же, как и для PostScript: она называется точка [pt].
72 points == 1 inch == 25.4 millimeters
Предположим, у вас размер страницы А4. Тогда размеры носителя:
595 points width == 210 millimeters
842 points height == 297 millimeters
Предполагая, что вы хотите обрезать:
left edge: 24 points == 1/3 inch ~= 8.5 millimeters
right edge: 36 points == 1/2 inch ~= 12.7 millimeters
top edge: 48 points == 2/3 inch ~= 17.0 millimeters
bottom edge: 72 points == 1 inch ~= 25.4 millimeters
Тогда ваша командная строка Ghostscript выглядит так (в Windows):
gswin32c.exe ^
-o cropped.pdf ^
-sDEVICE=pdfwrite ^
-c "[/CropBox [24 72 559 794]" ^
-c " /PAGES pdfmark" ^
-f uncropped-input.pdf
Или в Linux:
gs \
-o cropped.pdf \
-sDEVICE=pdfwrite \
-c "[/CropBox [24 72 559 794]" \
-c " /PAGES pdfmark" \
-f uncropped-input.pdf
Однако это может работать не для всех типов PDF-файлов [1]. В этих случаях вы должны альтернативно попробовать эти команды:
gswin32c.exe ^
-o cropped.pdf ^
-sDEVICE=pdfwrite ^
-dDEVICEWIDTHPOINTS=595 ^
-dDEVICEHEIGHTPOINTS=842 ^
-dFIXEDMEDIA ^
-c "24 72 translate" ^
-c " 0 0 535 722 rectclip" ^
-f uncropped-input.pdf
or
gs \
-o cropped.pdf \
-sDEVICE=pdfwrite \
-dDEVICEWIDTHPOINTS=595 \
-dDEVICEHEIGHTPOINTS=842 \
-dFIXEDMEDIA \
-c "24 72 translate" \
-c " 0 0 535 722 rectclip" \
-f uncropped-input.pdf
[^] : Чтобы быть более конкретным: это не будет работать для PDF-файлов, которые поставляются вместе со своими собственными /CropBox
, уже определенными для конкретных значений. Грязный хак вокруг этого состоит в том, чтобы изменить строку /CropBox
для всех страниц, где желательно, на /cROPBoX
(или аналогичное изменение регистра) с помощью текстового редактора до запуска вышеуказанной команды GS. Изменение регистра эффективно «обезвреживает» параметр обрезки (без изменения каких-либо смещений объектов PDF, делающих недействительной существующую таблицу xref
), поэтому средства визуализации PDF больше не учитывают его.
person
Kurt Pfeifle
schedule
31.05.2011