class PrintingTXTSample extends React.Component { constructor(props) { super(props); this.state = { txtContent: null, selectedPrinterIndex: 0, installedPrinters: [], printerName: "", printerTrayName: "", printerPaperName: "", fontName: "Arial", fontSize: 8, fontBold: false, fontItalic: false, fontUnderline: false, fontStrikethrough: false, textAlign: "Left", fontColor: "#000000", printOrientation: "Portrait", job: null }; } setInstalledPrinters(printersList) { this.setState({ installedPrinters: printersList }); this.state.printerName = printersList[0].name; this.updatePrintJob(); } setPrinterState(event) { this.setState({ selectedPrinterIndex: event.target.value }); this.state.printerName = this.state.installedPrinters[ event.target.value ].name; this.updatePrintJob(); } setData(event) { //no need for re-render this.state[event.target.name] = event.target.checked ? event.target.checked : event.target.value; this.updatePrintJob(); } setFontStyle(event) { //no need for re-render var val = event.currentTarget.classList.contains("active"); var name = event.currentTarget.querySelector("input").name; this.state[name] = val; this.updatePrintJob(); } setTextAlign(event) { //no need for re-render var val = event.currentTarget.classList.contains("active"); var name = event.currentTarget.querySelector("input").name; var textAlign = "Left"; if (val && name == "CenterAlign") textAlign = "Center"; if (val && name == "RightAlign") textAlign = "Right"; if (val && name == "JustifyAlign") textAlign = "Justify"; this.state["textAlign"] = textAlign; this.updatePrintJob(); } updatePrintJob() { //no need to re-render let cpj = new JSPM.ClientPrintJob(); cpj.clientPrinter = new JSPM.InstalledPrinter(this.state.printerName, false, this.state.printerTrayName, this.state.printerPaperName); if (this.state.txtContent) { let myTxtFile = new JSPM.PrintFileTXT( this.state.txtContent, "myFileToPrint.txt", 1 ); myTxtFile.textAligment = JSPM.TextAlignment[this.state.textAlign]; myTxtFile.fontName = this.state.fontName; myTxtFile.fontBold = this.state.fontBold; myTxtFile.fontItalic = this.state.fontItalic; myTxtFile.fontUnderline = this.state.fontUnderline; myTxtFile.fontStrikethrough = this.state.fontStrikethrough; myTxtFile.fontSize = this.state.fontSize; myTxtFile.fontColor = this.state.fontColor; myTxtFile.printOrientation = JSPM.PrintOrientation[this.state.printOrientation]; cpj.files.push(myTxtFile); } this.state.job = cpj; } componentDidMount() { //get client installed printers with detailed info JSPM.JSPrintManager.Caller = this; JSPM.JSPrintManager.getPrintersInfo().then(function(printersList) { JSPM.JSPrintManager.Caller.setInstalledPrinters(printersList); }); } doPrinting() { if (this.state.job) { let cpj = this.state.job; cpj.sendToClient(); } } render() { let demoContent; if (this.state.installedPrinters.length == 0) { demoContent = (

Getting printers info...
); } else { demoContent = (
Enter Text to print