|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 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.
|Printing in Sequences||
Helix stores printing information for each template so that it can ‘play back’ the prior settings when a view is printed from within a sequence set to optionally or never show dialogs. This can be problematic when switching from one model of printer to another, where the stored settings might be interpreted differently. To avoid problems when switching printers — and when transitioning from Helix 6.1 or earlier — we recommend that all printing sequences include a Page Setup command before any Print command, giving the user an opportunity to confirm their desired settings when printing. Our recommendation is to put the Page Setup command in a separate sequence, set to ‘Optionally Show Dialogs’ and nest this sequence within your other printing sequences, just before the ‘Print’ command. If a printing issue arises, running the sequence while holding the Option key down will display the Page Setup dialog, giving the user an opportunity to confirm the printer settings. When printing is working correctly and the user is not holding down the Option key, the dialog is not displayed and the prior settings are used automatically..
|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 in macOS features 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. In Helix 6.x this problem is addressed by a bit of internal logic that attempts to discern when a multi-page template is being printed, turning off page scaling for those views.
Helix 7 provides view-by-view control of print scaling with the addition of the Fit to page view property. See the Fit to page property in Helix 7.0 technote for instructions on using this new Helix feature.
|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.)