Paper Sizes in a Windows Printer Driver Configuration File

One of the most common, perhaps the most common, complaint about printing to a Windows printer driver from MicroStation is the lack of control over paper sizes.  Whereas a Bentley printer driver allows you to define as many paper sizes as you need, and only those you need, with the names and dimensions you want, the Windows printer driver requires you to use only those paper sizes published by the printer driver.

The list of paper sizes published by Windows printer drivers vary greatly.  Some do not support custom paper sizes, and publish a long list of sizes obtained from the operating system's forms database.  Most of those sizes you do not care about, and the ones you do use are not conveniently named.  Other printer drivers provide a more concise list of paper sizes, and some do support custom dimensions, but the paper size names and the procedures for defining custom sizes are rarely consistent from one printer driver to another.

In MicroStation 8.9.3, a Printer Driver Configuration File Editor was introduced that included a user interface for defining paper sizes in a .pltcfg file.  This paper size editor was available for both Bentley and Windows printer driver configurations, leading to the mistaken impression that MicroStation had begun offering the same level of support for custom paper sizes in printer.pltcfg as was available in, say, hpglrtl.pltcfg.  This is not true, and the purpose of this article is to describe the intended purpose of printer.pltcfg paper size definitions.

Paper Size Filtering and Renaming

The primary purpose of paper size definitions in a Windows printer driver configuration file is to filter and rename the list of paper sizes provided by the Windows driver.  For example, consider the paper size list published by a typical Windows laser printer driver:

11" x 17"

Legal (8.5" x 14")

Letter (8.5" x 11")

Executive (7.25" x 10.5")

5.5" x 8.5"

A3 (297 x 420 mm)

A4 (210 x 297 mm)

A5 (148 x 210 mm)

A6 (105 x 148 mm)

B4 JIS (257 x 364 mm)

B5 JIS (182 x 257 mm)

8" x 13"

8.25" x 13"

8.5" x 13"

8K (267 x 390 mm)

16K (267 x 195 mm)

Here is the paper size list published by one of the Oce TDS printer drivers:

Oce A0 841x1189 mm

Oce A1 594x841 mm

Oce A2 420x594 mm

Oce A3 297x420 mm

Oce A4 210x297 mm

Oce E 34x44 in

Oce D 22x34 in

Oce C 17x22 in

Oce B 11x17 in

Oce A 8.5x11 in

Oce E+ 36x48 in

Oce D+ 24x36 in

Oce C+ 18x24 in

Oce B+ 12x18 in

Oce A+  9x12 in

Oce B1 707x1000 mm

Oce B2 500x707 mm

Oce B1-700 700x1000 mm

Oce B2-700 500x700 mm

Oce 30" 30x42 in

Oce JIS B1 728x1030 mm

Oce JIS B2 515x728 mm

Oce JIS B3 364x515 mm

Oce JIS B4 257x364 mm

Oce JIS B5 182x257 mm

If your workflow consists of printing only ANSI B and ANSI D sheets, then you probably don't want to be distracted by all those other sizes.  And you probably wouldn't be thrilled at the prospect of embedding the strings "11" x 17"" or "Oce D 22x34 in" in your MicroStation sheet definitions, as that would tie your design files to a particular printer driver and make them less portable.

The solution MicroStation offers is the list of the sheet sizes in Workspace/System/data/sheetsizes.def (ANSI A, ANSI B, Arch A, ISO A0, etc.).  These sheet sizes have ideal sizes (unreduced by non-printable margins) and generic names.  Use these ideal sheet size names in your sheet definitions, and your design files remain relatively portable from one site to another.  When the Print dialog is opened to print the sheet, MicroStation attempts to find the physical paper size supported by the printer that most closely matches the ideal sheet size.

The search for the closest matching form is where uncertainty creeps in.  It would be best if the physical paper size was selected in an unambiguous manner, based on its name.  That is the role of the paper size list in printer.pltcfg.

The 'Edit Paper Size' dialog in the Printer Driver Configuration Editor includes a property called 'Windows Form Name'.  The intention is that every paper size defined in your customized printer.pltcfg file include a valid Windows paper size name.  In other words, when you define paper sizes in printer.pltcfg, you are not trying to define a size that the driver does not support.  Instead, you are simply assigning a new name to an existing paper size.  This is very useful when the Windows printer driver publishes multiple forms with similar dimensions.  Rather than hope MicroStation comes up with a particular Windows form for your ideal sheet size, you can explicitly map the desired Windows form to your ideal sheet size name.  When searching for a suitable physical paper size, MicroStation first looks for an exact name match.

For example, consider two of the paper sizes published by HP's DesignJet 1055CM printer driver:

Name: ANSI D - 22 x 34 in.

    Total area: 34 x 22 in.

    Usable area: 33.603 x 20.95 in.

Name: Oversize: ANSI D

    Total area: 34 x 22 in.

    Usable area: 34 x 22 in.

This HP printer driver offers forms both with and without non-printable margins.  To avoid clipping by the operating system when printing to this printer driver, you'll most likely want to print to the "Oversize: ANSI D" form.  The way to ensure this form is automatically selected when you open the Print dialog for a sheet definition containing the ideal "ANSI D" sheet size is to customize printer.pltcfg and define the paper size "ANSI D" with 'Windows Form Name' set to 'Oversize: ANSI D'.

Edit Paper Size dialog 

Another advantage of defining one or more paper sizes in printer.pltcfg is that only those paper sizes will show up as available choices in the Print dialog.  You can filter out all the other Windows printer driver paper sizes you don't care about.

Important note: once you have customized printer.plt to include paper size names published by a particular Windows printer driver, then you have firmly associated that .pltcfg file with that particular Windows printer driver.  Any attempt to use that .pltcfg with a different Windows printer may lead to undesirable behavior.  So you should go ahead and specify the name of the Windows printer in the printer driver configuration's 'Default Windows Printer Name' property.  Once that's done, selecting the .pltcfg file in the Print dialog will automatically select the corresponding Windows printer, and your mapped paper sizes will be valid.

Custom Paper Sizes in the Printer Driver Configuration File

Of course, what many people really want is to be freed of the restriction of using the paper sizes published by the Windows printer driver.  The 'Edit Paper Size' dialog doesn't force you to enter a Windows form name, and it allows you to enter whatever X and Y size you want.

Unfortunately, this rarely works.  The functionality exists in the product for those rare instances when it does work.  When printing to a Windows printer driver, MicroStation requests the driver use a particular paper size.  Normally, it makes this request by specifying either the form name or the internal numeric identifier associated with that form.  In both cases, MicroStation is using an identifier provided by the driver, so there is a high probability the request will be honored.  However, if you have defined a .pltcfg paper size without a Windows form name, then MicroStation must look for an existing form that exactly matches the dimensions you specified.  One probably doesn't exist, otherwise you wouldn't have felt the need to define your own size.  So MicroStation has no choice but to request the driver set up its canvas using an application-defined paper size.  Some drivers accept this, most do not.  For those drivers that never accept it, the driver usually reverts to its default form size.  Worse, some drivers are not reliable in their behavior.  Sometimes they will accept the custom size, sometimes they will not, depending on their internal state at the time.

This feature is hanging on in MicroStation by a thread.  For now, there are a few customers that are using .pltcfg custom paper sizes successfully with certain Windows printer drivers (HP DesignJets, I believe), and the benefit of continuing to support their workflow outweighs the obvious cons of having such an unreliable feature in the product.

My recommendation is that if you absolutely require non-standard paper sizes that aren't supported by the Windows printer driver provided by your printer vendor, then you are probably better off with a generic Bentley printer driver such as hpglrtl.pltcfg.  However, you should weigh this against the significant downsides of using a generic Bentley driver, especially if you print OLE attachments.  If you print OLE attachments and reject printer.pltcfg because of the lack of custom paper size support, you may want to reconsider your paper size workflow.