Re: resizing PDF files with Ghostscript
On 2023-09-17, Greg Marks <gtmarks@gmail.com> wrote:
>
> I am trying to use Ghostscript to resize PDF files to letter page size,
> but on certain files the output is not the correct size. As an example:
>
> $wget https://gmarks.org/abrams_anh_pardo.pdf
>
> $pdfinfo abrams_anh_pardo.pdf=20
> ...
> Page size: 539 x 737 pts
> ...
>
> $gs -o resized_file.pdf -sDEVICE=pdfwrite -dFIXEDMEDIA -dPDFFitPage -d
> DEVICEWIDTHPOINTS=612 -dDEVICEHEIGHTPOINTS=792 -dBATCH -dSAFER abrams_a
> nh_pardo.pdf
>
> $pdfinfo resized_file.pdf=20
> ...
> Page size: 579.224 x 792 pts
> ...
>
It appears the output of pdfwrite has a MediaBox of 612x792 but a CropBox of
595.61x792, which must be the result of scaling A4 down to Letter and
centering that scaled down area on the page.
curty@einstein:~$ pdfinfo -box resized_file.pdf
<snip>
Page size: 579.224 x 792 pts
Page rot: 0
MediaBox: 0.00 0.00 612.00 792.00
CropBox: 16.39 0.00 595.61 792.00
BleedBox: 16.39 0.00 595.61 792.00
TrimBox: 16.39 0.00 595.61 792.00
ArtBox: 16.39 0.00 595.61 792.00
File size: 26538 bytes
Optimized: no
PDF version: 1.7
I'm unaware of another way of "fixing" this but the following kludge (unless
you can tell your printing process to use MediaBox and ignore CropBox).
sed -e "/CropBox/,/]/s#.# #g" resized_file.pdf
curty@einstein:~$ pdfinfo -box resized_file.pdf
<snip>
Page size: 612 x 792 pts (letter)
Page rot: 0
MediaBox: 0.00 0.00 612.00 792.00
CropBox: 0.00 0.00 612.00 792.00
BleedBox: 0.00 0.00 612.00 792.00
TrimBox: 0.00 0.00 612.00 792.00
ArtBox: 0.00 0.00 612.00 792.00
File size: 26538 bytes
Optimized: no
PDF version: 1.7
Reply to: