Specifying PDF page size in Processing

I've always been wondering if there's no easier way than trial & error to figure out the correct dimensions one has to specify in the size() command to match a certain paper size for the generated PDF. Today I finally had a quick look at the source of the underlying iText library on which Processing's PDF wrapper is built. As expected it actually includes a convenience class which has presets for all common page formats. This is great, but to make this even slightly more user-friendly you can take this snippet and keep it:

/**
* Convenience method to be used instead of the normal size() command.
* Creates window matched to a given paper size
*
* @param r a predefined constant of the iText PageSize class
* @param isLandscape true, if you want landscape orientation
* @param renderer class name of the Processing renderer to use
*/
void pageSize(com.lowagie.text.Rectangle r, boolean isLandscape, String renderer) {
  if (isLandscape) {
    size((int)r.top(),(int)r.right(),renderer);
  } else {
    size((int)r.right(),(int)r.top(),renderer);
  }
}

And here're a couple of examples how this snippet would be used (make sure you import the PDF library):

void setup() {
  // create window @ A3 landscape using OPENGL
  pageSize(com.lowagie.text.PageSize.A3,true,OPENGL);
}
 
void setup() {
  // create window @ US Letter size, portrait using default renderer
  pageSize(com.lowagie.text.PageSize.LETTER,false,JAVA2D);
}
Last modified: 2009/03/23 12:52