Migration and maintaining investment summary and review

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 2 - Printing with ScriptX.Services

The final document is:

<html>
<head>
<title>MeadCo's ScriptX</title>
</head>
<body>
<!-- MeadCo Security Manager -->
<object id="secmgr" viewastext style="display:none"
  classid="clsid:5445be81-b796-11d2-b931-002018654e2e">
  <param name="GUID" value="370000ed-d40c-43d4-b3d3-f2e7d2eff47d" />
  <param name="PATH" value="https://licenses.meadroid.com/download/{370000ed-d40c-43d4-b3d3-f2e7d2eff47d}/mlf" />
  <param name="REVISION" value="0" />
  <param name="PerUser" value="true">
</object>
<!-- MeadCo ScriptX -->
<object viewastext id="factory" style="display:none"
  classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814">
</object>
<div style="font:bold 32pt courier new; text-align: justify; letter-spacing: -1px">
For nearly 20 years MeadCo's ScriptX - now installed on many millions of Windows PCs - has enabled document
 authors to script print-time attributes such as margin sizes, orientation, HTML & standard headers and 
footers, paper source, target printer, prompt-free printing and much more ... <br><br>
-> -> -></div>
<!-- new UI -->
<div>
<button id="btn-print">Print</button> <button id="btn-preview">Preview</button>
</div>
<!-- scriptx.services requires jquery -->
<script src="https://cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js"></script>

<!-- Add.on to scriptx.services compatibility -->
<script src="//cdn.jsdelivr.net/npm/scriptxprint-html@1.6.2/dist/meadco-scriptxservices.min.js"
	data-meadco-license="370000ed-d40c-43d4-b3d3-f2e7d2eff47d"
    data-meadco-server="http://127.0.0.1:41191"
	data-meadco-license-path="warehouse"
	data-meadco-license-revision="0"
	data-meadco-syncinit="true"
>
</script>

<!-- leave current script as is, it will work .. to minimise effort -->
<script>
function initView() {
    factory.printing.enhancedFormatting.allPagesHeader =
    "<div><center><img src='http://services.meadroid.com/images/sx-header.png'></center></div>";
    factory.printing.enhancedFormatting.allPagesFooter =
    "<div><center><img src='http://services.meadroid.com/images/sx-footer-final.png'></center></div>";
    factory.printing.SetMarginMeasure(2) // set inches
    factory.printing.header = ""
    factory.printing.footer = ""
    factory.printing.leftMargin = 1.0
    factory.printing.topMargin = 1.5
    factory.printing.rightMargin = 1.0
    factory.printing.bottomMargin = 1.5
}
</script>

<!-- new UI script -->
<script type="text/javascript">
$(window).on("load",function() {
    initView();
	$("#btn-print").click(function() {
		factory.printing.Print();
	});

	$("#btn-preview").click(function() {
		factory.printing.Preview();
	});
});
</script>
</body>
</html>

If the additions made to provide an on document UI are excluded, a few lines of code have been added to achieve use from anywhere:

<!-- Add.on to scriptx.services compatibility -->
<script src="//cdn.jsdelivr.net/npm/scriptxprint-html@1.6.2/dist/meadco-scriptxservices.min.js"
    data-meadco-license="370000ed-d40c-43d4-b3d3-f2e7d2eff47d"
    data-meadco-server="http://127.0.0.1:41191"
	data-meadco-license-path="warehouse"
	data-meadco-license-revision="0"
	data-meadco-syncinit="true"
>
</script>

And it is arguable that is one line made readable by using several lines.

However, as with the document we started with, there is no error checking, no ensuring that the license is available. The code runs synchronously which is now deprecated and there is no prompt when printing.

Improving the code and starting to deal with these issues will be the subject of the next article.

Next up: Stage 4 - Error reporting.