Index ¦ Archives ¦ RSS

Export larger pages from Draw using PDF 1.6

Estimated read time: 2 minutes

Draw/Impress now has support for exporting larger page sizes into PDF. The previous limit was 200 " (508 cm), and now practically there is no such limit.

First, thanks Vector who made this work by Collabora possible.

Motivation

You can use Draw with a document which has a single page, which more or less acts as a canvas with unlimited size to handle vector graphics. The current limit of such a canvas in size is 600 x 600 cm. (And that can be increased further if there is demand without too large problems.)

Exporting such a document to PDF is a different matter, though. The specification (up to, and including version 1.5) says that the unit to specify sizes is points, and the maximum allowed value is 14 400. This means that there is no markup to describe that your page is 600 cm wide. PDF 1.6 (and newer versions) introduce a UserUnit markup to allow unlimited page size, and now Draw (and other apps) can use this to describe the increased size.

Another use-case can be a large sheet in Calc, exporting it to a single PDF page, so you can pan around easily on a touch device. If you have enough rows, then getting rid of this limit is helpful to deal with the large page height.

Results so far

Here is how a large page looks like now in Draw and then in Adobe Reader:

Figure 1. Export of 6m-wide.odg to PDF

You can see how both Draw and Adobe Reader show that the page width is larger than 200 ".

How is this implemented?

If you would like to know a bit more about how this works, continue reading… :-)

  • The PDF export already converts from an internal unit (e.g. Draw uses 100th millimeters, Writer uses twips) to PDF’s unit

  • The trick is that now PDF’s unit is no longer points all the time, but we can dynamically switch to a larger unit as needed.

Here is how the PDF markup looks like for a 600 cm wide page:

1 0 obj
<</Type/Page/Parent 4 0 R/Resources 11 0 R/MediaBox[0 0 8503.93700787402 396]
/UserUnit 2/Group<</S/Transparency/CS/DeviceRGB/I true>>/Contents 2 0 R>>
endobj

Notice how we still avoid values larger than 14 400, but now the UserUnit says that 1 unit means 2 points.

Want to start using this?

You can get a snapshot / demo of Collabora Office and try it out yourself right now: try unstable snapshot. Collabora is a major contributor to LibreOffice and all of this work will be available in TDF’s next release too (7.0).

© Miklos Vajna. Built using Pelican. Theme by Giulio Fidente on github.