Bare bones exemplar code
A set of quick samples are deliberately bare bones and simple and are intended as exemplars of the scripting required to get ScriptX.Services working.
The examples illustrate many common advanced features working with both ScriptX.Addon and ScriptX.Services for Windows PC from exactly the same script code with and without the use of MeadCoScriptXJS Library .
Examples of using ScriptX
These samples continually evolve as a result of feedback from customers. Many samples are based on real-world examples of ScriptX usage.
By default these samples will use ScriptX.Services On Cloud to provide the print service.
This means you require ZERO install to view and test with the samples.
You can also configure the samples to use your own evaluation install of ScriptX.Services:
Please note that configuration of the samples will be remembered from session to session.
All the samples make extensive use of jQuery - an historical artifact for large sections of the industry. There is no requirement that jQuery be used.
Installation and basic use
Introduction to using ScriptX.Services
Shows the recommended javasacript libraries required and their use when starting a new project that will only use ScriptX.Print in the cloud or on-premise.
Shows the javasacript libraries required and their use when when you need to maintain compatibility with current code and the ScriptX add-on.
This is a useful page to show the version of the each of the main client side components of ScriptX.Services that are in use on your device.
A stage by stage walkthrough
A walk through developing a single source that supports both ScriptX.Add-on and ScriptX.Services. The code used in the samples can be used in your own projects. This sample set is a reference for when things go wrong.
These samples can be viewed in IE 11 - in which case the Add-on will be used. Or any modern/evergreen browser, in which case ScriptX.Services will be used.
Note that if even if you have chosen to use ScriptX.Services with Internet Explorer 11 in settings, Internet Explorer will only use ScriptX.Addon in this samples set.
A simple 'classic' sample using ScriptX.Add-on to print the page or print a PDF document.
The ScriptX.Add-on emulation for ScriptX.Services libraries are added. The sample still functions in IE 11 and still fails in evergreeen browsers but nothing has been broken!.
The license is added and everything comes to life in all supported browsers.
Maintaining investment in current code
These are the samples that accompany the articles Maintaining investment in current code on the MeadCo website.
Note that these samples will self-configure to target IE 11 or any modern/evergreen browser on a PC With ScriptX.Services for Windows PC installed.
ScriptX.Services for Windows PC v2.17.0 or later is assumed with Orchestrator available.
Use view source and the console to review the implementation and expected log output (each sample enables full detailed logging).
To work with ScriptX.Services requires the ScriptX.Services Client Library that implements compatibility to ScriptX.Addon for ScriptX.Services. The libraries can be configured with attributes describing the server to use.
Error reporting and suggestions for debugging issues.
An example of a simple custom UI dialog using boostrap 4 as the UI frameworlk.
Enabling async initialisation and use of the MeadCoJS library.
WaitForSpoolingComplete() with ScriptX.Services
Advanced print features
The use of Advanced features of ScriptX.Add-on require an Advanced Printing client side license. All advanced features are included in all licenses for ScriptX.Services.
Provides a summary of the advanced features of ScriptX and shows the use of many advanced features.
In an international environment there may be a mixture of margin measurement units - this sample sets margins in the opposite units to your default illustrating that with ScriptX you gain control of the units for specifying measurements. This sample also illustrates the scaled to fit preview and printing of a frame.
Illustrates the use of the printerControl, Jobs and Job objects.
An example workflow is for the user to print a customer receipt to a physical printer and the system will also print the same content to a PDF file using PDF output printer driver as an archive.NOTE: When working with ScriptX.Services v2.11 or later is required.
Various print operations with monitoring and timing to provide performance estimates.
It can be useful to provide the user with a targetted user interface rather than rely on all attributes being set in script. This sample illustrates listing the available printers and allowing the user to select the printer to use.
It can be useful to provide the user with a targetted user interface rather than rely on all attributes being set in script. This sample implements the Page setup and Print settings dialogs in a single HTML dialog.
This sample discusses the use of the WaitForSpoolingComplete() function emulation with ScriptX.Services in a variety of scenarios.
Print "remote" documents
Very often ScriptX is used to print the content of the document as it is displayed on the screen but there can also be a need to print a document downloaded from a server. The document might be static or generated in response to the request for the document.
The PrintHTML() method downloads and prints remote documents in the background.
PrintHTML() is a fire and forget method and if anything goes wrong no one will know other than nothing has appeared at the printer. The PrintHTMLEx() method provides for monitoring the progress of the job and notification of errors.
Printing a remote document occurs in the background. For ScriptX.Addon this can be in the same process as Internet Explorer or can be an external process. This sample shows the difference. For ScriptX.Services, all printing occurs in a separate process.
Printing a remote document occurs by downloading the document, loading to the print engine and then printing it. ScriptX 8 / ScriptX.Services adds support for documents using modern standards but this can have a negative impact on documents relyiong on older behaviour. This sample shows how to resolve these issues if they occur.
Working with client generated html
By using the html:// pseudo protocol, the PrintHTMLEx() method can print snippets of HTML.
These samples also illustrate mixing ScriptX.Add-on and ScriptX Services on the same page. So, the choice of technology will solely be based upon the browser you are using and if ScriptX.Add-on is available. The F12 tools can be used to examine the impact of document modes when using Internet Explorer.
An introduction to printing literal html with ScriptX.
This sample illustrates the behaviour of ScriptX v8 which fixes a bug that 'modern' html (e.g. rotated elements, modern box rules) could not be printed. Unfortunately the fix can introduce problems with old content. ScriptX 8 attempts to make compatible decisions but if it gets it wrong this shows how to enforce the correct processing for correct output.
Enhanced page layout
Enhanced page layout is the ability to use page headers and footers that use full html markup instead of simply text in a single font and to define the pages to print as more than a single range.
This capability is useful to provide a 'master' page style of working with logos etc. specified in script and the printed document content coming from the current page.
An Enhanced Formatting license is required in addition to a license for Advanced Printing.
A simple example showing the basics of using html markup in headers and footers.
There are no limits beyond what HTML can do.
This sample shows the use of enhanced page range specification; the ability to print arbitrary ranges of pages (rather than a single range) and print only odd, only even or both odd and even numbered pages.
An all-in-one sample by which you can explore the effect on output of each of the enhanced formatting options along with all the other options such as margins, the printer to use, orientation etc. This is the ultimate sample!
Printing PDF documents
ScriptX Enhanced PDF Printing provides for printing Adobe Acrobat (PDF) documents with control of the printer, paper etc to be used. Prompted or promptless printing is provided.
An Enhanced PDF Printing license is required in addition to a license for Advanced Printing.
To synchronously print a single PDF file, use the PrintPDF() API. The url of the PDF document to be printed is specified, the printer to use etc can be chosen by the user by utilising prompted printing.
Asynchronous printing of one or more files to the current printer is available with the BatchPrintPDF API. With batch printing, files are downloaded and printed in the background, allowing users to continue with other tasks on the displayed page.
If scripted control of the printer to use and other features is required when printing one or more documents, then features required are set and the BatchPrintPDF() API used.
If scripted control of the printer to use and other features is required when printing one or more documents along with progress information then the BatchPrintPDFEx() API used.
If your work flow requires sending PDF within a text stream such as xhtml or json then you will be generating base64 encoded PDF documents.
By use of a DataUrl, ScriptX can print the document removing the requirement for multiple output formats from your workflow.NOTE: ScriptX.Addon 126.96.36.199 or ScriptX.Services for Windows PC 188.8.131.52 or ScriptX.Services On Premise 184.108.40.206 (with ScriptX.Server 10.3.0.2 or later) is required.
If a PDF is being dynamically generated at the server it can be delivered as a Base64 encoded string to the browser and then printed by ScriptX using a Data URL to the encoded content.
With batch printing, encoded pdf documents are processed and printed in the background, allowing users to continue with other tasks on the displayed page.NOTE: ScriptX.Addon 220.127.116.11, or ScriptX.Server 10.3.0.2 or ScriptX.Services for Windows PC 18.104.22.168 or ScriptX.Services On Premise 22.214.171.124 or later is required.
Raw/Direct (labels) printing
Raw or "direct" printing is used to send streams of bytes to the printer without any interpretation. Print commannds and language sequences such as ZPL can be sent to appropriate printers for printing labels etc.
A ZPL compatible printer is required for these samples.
They also require that you are using either ScriptX.Addon or ScriptX.Services for Windows PC or ScriptX.Services for On Premise devices configured to use a suitable printer.
A Direct (RAW) Printing license is required in addition to a license for Advanced Printing.
For introduction this sample prints a simple label defined by a string of ZPL commands.
This sample allow you to enter the ZPL/EPL commands to send to your printer
Appropriate content may be downloaded from a server and sent to the printer. For example, a work-flow process may have generated the files to print or an API end point may return text. This example demonstrates using file containinng ZPL command sequences.
Working with and printing SVG
Uses simple SVG elements to illustrate support for SVG. An issue with SVG is that it can require scale factors outside the default range. ScriptX has solutions for this.
As above but the sample content is shown in a frame.
Illustrates the standard behaviour of your device and browser with some SVG charts without ScriptX.
Illustrates the control of printing SVG charts with ScriptX.
Miscellaneous use cases
Illustrates two sided (duplex) printing with the duplex2 property.
The DefaultPrinter() API is deliberately vague in its description. Exactly what is returned depends upon circumstances and it is unwise to depend a single meaning.
Body styling (css) does not appear to be working properly when print to PDF.
- 'How To' Guides
- Getting started
- Evaluate with modern code
- Maintaining investment in current code
- Printing with the API
- MeadCoScriptXJS Library
- Installing ScriptX.Services
- License deployment
- Security Manager
- Installing ScriptX on client PCs
- Basic printing with ScriptX
- Advanced printing features
- Backwards compatibility
- How to check if ScriptX is installed
- License deployment
- Quick start with Visual Studio
- Nuget Packages
- Client-side printing samples
- Technical Reference
- Web service API
- Service Description
- Orchestrator API
- ScriptX.Services compatibility roadmap
- Web service API
- Security Manager
- Change and history logs