1c36cf2e9Sopenharmony_ci/* 2c36cf2e9Sopenharmony_ci * Copyright (c) 2023-2023 Huawei Device Co., Ltd. 3c36cf2e9Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4c36cf2e9Sopenharmony_ci * you may not use this file except in compliance with the License. 5c36cf2e9Sopenharmony_ci * You may obtain a copy of the License at 6c36cf2e9Sopenharmony_ci * 7c36cf2e9Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8c36cf2e9Sopenharmony_ci * 9c36cf2e9Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10c36cf2e9Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11c36cf2e9Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12c36cf2e9Sopenharmony_ci * See the License for the specific language governing permissions and 13c36cf2e9Sopenharmony_ci * limitations under the License. 14c36cf2e9Sopenharmony_ci */ 15c36cf2e9Sopenharmony_ciimport print from '@ohos.print'; 16c36cf2e9Sopenharmony_ciimport { BusinessError } from '@ohos.base'; 17c36cf2e9Sopenharmony_ciimport CheckEmptyUtils from '../utils/CheckEmptyUtils'; 18c36cf2e9Sopenharmony_ciimport { Log } from '../utils/Log'; 19c36cf2e9Sopenharmony_ciimport { PrintUtil } from '../utils/PrintUtil'; 20c36cf2e9Sopenharmony_ciimport { CustomPrintJobState } from '../model/PrintBean'; 21c36cf2e9Sopenharmony_ciimport { StringUtil } from '../utils/StringUtil'; 22c36cf2e9Sopenharmony_ci 23c36cf2e9Sopenharmony_ciconst TAG: string = 'print_fwk'; 24c36cf2e9Sopenharmony_ci 25c36cf2e9Sopenharmony_ci/** 26c36cf2e9Sopenharmony_ci * defines print attributes. 27c36cf2e9Sopenharmony_ci */ 28c36cf2e9Sopenharmony_ciexport class PrintAttributes implements print.PrintAttributes { 29c36cf2e9Sopenharmony_ci copyNumber?: number; 30c36cf2e9Sopenharmony_ci pageRange?: PrinterRange; 31c36cf2e9Sopenharmony_ci pageSize?: PrintPageSize; 32c36cf2e9Sopenharmony_ci colorMode?: print.PrintColorMode; 33c36cf2e9Sopenharmony_ci duplexMode?: print.PrintDuplexMode; 34c36cf2e9Sopenharmony_ci directionMode?: print.PrintDirectionMode; 35c36cf2e9Sopenharmony_ci isSequential: boolean; /* Add a Variable */ 36c36cf2e9Sopenharmony_ci isLandscape: boolean; /* Add a Variable */ 37c36cf2e9Sopenharmony_ci options: string; /* Add a Variable */ 38c36cf2e9Sopenharmony_ci margin: PrintMargin; 39c36cf2e9Sopenharmony_ci 40c36cf2e9Sopenharmony_ci constructor(copyNumber: number, pageRange: PrinterRange, 41c36cf2e9Sopenharmony_ci isSequential: boolean, pageSize: PrintPageSize, isLandscape: boolean, 42c36cf2e9Sopenharmony_ci colorMode: print.PrintColorMode, duplexMode: print.PrintDuplexMode, margin: PrintMargin, 43c36cf2e9Sopenharmony_ci directionMode: print.PrintDirectionMode, options: string) { 44c36cf2e9Sopenharmony_ci this.copyNumber = copyNumber; 45c36cf2e9Sopenharmony_ci this.pageRange = pageRange; 46c36cf2e9Sopenharmony_ci this.pageSize = pageSize; 47c36cf2e9Sopenharmony_ci this.colorMode = colorMode; 48c36cf2e9Sopenharmony_ci this.duplexMode = duplexMode; 49c36cf2e9Sopenharmony_ci this.directionMode = directionMode; 50c36cf2e9Sopenharmony_ci this.isSequential = isSequential; 51c36cf2e9Sopenharmony_ci this.isLandscape = isLandscape; 52c36cf2e9Sopenharmony_ci this.margin = margin; 53c36cf2e9Sopenharmony_ci this.options = options; 54c36cf2e9Sopenharmony_ci } 55c36cf2e9Sopenharmony_ci} 56c36cf2e9Sopenharmony_ci 57c36cf2e9Sopenharmony_ci/** 58c36cf2e9Sopenharmony_ci * defines print margin. 59c36cf2e9Sopenharmony_ci */ 60c36cf2e9Sopenharmony_ciexport class PrintMargin implements print.PrintMargin { 61c36cf2e9Sopenharmony_ci top?: number; 62c36cf2e9Sopenharmony_ci bottom?: number; 63c36cf2e9Sopenharmony_ci left?: number; 64c36cf2e9Sopenharmony_ci right?: number; 65c36cf2e9Sopenharmony_ci 66c36cf2e9Sopenharmony_ci constructor(top: number, bottom: number, left: number, right: number) { 67c36cf2e9Sopenharmony_ci this.top = top; 68c36cf2e9Sopenharmony_ci this.bottom = bottom; 69c36cf2e9Sopenharmony_ci this.left = left; 70c36cf2e9Sopenharmony_ci this.right = right; 71c36cf2e9Sopenharmony_ci } 72c36cf2e9Sopenharmony_ci} 73c36cf2e9Sopenharmony_ci 74c36cf2e9Sopenharmony_ci/** 75c36cf2e9Sopenharmony_ci * defines print range. 76c36cf2e9Sopenharmony_ci */ 77c36cf2e9Sopenharmony_ciexport class PrinterRange implements print.PrinterRange { 78c36cf2e9Sopenharmony_ci startPage?: number; 79c36cf2e9Sopenharmony_ci endPage?: number; 80c36cf2e9Sopenharmony_ci pages?: Array<number>; 81c36cf2e9Sopenharmony_ci 82c36cf2e9Sopenharmony_ci constructor(startPage: number, endPage: number, pages: Array<number>) { 83c36cf2e9Sopenharmony_ci this.startPage = startPage; 84c36cf2e9Sopenharmony_ci this.endPage = endPage; 85c36cf2e9Sopenharmony_ci this.pages = pages; 86c36cf2e9Sopenharmony_ci } 87c36cf2e9Sopenharmony_ci} 88c36cf2e9Sopenharmony_ci 89c36cf2e9Sopenharmony_ci/** 90c36cf2e9Sopenharmony_ci * defines print preview attribute. 91c36cf2e9Sopenharmony_ci */ 92c36cf2e9Sopenharmony_ciexport class PreviewAttribute implements print.PreviewAttribute { 93c36cf2e9Sopenharmony_ci previewRange: PrinterRange; 94c36cf2e9Sopenharmony_ci result?: number; 95c36cf2e9Sopenharmony_ci 96c36cf2e9Sopenharmony_ci constructor(previewRange: PrinterRange, result: number) { 97c36cf2e9Sopenharmony_ci this.previewRange = previewRange; 98c36cf2e9Sopenharmony_ci this.result = result; 99c36cf2e9Sopenharmony_ci } 100c36cf2e9Sopenharmony_ci} 101c36cf2e9Sopenharmony_ci 102c36cf2e9Sopenharmony_ci/** 103c36cf2e9Sopenharmony_ci * defines print resolution. 104c36cf2e9Sopenharmony_ci */ 105c36cf2e9Sopenharmony_ciexport class PrintResolution implements print.PrintResolution { 106c36cf2e9Sopenharmony_ci id: string; 107c36cf2e9Sopenharmony_ci horizontalDpi: number; 108c36cf2e9Sopenharmony_ci verticalDpi: number; 109c36cf2e9Sopenharmony_ci} 110c36cf2e9Sopenharmony_ci 111c36cf2e9Sopenharmony_ciexport class PrintPageSize implements print.PrintPageSize { 112c36cf2e9Sopenharmony_ci id: string; 113c36cf2e9Sopenharmony_ci name: string; 114c36cf2e9Sopenharmony_ci width: number; 115c36cf2e9Sopenharmony_ci height: number; 116c36cf2e9Sopenharmony_ci 117c36cf2e9Sopenharmony_ci constructor(id: string, name: string, width: number, height: number) { 118c36cf2e9Sopenharmony_ci this.id = id; 119c36cf2e9Sopenharmony_ci this.name = name; 120c36cf2e9Sopenharmony_ci this.width = width; 121c36cf2e9Sopenharmony_ci this.height = height; 122c36cf2e9Sopenharmony_ci } 123c36cf2e9Sopenharmony_ci} 124c36cf2e9Sopenharmony_ci 125c36cf2e9Sopenharmony_ci/** 126c36cf2e9Sopenharmony_ci * defines print capability. 127c36cf2e9Sopenharmony_ci */ 128c36cf2e9Sopenharmony_ciexport class PrinterCapability implements print.PrinterCapability { 129c36cf2e9Sopenharmony_ci colorMode: number; 130c36cf2e9Sopenharmony_ci duplexMode: number; 131c36cf2e9Sopenharmony_ci pageSize: Array<PrintPageSize>; 132c36cf2e9Sopenharmony_ci resolution?: Array<PrintResolution>; 133c36cf2e9Sopenharmony_ci minMargin?: PrintMargin; 134c36cf2e9Sopenharmony_ci options?: string; /* Change Type*/ 135c36cf2e9Sopenharmony_ci} 136c36cf2e9Sopenharmony_ci 137c36cf2e9Sopenharmony_ci/** 138c36cf2e9Sopenharmony_ci * defines print info. 139c36cf2e9Sopenharmony_ci */ 140c36cf2e9Sopenharmony_ciexport class PrinterInfo implements print.PrinterInfo { 141c36cf2e9Sopenharmony_ci printerId: string; 142c36cf2e9Sopenharmony_ci printerName: string; 143c36cf2e9Sopenharmony_ci printerState: print.PrinterState; 144c36cf2e9Sopenharmony_ci printerIcon?: number; 145c36cf2e9Sopenharmony_ci description?: string; 146c36cf2e9Sopenharmony_ci capability?: PrinterCapability; 147c36cf2e9Sopenharmony_ci options?: string; 148c36cf2e9Sopenharmony_ci 149c36cf2e9Sopenharmony_ci constructor(printerId: string, printerName: string, printerState: print.PrinterState, printerIcon?: number, description?: string, 150c36cf2e9Sopenharmony_ci capability?: PrinterCapability, options?: string) { 151c36cf2e9Sopenharmony_ci this.printerId = printerId; 152c36cf2e9Sopenharmony_ci this.printerName = printerName; 153c36cf2e9Sopenharmony_ci this.printerState = printerState; 154c36cf2e9Sopenharmony_ci if (printerIcon) { 155c36cf2e9Sopenharmony_ci this.printerIcon = printerIcon; 156c36cf2e9Sopenharmony_ci } 157c36cf2e9Sopenharmony_ci if (description) { 158c36cf2e9Sopenharmony_ci this.description = description; 159c36cf2e9Sopenharmony_ci } 160c36cf2e9Sopenharmony_ci if (capability) { 161c36cf2e9Sopenharmony_ci this.capability = capability; 162c36cf2e9Sopenharmony_ci } 163c36cf2e9Sopenharmony_ci if (options) { 164c36cf2e9Sopenharmony_ci this.options = options; 165c36cf2e9Sopenharmony_ci } 166c36cf2e9Sopenharmony_ci } 167c36cf2e9Sopenharmony_ci 168c36cf2e9Sopenharmony_ci toString(): string { 169c36cf2e9Sopenharmony_ci return '[PrinterInfo printerId:' + StringUtil.splitMac(this.printerId) + 170c36cf2e9Sopenharmony_ci ' ,printerName:' + StringUtil.encodeCommonString(this.printerName) + 171c36cf2e9Sopenharmony_ci ' , printerState:' + this.printerState + ']'; 172c36cf2e9Sopenharmony_ci } 173c36cf2e9Sopenharmony_ci} 174c36cf2e9Sopenharmony_ci 175c36cf2e9Sopenharmony_ci/** 176c36cf2e9Sopenharmony_ci * PrinterInfo.options数据结构 177c36cf2e9Sopenharmony_ci */ 178c36cf2e9Sopenharmony_ciexport class PrinterCapsOptions { 179c36cf2e9Sopenharmony_ci supportedMediaTypes: number[]; 180c36cf2e9Sopenharmony_ci supportedQualities: number[]; 181c36cf2e9Sopenharmony_ci make: string; 182c36cf2e9Sopenharmony_ci printerUri: string; 183c36cf2e9Sopenharmony_ci} 184c36cf2e9Sopenharmony_ci 185c36cf2e9Sopenharmony_ci/** 186c36cf2e9Sopenharmony_ci * defines print job 187c36cf2e9Sopenharmony_ci */ 188c36cf2e9Sopenharmony_ciexport class PrintJob implements print.PrintJob { 189c36cf2e9Sopenharmony_ci jobFiles: Array<string>; /* Add a Variable */ 190c36cf2e9Sopenharmony_ci fdList: Array<number>; 191c36cf2e9Sopenharmony_ci jobId: string; 192c36cf2e9Sopenharmony_ci printerId: string; 193c36cf2e9Sopenharmony_ci jobState: print.PrintJobState; 194c36cf2e9Sopenharmony_ci jobSubstate: print.PrintJobSubState; 195c36cf2e9Sopenharmony_ci copyNumber: number; 196c36cf2e9Sopenharmony_ci pageRange: PrinterRange; 197c36cf2e9Sopenharmony_ci isSequential: boolean; 198c36cf2e9Sopenharmony_ci pageSize: PrintPageSize; 199c36cf2e9Sopenharmony_ci isLandscape: boolean; 200c36cf2e9Sopenharmony_ci colorMode: number; 201c36cf2e9Sopenharmony_ci duplexMode: number; 202c36cf2e9Sopenharmony_ci margin: PrintMargin; 203c36cf2e9Sopenharmony_ci preview: PreviewAttribute; 204c36cf2e9Sopenharmony_ci options: string; /* Change Type */ 205c36cf2e9Sopenharmony_ci 206c36cf2e9Sopenharmony_ci constructor(jobFiles: Array<string>, fdList: Array<number>, jobId: string, printerId: string, jobState: print.PrintJobState, 207c36cf2e9Sopenharmony_ci jobSubstate: print.PrintJobSubState, copyNumber: number, pageRange: PrinterRange, isSequential: boolean, 208c36cf2e9Sopenharmony_ci pageSize: PrintPageSize, isLandscape: boolean, colorMode: number, duplexMode: number, margin: PrintMargin, 209c36cf2e9Sopenharmony_ci preview: PreviewAttribute, options: string) { 210c36cf2e9Sopenharmony_ci this.jobFiles = jobFiles; 211c36cf2e9Sopenharmony_ci this.fdList = fdList; 212c36cf2e9Sopenharmony_ci this.jobId = jobId; 213c36cf2e9Sopenharmony_ci this.printerId = printerId; 214c36cf2e9Sopenharmony_ci this.jobState = jobState; 215c36cf2e9Sopenharmony_ci this.jobSubstate = jobSubstate; 216c36cf2e9Sopenharmony_ci this.copyNumber = copyNumber; 217c36cf2e9Sopenharmony_ci this.pageRange = pageRange; 218c36cf2e9Sopenharmony_ci this.isSequential = isSequential; 219c36cf2e9Sopenharmony_ci this.pageSize = pageSize; 220c36cf2e9Sopenharmony_ci this.isLandscape = isLandscape; 221c36cf2e9Sopenharmony_ci this.colorMode = colorMode; 222c36cf2e9Sopenharmony_ci this.duplexMode = duplexMode; 223c36cf2e9Sopenharmony_ci this.margin = margin; 224c36cf2e9Sopenharmony_ci this.preview = preview; 225c36cf2e9Sopenharmony_ci this.options = options; 226c36cf2e9Sopenharmony_ci } 227c36cf2e9Sopenharmony_ci} 228c36cf2e9Sopenharmony_ci 229c36cf2e9Sopenharmony_ciexport class PrinterExtensionInfo implements print.PrinterExtensionInfo { 230c36cf2e9Sopenharmony_ci extensionId: string; // extension id of printer extension 231c36cf2e9Sopenharmony_ci vendorId: string; // vendor id of extension 232c36cf2e9Sopenharmony_ci vendorName: string; // vendor name 233c36cf2e9Sopenharmony_ci vendorIcon: number; // resource id of vendor 234c36cf2e9Sopenharmony_ci version: string; // version of current printer extension 235c36cf2e9Sopenharmony_ci constructor(extensionId: string, vendorId: string, vendorName: string, vendorIcon: number, version: string) { 236c36cf2e9Sopenharmony_ci this.extensionId = extensionId; 237c36cf2e9Sopenharmony_ci this.vendorId = vendorId; 238c36cf2e9Sopenharmony_ci this.vendorName = vendorName; 239c36cf2e9Sopenharmony_ci this.vendorIcon = vendorIcon; 240c36cf2e9Sopenharmony_ci this.version = version; 241c36cf2e9Sopenharmony_ci } 242c36cf2e9Sopenharmony_ci} 243c36cf2e9Sopenharmony_ci 244c36cf2e9Sopenharmony_ci/** 245c36cf2e9Sopenharmony_ci * PrintJob.options数据结构 246c36cf2e9Sopenharmony_ci */ 247c36cf2e9Sopenharmony_ciexport class PrintJobOptions { 248c36cf2e9Sopenharmony_ci jobName: string; 249c36cf2e9Sopenharmony_ci jobNum: number; 250c36cf2e9Sopenharmony_ci jobDescription: string; 251c36cf2e9Sopenharmony_ci mediaType: string; 252c36cf2e9Sopenharmony_ci documentCategory: number; 253c36cf2e9Sopenharmony_ci printQuality: string; 254c36cf2e9Sopenharmony_ci printerName: string; 255c36cf2e9Sopenharmony_ci printerUri: string; 256c36cf2e9Sopenharmony_ci documentFormat: string; 257c36cf2e9Sopenharmony_ci files: string[]; 258c36cf2e9Sopenharmony_ci} 259c36cf2e9Sopenharmony_ciexport function startPrintJob(printJobInfo: PrintJob): Promise<boolean> { 260c36cf2e9Sopenharmony_ci Log.info(TAG, 'startPrintJob enter.'); 261c36cf2e9Sopenharmony_ci return new Promise((resolve) => { 262c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.isEmpty(printJobInfo)) { 263c36cf2e9Sopenharmony_ci Log.info(TAG, 'startPrintJob, printJobInfo invalid.'); 264c36cf2e9Sopenharmony_ci return resolve(false); 265c36cf2e9Sopenharmony_ci } 266c36cf2e9Sopenharmony_ci let printJob: print.PrintJob = convertToFwkPrintJob(printJobInfo); 267c36cf2e9Sopenharmony_ci Log.info(TAG, 'startPrintJob, jobId =' + JSON.stringify(printJobInfo.jobId)); 268c36cf2e9Sopenharmony_ci print.startPrintJob(printJob).then(() => { 269c36cf2e9Sopenharmony_ci Log.info(TAG, 'start print success.'); 270c36cf2e9Sopenharmony_ci resolve(true); 271c36cf2e9Sopenharmony_ci }).catch((err: BusinessError) => { 272c36cf2e9Sopenharmony_ci Log.error(TAG, 'failed to start Print because ' + JSON.stringify(err)); 273c36cf2e9Sopenharmony_ci return resolve(false); 274c36cf2e9Sopenharmony_ci }); 275c36cf2e9Sopenharmony_ci }); 276c36cf2e9Sopenharmony_ci} 277c36cf2e9Sopenharmony_ci 278c36cf2e9Sopenharmony_ciexport function queryAllPrintJobs(printerId?: string): Promise<Array<PrintJob>> { 279c36cf2e9Sopenharmony_ci return new Promise((resolve, reject) => { 280c36cf2e9Sopenharmony_ci print.queryPrintJobList().then((data: Array<print.PrintJob>) => { 281c36cf2e9Sopenharmony_ci Log.info(TAG, `queryAllPrintJobs data.length:${data.length}`); 282c36cf2e9Sopenharmony_ci let retPrintJobs: Array<PrintJob> = []; 283c36cf2e9Sopenharmony_ci for (let printJob of data) { 284c36cf2e9Sopenharmony_ci Log.debug(TAG, `queryAllPrintJobs printJob:${JSON.stringify(printJob)}`); 285c36cf2e9Sopenharmony_ci let printJobInfo = convertToSpoolerPrintJob(printJob); 286c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.isEmpty(printJobInfo)) { 287c36cf2e9Sopenharmony_ci Log.warn(TAG, 'queryAllPrintJobs invalid job.'); 288c36cf2e9Sopenharmony_ci continue; 289c36cf2e9Sopenharmony_ci } 290c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.checkStrIsEmpty(printerId) || printJobInfo.printerId === printerId) { 291c36cf2e9Sopenharmony_ci retPrintJobs.push(printJobInfo); 292c36cf2e9Sopenharmony_ci } 293c36cf2e9Sopenharmony_ci } 294c36cf2e9Sopenharmony_ci Log.info(TAG, `queryAllPrintJobs retPrintJobs.length: ${retPrintJobs.length}`); 295c36cf2e9Sopenharmony_ci resolve(retPrintJobs); 296c36cf2e9Sopenharmony_ci }).catch((err: BusinessError) => { 297c36cf2e9Sopenharmony_ci Log.error(TAG, `failed to queryAllPrintJobs Cause: ${JSON.stringify(err)}`); 298c36cf2e9Sopenharmony_ci return reject(err); 299c36cf2e9Sopenharmony_ci }); 300c36cf2e9Sopenharmony_ci }); 301c36cf2e9Sopenharmony_ci} 302c36cf2e9Sopenharmony_ci 303c36cf2e9Sopenharmony_ciexport function cancelPrintJob(jobId: string): void { 304c36cf2e9Sopenharmony_ci Log.info(TAG, 'cancelPrintJob enter.'); 305c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.checkStrIsEmpty(jobId)) { 306c36cf2e9Sopenharmony_ci Log.info(TAG, 'cancelPrintJob, jobId is empty.'); 307c36cf2e9Sopenharmony_ci return; 308c36cf2e9Sopenharmony_ci } 309c36cf2e9Sopenharmony_ci Log.info(TAG, 'cancelPrintJob jobId=' + jobId); 310c36cf2e9Sopenharmony_ci print.cancelPrintJob(jobId).then((data) => { 311c36cf2e9Sopenharmony_ci Log.info(TAG, 'cancel print success data: ' + JSON.stringify(data)); 312c36cf2e9Sopenharmony_ci }).catch((error: BusinessError) => { 313c36cf2e9Sopenharmony_ci Log.error(TAG, 'cancel print failed, because: ' + JSON.stringify(error)); 314c36cf2e9Sopenharmony_ci }); 315c36cf2e9Sopenharmony_ci Log.info(TAG, 'cancelPrintJob end.'); 316c36cf2e9Sopenharmony_ci} 317c36cf2e9Sopenharmony_ci 318c36cf2e9Sopenharmony_ciexport function isValidPrintJob(job: print.PrintJob): boolean { 319c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.isEmpty(job)) { 320c36cf2e9Sopenharmony_ci Log.info(TAG, 'isValidPrintJob job is empty.'); 321c36cf2e9Sopenharmony_ci return false; 322c36cf2e9Sopenharmony_ci } 323c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.checkStrIsEmpty(job.printerId) || CheckEmptyUtils.checkStrIsEmpty(job.jobId) || 324c36cf2e9Sopenharmony_ci !(PrintUtil.isValueInEnum(job.jobState, print.PrintJobState) || PrintUtil.isValueInEnum(job.jobState, CustomPrintJobState)) || 325c36cf2e9Sopenharmony_ci !PrintUtil.isValueInEnum(job.jobSubstate, print.PrintJobSubState)) { 326c36cf2e9Sopenharmony_ci return false; 327c36cf2e9Sopenharmony_ci } 328c36cf2e9Sopenharmony_ci return true; 329c36cf2e9Sopenharmony_ci} 330c36cf2e9Sopenharmony_ci 331c36cf2e9Sopenharmony_ciexport function convertToSpoolerPrintJob(job: print.PrintJob): PrintJob { 332c36cf2e9Sopenharmony_ci if (!isValidPrintJob(job)) { 333c36cf2e9Sopenharmony_ci return null; 334c36cf2e9Sopenharmony_ci } 335c36cf2e9Sopenharmony_ci return new PrintJob([], job.fdList, job.jobId, job.printerId, job.jobState as print.PrintJobState, job.jobSubstate, 336c36cf2e9Sopenharmony_ci job.copyNumber, job.pageRange, job.isSequential, job.pageSize, job.isLandscape, job.colorMode, 337c36cf2e9Sopenharmony_ci job.duplexMode, job.margin, job.preview, job.options as string); 338c36cf2e9Sopenharmony_ci} 339c36cf2e9Sopenharmony_ci 340c36cf2e9Sopenharmony_ciexport function convertToFwkPrintJob(printJobInfo: PrintJob): print.PrintJob { 341c36cf2e9Sopenharmony_ci let pageRangeInfo: PrinterRange; 342c36cf2e9Sopenharmony_ci if (printJobInfo.pageRange.pages.length === 0) { 343c36cf2e9Sopenharmony_ci pageRangeInfo = { startPage: printJobInfo.pageRange.startPage, endPage: printJobInfo.pageRange.endPage }; 344c36cf2e9Sopenharmony_ci } else { 345c36cf2e9Sopenharmony_ci pageRangeInfo = { pages: printJobInfo.pageRange.pages }; 346c36cf2e9Sopenharmony_ci } 347c36cf2e9Sopenharmony_ci // remove: preview, jobFiles 348c36cf2e9Sopenharmony_ci let printJob: print.PrintJob = { 349c36cf2e9Sopenharmony_ci fdList: printJobInfo.fdList, 350c36cf2e9Sopenharmony_ci jobId: printJobInfo.jobId, 351c36cf2e9Sopenharmony_ci printerId: printJobInfo.printerId, 352c36cf2e9Sopenharmony_ci jobState: printJobInfo.jobState, 353c36cf2e9Sopenharmony_ci jobSubstate: printJobInfo.jobSubstate, 354c36cf2e9Sopenharmony_ci copyNumber: printJobInfo.copyNumber, 355c36cf2e9Sopenharmony_ci pageRange: pageRangeInfo, 356c36cf2e9Sopenharmony_ci isSequential: printJobInfo.isSequential, 357c36cf2e9Sopenharmony_ci pageSize: printJobInfo.pageSize, 358c36cf2e9Sopenharmony_ci isLandscape: printJobInfo.isLandscape, 359c36cf2e9Sopenharmony_ci colorMode: printJobInfo.colorMode, 360c36cf2e9Sopenharmony_ci duplexMode: printJobInfo.duplexMode, 361c36cf2e9Sopenharmony_ci margin: printJobInfo.margin, 362c36cf2e9Sopenharmony_ci options: printJobInfo.options 363c36cf2e9Sopenharmony_ci }; 364c36cf2e9Sopenharmony_ci return printJob; 365c36cf2e9Sopenharmony_ci} 366c36cf2e9Sopenharmony_ci 367c36cf2e9Sopenharmony_ciexport function convertToPrinterInfo(info: print.PrinterInfo): PrinterInfo { 368c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.isEmpty(info)) { 369c36cf2e9Sopenharmony_ci return null; 370c36cf2e9Sopenharmony_ci } 371c36cf2e9Sopenharmony_ci let printerInfo: PrinterInfo = new PrinterInfo(info.printerId, info.printerName, info.printerState, info.printerIcon, info.description, 372c36cf2e9Sopenharmony_ci info.capability as PrinterCapability, info.options as string); 373c36cf2e9Sopenharmony_ci return printerInfo; 374c36cf2e9Sopenharmony_ci} 375