class PrintingPDFSample extends React.Component { constructor(props) { super(props); this.state = { pdfFile: null, selectedPrinterIndex: 0, installedPrinters: [], printerName: "", printerTrayName: "", printerPaperName: "", printAnnotations: false, printAsGrayscale: false, printInReverseOrder: false, printRange: "", printRotation: "None", job: null }; } setPdfFile(event) { //no need to re-render if (event.target.name == "input-local-pdf-file") this.state.pdfFile = Array.from(event.target.files); else this.state.pdfFile = [event.target.value]; } 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(); } f; 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.pdfFile) { let myPdfFile; if (this.state.pdfFile[0].name) myPdfFile = new JSPM.PrintFilePDF( this.state.pdfFile[0], JSPM.FileSourceType.BLOB, this.state.pdfFile[0].name, 1 ); else myPdfFile = new JSPM.PrintFilePDF( this.state.pdfFile[0], JSPM.FileSourceType.URL, "myFileToPrint.pdf", 1 ); myPdfFile.printAnnotations = this.state.printAnnotations; myPdfFile.printAsGrayscale = this.state.printAsGrayscale; myPdfFile.printInReverseOrder = this.state.printInReverseOrder; myPdfFile.printRange = this.state.printRange; myPdfFile.printRotation = JSPM.PrintRotation[this.state.printRotation]; cpj.files.push(myPdfFile); } 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 = (