This example illustrates how to load the MRT report template from the server side and send it to the client. First of all, you should add Stimulsoft modules and other required modules to the project. This can be done using the
require()
standard function:
var http = require("http");
var fs = require('fs');
// Stimulsoft Reports module
var Stimulsoft = require("stimulsoft-reports-js");
For the correct rendering of reports and accurate calculation of the sizes of all elements, you should load the fonts you are going to use. In this example, the Roboto-Black font is used, load it using a special
addOpentypeFontFile()
static method. The font will be loaded and added to the internal font collection:
// Loading fonts
Stimulsoft.Base.StiFontCollection.addOpentypeFontFile("report/Roboto-Black.ttf");
Next, you should define the
accept()
function that will process requests to the server and output the desired result at a specific URL address - an HTML page, script and style files, a rendered report:
function accept(req, res) {
//Send index.html
if (req.url == "/") {
res.writeHeader(200, { "Content-Type": "text/html" });
res.end(fs.readFileSync("index.html"));
}
//Send style.css
else if (req.url == "/stimulsoft.viewer.office2013.whiteblue.css") {
res.writeHeader(200, { "Content-Type": "text/css" });
res.end(fs.readFileSync("node_modules/stimulsoft-reports-js/Css/stimulsoft.viewer.office2013.whiteblue.css"));
}
//Send reports.js
else if (req.url == "/stimulsoft.reports.js") {
res.writeHeader(200, { "Content-Type": "text/javascript" });
res.end(fs.readFileSync("node_modules/stimulsoft-reports-js/Scripts/stimulsoft.reports.js"));
}
//Send viewer.js
else if (req.url == "/stimulsoft.viewer.js") {
res.writeHeader(200, { "Content-Type": "text/javascript" });
res.end(fs.readFileSync("node_modules/stimulsoft-reports-js/Scripts/stimulsoft.viewer.js"));
}
//Send report
else if (req.url == "/getReport") {
// Creating new report
var report = new Stimulsoft.Report.StiReport();
// Loading report template
report.loadFile("SimpleList.mrt");
// Renreding report
report.renderAsync(function () {
// Saving rendered report to JSON string
var reportJson = report.saveDocumentToJsonString();
//Send report
res.end(reportJson);
});
}
}
All is ready, start the server and specify the required port, in this case, 8888:
console.log("Static file server running at http://localhost:" + 8888 + "/\nCTRL + C to shutdown");
//The HTTP server run on port 8888
http.createServer(accept).listen(8888);
In the screenshot below you can see the result of the sample code: