JS Simple Wrapper Library

Introduction

Once you know what is available, working with ScriptX to achieve controlled printing of html/xhtml documents in Internet Explorer is reasonably simple.

When working with ScriptX, the use of properties and methods can be thought of as 'namespaced' to factory.printing - assuming you follow the common naming convention. Within that 'namespace' there are properties such as headers, footers, orientation, margin, units of measure, page range to print etc. etc. and then there are methods to print; print() and printHTML().

There are some operations that require a few lines of script to wrap functionality into a more usable form - for example:

  • obtaining the list of installed printers,
  • checking that a license has been accepted,
  • checking that ScriptX is available,
  • obtaining version numbers of installed components.

MeadCo ScriptX JS Library

A small JavaScript library is available on GitHub in source form (open source with an MIT license) or on NuGet as a package that can be installed to ASP.NET projects being developed with Microsoft Visual Studio.

The library is used throughout our samples to simplify common tasks and to hide the few minor differences there are between different versions of ScriptX. Our samples also make use of jQuery to build the UI but the library has no dependency on jQuery.

The library is free to use and deploy, and works with both free and licensed ScriptX. Obviously use of licensed functionality on ScriptX still requires a license.

Using the library

NOTE: The library assumes that the MeadCo Factory object is declared on the page with the element id 'factory' and, if relevant, the MeadCo Security Manager object is present with element id 'secmgr'.

  1. To use the library, download it from a suitable source and add it to your project. For example, when using Visual Studio it is easiest to Package Manager to add the package from NuGet to your project.

  2. Link to the implementation file, this will be meadco-scriptx-{version}.js in documents using ScriptX. For example:

    <script src="/scripts/meadco-scriptx-1.0.2.js" type="text/javascript"></script>
    

    When using ASP.NET 4.5 or MVC 4 or later, we recommend the use of bundles as this simplifies the use of minified versions of the library.

  3. Initialise the library in the document ready/window loaded event handler, and initialise printing parameters. For example, for basic usage when using jQuery:

    <script type="text/javascript">
       $(function () {
         if (MeadCo.ScriptX.Init()) {
           MeadCo.ScriptX.Printing.header = 
              "MeadCo's ScriptX&b:&p of &P:&bBasic Printing Sample";
           MeadCo.ScriptX.Printing.footer = 
              "The de facto standard for advanced web-based printing";
           MeadCo.ScriptX.Printing.orientation = "landscape";
           $("#btnprint").click(function() { 
                MeadCo.ScriptX.PrintPage(false);
           });
         }      
       });
    </script>
    

    Or, with jQuery and licensed usage and to check the license was accepted before making calls:

    <script type="text/javascript">
      // do not use document.ready() as the license 
      // may still be loading (on older browsers aka IE6)
      $(window).load(function() { 
        if (MeadCo.ScriptX.Init()) {
          if ( MeadCo.Licensing.IsLicensed() ) {
            MeadCo.ScriptX.Printing.SetMarginMeasure(2);
            with ( MeadCo.ScriptX.Printing ) {
              header =  "MeadCo's ScriptX&b:&p of &P:&bPrinting Sample";
              footer = "The de facto standard for advanced web-based printing";
              orientation = "landscape";
              topMargin = 1;
              leftMargin = 1;
            }
            $("#btnprint").click(function() {
             MeadCo.ScriptX.Printing.PrintHTML("http://www.meadroid.com",false);
            });
          }
          else {
           MeadCo.Licensing.ReportError("This sample requires a license.");
         }
        }
    });
    </script>
    

Summary of features in the library

  • The namespace MeadCo.ScriptX contains a number of useful functions for initialising the library and accessing commonly required functionality.

  • The namespace MeadCo.Licensing contains functionality for checking that a license was accepted.

  • The object MeadCo.ScriptX.Utils is the 'factory' object.

  • The object MeadCo.ScriptX.Printing is the 'factory.printing'  object.