# Maintaining the BoundingBox in ps2pdf

I have a bunch of Encapsulated PostScript (EPS) graphics that I’ve accumulated over the years—logos, letterheads, and other little image/text combinations that I use for company documents. Most of these were written directly in PostScript and have a BoundingBox set in the document header, like this:

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 534 72
%%DocumentFonts: AvantGarde-Book
%%DocumentNeededFonts: AvantGarde-Book


PostScript assumes, by default, that the image will be placed on a letter-sized page. The BoundingBox parameter tells PostScript to crop the image to the given rectangle. In the example, the rectangle has a lower left corner at (0, 0) and an upper right corner at (534, 72). The coordinates are given in points.1

After switching from Linux to OS X in 2005, I converted most of these EPS files to PDF because the Mac is more PDF-centric. I don’t really remember how I did it, but the easiest tool to use is ps2pdf, a script that comes with, and relies on, Ghostscript, the open-source PostScript workalike developed at the University of Wisconsin.

Today I needed to convert a couple of those old EPSes that I had somehow skipped over back in ’05, and I ran into a problem. Issuing

ps2pdf letterhead.eps


would create a letterhead.pdf, all right, but the bounding box information would be lost and the resulting PDF was a full letter-sized document with the image crammed down in the bottom left corner.

Since ps2pdf can accept basically the same options as Ghostscript, and Ghostscript has about a million options, I figured there had to be a way to maintain the bounding box. After a bit of Ducking2, I found this answer,

ps2pdf -dEPSCrop letterhead.eps


which gave me a perfectly cropped PDF.

Even after finding the answer, I had no memory of ever using the -dEPSCrop option. So how did I get cropped PDFs back in ’05? I doubt I used Preview because its cropping isn’t very precise. I did have a copy of Illustrator back then, so maybe that’s what I used.

Or maybe I did use -dEPSCrop and have completely forgotten about it. I hope putting it here means I won’t forget it again.

1. Since this is PostScript, the “points” are PostScript points, which come 72 to the inch. If you’re a TeX user, “points” (pt) are the more traditional printer’s points, which come 72.27 to the inch. In TeX, PostScript points go by the name “big points” (bp).

2. Like “Googling,” but with DuckDuckGo

## 2 Responses to “Maintaining the BoundingBox in ps2pdf”

1. Maciej Komosinski says:

Thanks for sharing. I have just run into the same issue. They must have changed defaults (annoying — all existing scripts now produce different pdf’s from the same source eps/ps files!)

I haven’t yet figured out how to do this easily on Windows. There is an ugly script ps2pdf.bat which puts command-line arguments into a file and then calls ps2pdfxx.bat. Just passing an argument to ps2pdf.bat does not work, and as a side effect of an error it overwrites your source ps/eps file, treating source file name as an output.

2. If you find a program called eps2pdf on your system, it’s likely to call Ghostscript with the -dEPSCrop option already applied.