- cross-posted to:
- [email protected]
- cross-posted to:
- [email protected]
Some version of this has been floating around the Internet since 2007, probably earlier. This tweet is pretty emblematic of posts about this claim: it’s stated as pure fact, with no supporting evidence or explanation. We’re meant to just accept that a single PDF can only cover about half the area of Germany, and we’re not given any reason why 381 kilometres is the magic limit.
I started wondering: has anybody made a PDF this big? How hard would it be? Can you make a PDF that’s even bigger?
A few years ago I did some silly noodling into PostScript, the precursor to PDF, and it was a lot of fun. I’ve never actually dived into the internals of PDF, and this seems like a good opportunity.
Let’s dig in.
It’s unclear why Acrobat has to have a limitation at all, since other PDF programs have no such limitation. More importantly, Acrobat only supports up to 200.00 x 200.00 in (5.08 x 5.08 m) using the standard
MediaBox
setting - any higher than that and you get a warning. The only way to push past that is to also set aUserUnit
value, which essentially acts as a multiplier. This is all detailed in the article.But Apple’s Preview doesn’t support
UserUnit
, meaning a PDF larger than 200 x 200 in can’t be displayed correctly in both Acrobat and Preview. If you set it higher using justMediaBox
, then Preview will show it fine but Acrobat will truncate it. If you setMediaBox
to the highest values Acrobat accepts and useUserUnit
as a multiplier, then Acrobat will show it fine but Preview would not (I don’t know if it would truncate it or show it scaled down). So when it comes to PDFs larger than 200 x 200 in, you can choose either up to 15,000,000.00 x 15,000,000.00 in in Acrobat or as large as you like in Preview - you can’t have both.All interesting and some things I didn’t know, but this is completely irrelevant. A PDF-reading app (i.e. Preview) does not have to use, and almost certainly does not use the same PDF rendering engine as the desktop rendering one you described. An obvious relevant example is pages - the desktop renderer doesn’t need to know about or render pages at any point. It doesn’t deal with the size of a page, the existence of multiple pages, or pages of different sizes. It has only one canvas to draw in. A PDF viewer app OTOH obviously has to be able to handle all of these things, and render them into a format that can be pushed to the system’s graphics API.
See this StackExchange answer, which quotes this paragraph from Ars Technica (emphasis mine):
It doesn’t deal with any features, whereas a reader app must deal with many features. So discussing it is irrelevant for the Preview app.
Edit: and I was only poking fun at Apple’s policies in general. Their current crusade against anything that isn’t 100% under their totalitarian control on iOS in Europe is most telling. I think in this case the only reason they don’t support UserUnit is that it’s basically never used in practice and they never realized it’s missing.