|TS6405: Page Setup and Scaled Printing in macOS|
|The Importance of Page Setup||
Printing is problematic for all applications when switching from OS 9 to macOS, and doubly so for Helix, due to its ability to retain unique Page Setup data for every view in your collection. To maintain Classic compatibility, Page Setup data is not stored in collections used with Helix 6.1 — this feature is restored in Helix 6.2 — so you will almost certainly encounter problems when printing in macOS when non-standard page sizes are printed or precise alignment is required.
An important step in minimizing the impact of this is to open Page Setup in macOS, choose your printer in the Format for menu, and then choose Save as Default in the Settings menu. This ensures that your applications are fully aware of the capabilities — particularly the page margins — of the printers you use.
Even so, there may still be discrepancies, as we have observed that some printers claim different page margins when using the macOS printer driver as compared to their Classic counterparts.
The screen shot on the right shows the Paper Size menu opened, with the page margin tooltip showing. (To see a tooltip anywhere in macOS, click on an item and hold for 2–3 seconds; if that item has a tooltip, it will appear.)
If you do not specify your printer type, macOS uses fairly large margins. This image shows the tooltip for US Letter when Any Printer is chosen in the Format for popup. Note that the top, left, and right margins are 0.25" and the bottom margin is 0.56" — over half an inch! If you do not specify your specific printer, you are almost certainly giving up some of the printable area of your pages.
|Classic Helix and the Fixed Grid Size||
Classic Helix uses a fixed grid size when printing views. This means that if your template is 8.5 inches wide, but your printer’s non-printable margins result in a printable width that is less, printing this form outputs two pages, with the second page containing the excess that would not fit on the first page. The same is true for the height of the template. This has always been a limitation in the way Classic Helix prints.
For Helix users, the very large default margins in macOS (see above) would certainly cause templates designed for Classic printer drivers to be larger than the printable area, causing Helix to split the output so it would all be printed in the smaller default printable area.
|Helix 6.2: Automatic Page Scaling||
In order to minimize this issue, and to address the longstanding shortcoming note above, Helix changes page sizing in macOS in a very important way: Helix 6.2 automatically scales the output down to fit the entire template on a single page when necessary. This eliminates the need to adjust templates when switching from one printer to another with different page margins. For most Helix users, this is a welcome relief.
Note: this automatic scaling only happens if the reduction does not exceed the value stored in the HxAdjustPrintScaleThreshold preference. In Helix 6.2, the default value is 75, so Helix will not automatically reduce a page to more than 75% of its original size, unless the preference is changed.
However, automatic scaling will most likely cause misalignment on forms that require precise positioning (e.g: when printing on pre-printed forms). There are three solutions to this problem:
|Helix 7.0: Automatic Page Scaling and the ‘Fit to Page’ Property||
Helix 7.0 improves upon the situation further by adding a new Fit to page property to every view. Views can now be individually set to scale to fit a single sheet of paper or to print at actual size, using extra paper if necessary.
Information on the Fit to page property, along with other changes to printing in Helix 7, are found in the Printing in Helix 7.0 technote.
|Stored Page Setup: Classic vs macOS||
Because Helix collections store Page Setup data for every view, and because macOS sometimes does a rather poor job of interpreting the “Classic” Page Setup data, the stored Classic data is sometimes interpreted very poorly by macOS. This problem becomes serious when first moving to Helix 6.2, as Helix 6.1 and earlier use only the Classic Page Setup data. (See this technote for an explanation of why macOS native Helix 6.1 products do not show this problem.)
The solution (unfortunately) is to use Helix RADE 6.2 or later to open every view one by one, choose Page Setup, and correct the places where macOS has mishandled it. Once the view has stored the updated Page Setup data, it will be retained for future use, including in sequences and by Client workstations. (Note however, that if you take the collection back to Helix 6.1 for any reason, that version will not correctly interpret the macOS Page Setup data either.)
A script is available on our free AppleScripts page that assists by automating as much of the work as possible. You must still visually confirm the Page Setup settings, make changes where needed, and OK the dialog for each view. Look for the script named “Open Every Page Setup” in the “View” section.
|Multi-page Template Designs||
Some collections include template designs that print on multiple pages. This requires the designer to carefully position elements so that none of the data falls on the boundary between pages, resulting in clipped text. Because printer margins are not consistent from model to model (or even from system to system), this is a technique has always been very difficult to maintain.
The fact that Helix abandons the ‘fixed grid’ model of Classic in favor of automatic page scaling (see above) — where it scales the output to fit on a single sheet — creates a problem for templates intentionally designed to print on multiple pages. To resolve this, automatic page scaling only applies reduction if the view clearly requires two or more pages to print, based on the current settings in the Page Setup dialog. If reduction would cause the output to be reduced by more than 50%, automatic scaling is turned off and the output is done at 100%, regardless of how many pages that requires. Depending on the specifics of your printer driver(s) you may find that you have to adjust the size of your template to avoid this.
Helix 6.2.1 adds an additional control: HxAdjustPrintScaleThreshold that allows the user to adjust the level at which automatic page scaling is turned off. A view that requires additional pages (horizontally or vertically) to print — after the Scale set in the Page Setup dialog is applied — will be reduced to a single page only if the reduction is less than the percentage value stored in this preference. The default value is 40, which will reduce the output to a single page only if the reduction would be less than 40% of its original (screen) size. Setting this preference to 0 has the same effect as setting HxAdjustPrintScaleIfNeeded to false: it forces Helix to print based on the Scale setting in the Page Setup dialog regardless of the number of pages required. Setting this preference to 100 forces Helix to always scale the view to fit a single page.
A future version of Helix is expected to provide view-by-view control of print scaling.
|Trim Large Margins on Templates||
Our study of various collections with printing issues shows that a common problem in that many templates are designed with excess space on the right and bottom. Even though there are no rectangles in that area, Helix still considers it as part of the page.
Classic Helix used a ‘kludge’ that fooled the Classic printer driver into suppressing blank pages, but this kludge is no longer available in macOS.
For macOS, Helix 6.2 and later automatically trim the template when printing by calculating the actual print area based on the location of the rectangles on the template. This is not necessarily the total size of the template: extra space to the right (and bottom for non-lists) is eliminated from this calculation.
The best solution to the problem is still to be diligent and trim the outer rectangle of the template so there is no excess white space to the bottom and right.
Users of Helix 6.2 may contact technical support to request an AppleScript that trims templates and removes the excess white space.
|Manage Page Sizes to Your Advantage||
Classic Helix managed non-standard page sizes internally, through a fixed number of specific custom paper sizes. Paper size management is handled directly by macOS. In the Page Setup dialog, the Manage Custom Sizes item in the Paper Size menu allows you to define the paper size — and margins — for any paper size.
You can use this to your advantage by creating special entries for your standard paper size, but with unique non-printable borders. The image at the first image above shows (near the bottom of the menu) special settings to create pages with large left and right margins (for printing pages that go into a binder) and one with a consistent 1/2" border all around. By creating custom pages with special borders, you can most likely get macOS to mimic your Classic page setups.
|Sizing Templates In macOS (Helix RADE)||
To avoid unexpected page scaling during printing, templates should be sized so that they are no larger than the printable area of the printer. Of course, it is sometimes difficult or impossible to know the details of the printer a particular form will be printed to, but in the cases where you can know this, the following information will be of use.
The first step in creating templates that will not scale when printed is to determine the printable area (in points) for your target printer. Helix prints using the 72 ppi (points per inch) standard that came out of the typesetting world and still forms the basis of printing in the Mac OS. That would mean that a standard US Letter sheet of paper (8.5" x 11.0") has dimensions of 612 points x 792 points.
However, printers that can print all the way to the margins are rare, and every printer has its own minimum margins beyond which it can not print. The screenshot above shows that our Brother HL-5370DW printer has margins of 0.17" top and bottom, and margins of 0.25" left and right. That makes the actual printable area 8.16" x 10.5" which translates to 587 (8.16*72) points wide and 756 (10.5*72) points high. Any template with rectangles that go beyond either of those dimensions be scaled down when printed on our printer (unless the scaling preference is turned off).
After calculating the maximum printable area (in points) for your printer, open the template in Helix RADE, select the page rectangle (click outside the page rectangle or press shift-tab until it is selected): the width and height properties in the Location section in the Inspector correspond to the points allocated for this template. If either these values is larger that the corresponding printable area calculated for your printer, the output will be scaled* to fit the page. Setting them to values less than the printable area ensures that scaling will not occur.
* As noted above, Helix actually looks at the rectangles on the page and discards the white space to the right and bottom of the rectangles, so these values can exceed the printer’s printable area without forcing scaling, if the rectangles on the page are within the printer’s printable area.
The image on the right shows an example: with the page rectangle selected, the width and height properties show the current dimensions of this template. (The left and top properties are always ‘0’ for the page rectangle.)
Resize the page rectangle just as you do any other rectangle: with it selected, do any of the following:
Once the page rectangle is resized to match your printer, commit the change to update the views on which this template is used.
Tip #1: If you start by opening a view in RADE, choosing Page Setup, and setting the format to your target printer, then create a new template, the template’s page rectangle will be automatically sized to the dimensions that match the Page Setup choice.
Tip #2: To create a landscape oriented page, swap the values in the right and bottom properties.
R6112: Printing Unentered Records (with ‘Post on Print’ notes.)