ScriptX - Controlled and Consistent Print Output
  • Getting started
  • My Account
  • Downloads
  • Features
    • ScriptX.Services
    • ScriptX.Add-on
  • Pricing & Licensing
    • ScriptX.Services
    • ScriptX.Add-on
    • Deployment
  • Case Studies
  • About Us
  • Blog
  • Developers
    • Knowledge Bank 
      • ‘How To’ Guides
      • Technical Reference
      • Samples
    • About ScriptX.Services
    • Developer Downloads
    • Codestore
    • Community
  • Contact
Developers ›  Knowledge Bank ›  How To Guides ›  ScriptX.Services ›  Then To Now ›  Stage 8

Recommendations for some common issues

This walk-through illustrates taking a classic document that has a controlled print experience and works only in Internet Explorer and making it work with ScriptX.Services in any browser on any platform using the minimum amount of development effort and making as few changes as possible (though more changes might be desirable).

Previously : Stage 7 - WaitForSpoolingComplete
How to determine if ScriptX.Services or ScriptX.Addon is in use.

In general it should not be necessary to determine which is in use, especiially if the  MeadCoScriptXJS Library is in use as its methods do the necessary checking for you. However it does also provide the.

IsServices() function.

For example, when ScriptX.Services is in use it might be appropriate to dig into the implementation for more information:

if (MeadCo.ScriptX.IsServices()) {
	// ScriptX.Services v2.9.0 or later is required.
	MeadCo.ScriptX.Print.serviceDescriptionAsync(
		function (sd) { $("#info").text(".Services version: " 
			+ MeadCo.ScriptX.GetComponentVersion("scriptx.services")); },
		function (e) {
			console.warn("serviceDescriptionAsync failed: " + e);
			$("#info").text(".Services javascript library version: " 
				+ MeadCo.ScriptX.GetComponentVersion("scriptx.factory.services") 
				+ " - **please update your .Services server**");
		}
	);
}
else {
	$("#info").text(".Addon version: " + MeadCo.ScriptX.GetComponentVersion("scriptx.factory"));
}

If MeadCoScriptXJS is not being used due to a requirement to make bare minimal changes to pre-existing code targetting ScriptX.Addon then the presence of a function can be used as a signal that ScriptX.Services is in use rather than ScriptX.Addon as the latter will not implement the function.

For example, the implementation of WaitForSpoolingComplete() for ScriptX.Services requires an additional callback argument in order to work properly with ScriptX.Services:

// If ScriptX.Services client libraries are handling printing then wait for the print to spool.
// .Addon does this automatically (within limits)
if (typeof factory.printing.PolyfillInit === "function") {
    factory.printing.WaitForSpoolingComplete(-1, function () {
        self.close();
    });
}
else {
    self.close();
}
  • Knowledge Bank
  • 'How To' Guides
    • ScriptX.Add-on
      • Introduction
      • Installing ScriptX on client PCs
      • Basic printing with ScriptX
      • Advanced printing features
      • Backwards compatibility
      • How to check if ScriptX is installed
      • MeadCoScriptXJS Library
      • License deployment
      • Client-side printing samples
    • ScriptX.Services
      • Introduction
      • Getting started
      • Maintaining investment in current code
        • Stage 1: Adding UI
        • Stage 2: Printing with ScriptX.Services
        • Stage 3: Summary and review
        • Stage 4: Error reporting
        • Stage 5: Prompted printing
        • Stage 6: Preparing for advanced uses
        • Stage 7: WaitForSpoolingComplete
        • Stage 8: Recommendations for some common issues
      • MeadCoScriptXJS Library
      • Printing with the API
      • Installing ScriptX.Services
        • For Windows PC v1
        • For On Premise Devices hosted on Windows Server v1
        • For On Premise Devices hosted on Windows 10 v1
        • Cloud
      • Debugging
      • License deployment
        • For Windows PC
        • For On Premise Devices
      • Samples
        • Configure for Windows PC
        • Configure for On Premise
        • Configure for Cloud
    • Security Manager
      • Deploying a license or revision
  • Technical Reference
    • ScriptX.Add-on
      • factory
        • baseUrl
        • ComponentVersionString
        • IsUniqueIDAvailable
        • OnDocumentComplete
        • relativeUrl
        • ResetUniqueID
        • ScriptXVersion
        • SecurityManagerVersion
        • Shutdown
        • UniqueID
      • printing
        • AddPrinterConnection
        • BatchPrintPDF
        • BatchPrintPDFEx
        • bottomMargin
        • collate
        • copies
        • currentPrinter
        • DefaultPrinter
        • disableUI
        • duplex
        • duplex2
        • EnumJobs
        • EnumPrinters
        • footer
        • GetJobsCount
        • GetMarginMeasure
        • header
        • headerFooterFont
        • IsSpooling
        • IsTemplateSupported
        • leftMargin
        • onafterprint
        • onbeforeprint
        • onbeforeunload
        • onpagesetup
        • onuserpagesetup
        • onuserprint
        • onuserprintpreview
        • orientation
        • OwnQueue
        • pageHeight
        • PageSetup
        • pageWidth
        • paperSize
        • paperSource
        • paperSource2
        • portrait
        • Preview
        • Print
        • printBackground
        • printer
        • PrintHTML
        • PrintHTMLEx
        • PrintPDF
        • PrintSetup
        • printToFileName
        • RemovePrinterConnection
        • rightMargin
        • SetMarginMeasure
        • SetPageRange
        • SetPreviewZoom
        • SetPrintScale
        • Sleep
        • templateURL
        • topMargin
        • TotalPrintPages
        • unprintableBottom
        • unprintableLeft
        • unprintableRight
        • unprintableTop
        • WaitForSpoolingComplete
      • printerControl
        • attributes
        • Bins
        • Forms
        • isLocal
        • isNetwork
        • isShared
        • Jobs
        • location
        • name
        • Pause
        • port
        • Purge
        • Resume
        • serverName
        • shareName
        • status
      • Job
        • Delete
        • Pause
        • Restart
        • Resume
      • enhancedFormatting
        • allFooterHeight
        • allHeaderHeight
        • allPagesFooter
        • allPagesHeader
        • extraFirstFooterHeight
        • extraFirstPageFooter
        • firstFooterHeight
        • firstHeaderHeight
        • firstPageFooter
        • firstPageHeader
        • pageRange
        • printingPass
      • rawPrinting
        • printer
        • printDocument
        • printString
    • ScriptX.Services
      • Web service API
        • Service Description
          • (GET)
        • Licensing
          • licensing (GET)
          • licensing (POST)
          • licensing/ping (GET)
        • PrintHtml
          • settings (GET)
          • deviceinfo (GET)
          • htmlPrintDefaults (GET)
          • print (POST)
          • status (GET)
          • download (GET)
          • canceljob (PUT)
        • PrintPdf
          • print (POST)
          • status (GET)
          • download (GET)
        • PrintDirect
          • print (POST)
    • Security Manager
      • How it works
      • License Expiry
      • Testing for a valid license
      • About the license file (.mlf)
        • LICENSE
        • APPLICENSE
        • TITLE
        • DOMAINS
        • DOMAIN
        • PERMISSION
      • API
        • Apply
        • License
        • result
        • validLicense
  • Articles
    • Dialogs with ScriptX.Services
 
© 2025 Mead & Co Limited. Version: 4.2.8-R.20210726.1 | Privacy Policy
© 2025 Mead & Co Limited. v1.0.2
X

Warning:

This ScriptX.Add-on sample can only be viewed using Internet Explorer.