UNPKG

print-js

Version:

A tiny javascript library to help printing from the web.

58 lines (45 loc) 1.74 kB
import Print from './print' import { cleanUp } from './functions' export default { print: (params, printFrame) => { // Check if we have base64 data if (params.base64) { const bytesArray = Uint8Array.from(atob(params.printable), c => c.charCodeAt(0)) createBlobAndPrint(params, printFrame, bytesArray) return } // Format pdf url params.printable = /^(blob|http|\/\/)/i.test(params.printable) ? params.printable : window.location.origin + (params.printable.charAt(0) !== '/' ? '/' + params.printable : params.printable) // Get the file through a http request (Preload) const req = new window.XMLHttpRequest() req.responseType = 'arraybuffer' req.addEventListener('error', () => { cleanUp(params) params.onError(req.statusText, req) // Since we don't have a pdf document available, we will stop the print job }) req.addEventListener('load', () => { // Check for errors if ([200, 201].indexOf(req.status) === -1) { cleanUp(params) params.onError(req.statusText, req) // Since we don't have a pdf document available, we will stop the print job return } // Print requested document createBlobAndPrint(params, printFrame, req.response) }) req.open('GET', params.printable, true) req.send() } } function createBlobAndPrint (params, printFrame, data) { // Pass response or base64 data to a blob and create a local object url let localPdf = new window.Blob([data], { type: 'application/pdf' }) localPdf = window.URL.createObjectURL(localPdf) // Set iframe src with pdf document url printFrame.setAttribute('src', localPdf) Print.send(params, printFrame) }