UNPKG

@fto-consult/expo-ui

Version:

Bibliothèque de composants UI Expo,react-native

36 lines • 1.57 kB
import {isElectron} from "$cplatform"; import electronPrint from "./print.electron"; import {isTouchDevice} from "$cplatform"; import {canPostWebviewMessage,postWebviewMessage,logRNWebview,WEBVIEW_SAVE_FILE_EVENT} from "$cutils/rn-webview"; import {defaultStr,getFileExtension} from "$cutils"; import DateLib from "$clib/date"; export default function print(pdfMakeInstance,options,...rest){ if(isElectron()){ return electronPrint(pdfMakeInstance,options,...rest); } logRNWebview("printing pdf, check if can post react native webview message ? "+canPostWebviewMessage()); if(canPostWebviewMessage()){ let fileName = defaultStr(options?.fileName); if(!fileName){ fileName = "printed-pdf-"+DateLib.format(new Date(),"dd-mm-yyyy HH MM ss"); } logRNWebview(`will print native webview on filename +`+fileName); return pdfMakeInstance.getBase64((content)=>{ const ext = getFileExtension(fileName,true); if(!ext || ext.toLowerCase() !=="pdf"){ fileName+=".pdf"; } logRNWebview("printing pdf file",options?.fileName,WEBVIEW_SAVE_FILE_EVENT); return postWebviewMessage(WEBVIEW_SAVE_FILE_EVENT,{ content, contentType : 'application/pdf', fileName, isBase64 : true, }); }) } if(isTouchDevice()){ return pdfMakeInstance.open({},window); } return pdfMakeInstance.print({...options,...rest}); }