Printing Products Feature Comparison
We have three printing products PrintForm, PrintControls and PrintAdapters, and this page is designed to highlight the differences between them in order to help you decide which one(s) you need.
In brief:
- PrintForm prints any .NET Windows Form or Control, but you may not always have the level of control over the control's appearance (border width, color etc) that you would like on your printout, hence PrintControls...
- PrintControls provides a set of controls with a customisable UI and exact size printing on the page. This allows you to specify a control with a rounded rectangle border of a given color and thickness, and then guarantee that it will be 4inches by 2inches on the printed page.
- PrintAdapters handles printing the controls that typically contain many pages of data: ListView, TreeView and RichTextBox, and also the tabular contents of the DataTable.
More details on the features of each of these are listed below.
Free Trial Versions are available for download from the Downloads Page.
Product Comparison Table
| |
PrintForm |
PrintControls |
PrintAdapters |
| Print any .NET Windows Form more... |
x |
|
|
| Print any dotnet windows control more... |
x |
|
|
| Print 3rd party controls (may require custom code) more... |
x |
|
|
| Save printouts as images more... |
x |
x |
x |
| Automatic header and footer support more... |
x |
|
|
| Scaling/autofit printed output to page more... |
x |
|
|
| Derived from .NET PrintDocument more... |
x |
|
x |
| Extensible with custom print renderers more... |
x |
|
|
| Implements IChainedDocument for composite printouts more... |
x |
x |
x |
| Print multipage output from common controls ListView, TreeView, RichTextBox more... |
|
|
x |
| Print multipage output from DataTable more... |
|
|
x |
| ListView and DataTable print with custom TableStyles more... |
|
|
x |
| Provides controls with enhanced print features and UI more... |
|
x |
|
| Custom border size/color etc more... |
|
x |
|
| Custom border corners rounded/mitred more... |
|
x |
|
| BackGround fill options (gradient etc) more... |
|
x |
|
| Specify printed size at designtime (e.g. in Inches, mm etc) more... |
|
x |
|
| Printable barcode control more... |
|
x |
|
| Printable line control more... |
|
x |
|
| Printable label control more... |
|
x |
|
| Printable panel control more... |
|
x |
|
| Printable checkbox control more... |
|
x |
|
| Printable picturebox with true metafile support more... |
|
x |
|
| Extensible via PrintControl base class. Create new printable controls. more... |
|
x |
|
PrintForm: Print any .NET Windows Form
Printform provides the capability to accurately print any .NET windows form. Note from the zoomed in version of the print preview below that these are not just bitmapped images rendered to the print preview - the text is rendered as true vector output to the print metafile. These images show the .NET Windows Form, the PrintPreviewDialog, and the print preview detail view:

PrintForm: Print any dotnet windows control
PrintForm has support for printing all the Windows Forms controls included in the .NET Framework. Forms or controls can be rendered to the printout by PrintForm directly by using it in PrintDocument mode, or you can take charge of the printing and just use PrintForm's PrintControl method to render any control into a given Graphics object.
Note that, as with Form printing, PrintForm renders the control internally in scalable vector metafile format wherever possible ensuring the best possible quality of printout.
PrintForm: Print 3rd party controls
PrintForm version 2.1 includes an extensible model for printing 3rd party controls, based on the PrintForm IPrintMethodAdapter interface. A variety of implementations of this are supplied, and the simplest solution when printing a 3rd party control is to associate its Type name with an existing PrintForm IPrintMethodAdapter (see the HowTo faq for more information). For completely custom print rendering you can implement your own IPrintMethodAdapter for the control Type concerned and add it to PrintForm's collection.
PrintForm, PrintAdapters & PrintControls: Save printouts as images
PrintForm version 2.1 now includes a custom PrintController class, FilePrintController, derived from the framework base class PrintController. Supplying this to the Print process in place of the
framework's StandardPrintController, PrintControllerWithStatusDialog or PreviewPrintController allows you to direct the printed output to a file (or files) that represent to look of the printed page. The FilePrintController includes support for all the standard framework image types, including gif, png, jpg, emf and multipage tiff.
PrintForm: Automatic header and footer support
PrintForm in PrintDocument mode allows you to specify controls on your form to be printed as header, body and footer components of the page. PrintForm takes care of the layout of the page and positioning of the page elements. This image shows the location of the header and footer, and the positioning of the page body content:

PrintForm: Scaling/autofit printed output to page
PrintForm in PrintDocument mode can automatically scale the page contents to fill the page. This can be combined with centering vertically and/or horizontally. Here the body contents of the page are unscaled, but are centered horizontally and vertically using the PrintForm CenterStyle property:
PrintForm & PrintAdapters: Derived from .NET PrintDocument
PrintForm and PrintAdapters are derived from the .NET Framework baseclass PrintDocument. This means that you can use them anywhere where you might use a PrintDocument. Printing is as simple as configuring the component with the control to print and calling the Print method. To print preview using the framework PrintPreviewDialog set the PrintForm or PrintAdapter reference into the PrintPreviewDialog.Document property and call PrintPreviewDialog.ShowDialog. It is as simple as that.
PrintForm: Extensible with custom print renderers
PrintForm version 2.1 includes an extensible model for printing custom controls, based on the PrintForm IPrintMethodAdapter interface. For completely custom print rendering you can implement your own IPrintMethodAdapter for the control Type concerned and add it to PrintForm's collection.
PrintForm, PrintAdapters & PrintControls: Implements IChainedDocument for composite printouts
The .NET framework gives you the basic PrintDocument, and we have provided the PrintForm and PrintAdapters specialisations discussed above. We have also implemented a further PrintDocument based component called PrintChainManager that stitches together the output of multiple PrintDocument derived classes to form a single print job, and handles the tracking of how much space on the page each PrintDocument has used so that the next one can start printing where the previous one left off.
In order to participate in this process the PrintDocument must implement our IChainedDocument interface. All of our printing products do so, so it is a simple matter to create a single printed document consisting of the output of some PrintForm operations, followed by the PrintAdapters printing of a DataTable or RichTextBox over multiple pages, followed by the printout of a panel containing some PrintControls.
PrintAdapters: Print multipage output from common controls ListView, TreeView, RichTextBox
PrintForm prints Windows Forms and Conrtols 'as-is'. PrintAdapters was designed to print the contents of controls that typically contain many pages of data, such as the ListView, TreeView and RichTextBox.
PrintAdapters: Print multipage output from DataTable
PrintAdapters prints the ListView control and can also print the contents of a framework DataTable in the same manner over multiple pages.
PrintAdapters: ListView and DataTable print with custom TableStyles
Both PrintListView and PrintDataTable PrintAdapters can either pick up their style information from the source control, or can specify a completely custom style via the TableStyle property.
Applying a custom TableStlye and the resulting PrintPreview: 
PrintControls: Provides controls with enhanced print features and UI
The main goal of PrintControls was to provide a set of controls with a fully customisable UI. This image shows the PrintControls BorderStyle editor with the gradient fill option enabled.
PrintControls: Custom border size/color, custom border corners rounded/mitred etc
Style, thickness and color of each border line segment of a PrintControl can all be adjusted independently, as in this contrived example:
 PrintControls: BackGround fill options (gradient etc)
All PrintControls support a variety of gradient fill styles in any of their regions. This image shows the same panel with a variety of gradient fill orientations, and the resulting print preview:
 PrintControls: Specify printed size at designtime
As well as being specified in terms of Display units, all PrintControls can also be sized in terms of standard printer units (1000th Inch, 100th mm etc). When set in these units, the on screen size is adjusted so that the required size is produced on the printout. This is particularly useful with Barcodes where a specific minimum printed size is often required.
This image shows the MeasurementUnit property and the SizeInMeasurementUnits:
 PrintControls: Printable barcode, line, label and panel controls
These controls all have the standard PrintControls customisable UI and allow you to create just about any form or barcode label layout you can imagine. Note the custom color and thickness of borders, rotated barcode etc on the image below.
This printout is achieved without the use of PrintForm. The PrintControls IPrintableControl interface contains a Print method which is used in conjunction with the standard framework PrintDocument to render the control to the page. Samples provided with PrintControls illustrate this process in more detail. 
Barcode control features include: various symbologies (Code128, Code39, Extended Code39, Interleaved 2of5) and fully configurable QuietZone, Module (Bar) Width and Height, Rotation and Labelling. The image below illustrates the barcode rotation options, and the resulting print preview:
 PrintControls: Printable checkbox control
PrintControls includes a printable CheckBox control that allows you to specify the image used for the check mark. This image can of course be a fully scalable metafile, see Printable picturebox with true metafile support.
Note in the print preview image below how the check mark metafile preserves the smoothness of its outline even as the preview is zoomed in, also note the configurable borderstyle of the check box outline (see the PrintControls BorderStyle editor details):

PrintControls: Printable picturebox with true metafile support
The .NET framework PictureBox does not support metafiles. When you set a metafile into its Image property it is converted internally to a Bitmap before being saved to the resx file, thus losing the resolution independence of the metafile that would be particularly useful when rendering the control to a high resolution printer. The PrintControls PictureBox fully supports metafiles and provides all the standard border and sizing behaviour of the PrintControl base class. Here is the PictureBox displaying an image, showing clipping to the rounded rectangle border:
PrintControls: Extensible via PrintControl base class
All the controls in the PrintControls library are based on a PrintControl base class. This contains the border printing functionality and the exact size translation code, making it easy to create your own new printable controls. The PrintControl base class also implements a fine-grained painting model making it very easy to draw over the background, for example, but under the client area contents, providing PaintControlBackground, PaintClientBackground, PaintClientForeground and PaintClientBorder events for your custom code.
|