HarmonyOS 鸿蒙Next三方应用如何调用@ohos.print进行打印

发布于 1周前 作者 itying888 来自 鸿蒙OS

HarmonyOS 鸿蒙Next三方应用如何调用@ohos.print进行打印



关于HarmonyOS 鸿蒙Next三方应用如何调用@ohos.print进行打印的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。


更多关于HarmonyOS 鸿蒙Next三方应用如何调用@ohos.print进行打印的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

更多关于HarmonyOS 鸿蒙Next三方应用如何调用@ohos.print进行打印的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


三方应用可以通过以下步骤调用`[@ohos](/user/ohos).print`进行打印:

1. 权限要求:

   - 需要申请`ohos.permission.PRINT`权限。

   - 系统能力要求为`SystemCapability.Print.PrintFramework`。

2. 打印文件准备:

   - 待打印的文件可以是图片(如.jpg、.png、.gif、.webp)或PDF文件。

   - 如果是系统应用,需要调用`uriPermissionManager.grantUriPermission()`接口给打印应用授权。

3. 打印方法:

   - 使用`print`方法进行打印,可以选择使用回调函数或Promise异步回调。

   - 以下是几种常见的打印方法:

     - `print(files: Array<string>, callback: AsyncCallback<PrintTask>): void` 

     - `print(files: Array<string>): Promise<PrintTask>`

     - `print(files: Array<string>, context: Context, callback: AsyncCallback<PrintTask>): void`

     - `print(files: Array<string>, context: Context): Promise<PrintTask>`

     - `print(jobName: string, printAdapter: PrintDocumentAdapter, printAttributes: PrintAttributes, context: Context): Promise<PrintTask>`

其中最后一个print函数第三方应用程序实现此第二个参数PrintDocumentAdapter接口来渲染要打印的文件

onStartLayoutWrite(jobId: string, oldAttrs: PrintAttributes, newAttrs: PrintAttributes, fd: number, writeResultCallback: (jobId: string, writeResult: PrintFileCreationState) => void): void实现这个接口来更新要打印文件,使用writeResultCallback回调。

cke_9922.png

通过fd来传递图片文件

示例代码:

import { print } from '[@kit](/user/kit).BasicServicesKit';

import { BusinessError } from '[@ohos](/user/ohos).base';

class MyPrintDocumentAdapter implements print.PrintDocumentAdapter {

    onStartLayoutWrite(jobId: string, oldAttrs: print.PrintAttributes, newAttrs: print.PrintAttributes, fd: number,

        writeResultCallback: (jobId: string, writeResult: print.PrintFileCreationState) => void) {

        writeResultCallback(jobId, print.PrintFileCreationState.PRINT_FILE_CREATED);

    };

    onJobStateChanged(jobId: string, state: print.PrintDocumentAdapterState) {

        if (state == print.PrintDocumentAdapterState.PREVIEW_DESTROY) {

            console.log('PREVIEW_DESTROY');

        } else if (state == print.PrintDocumentAdapterState.PRINT_TASK_SUCCEED) {

            console.log('PRINT_TASK_SUCCEED');

        } else if (state == print.PrintDocumentAdapterState.PRINT_TASK_FAIL) {

            console.log('PRINT_TASK_FAIL');

        } else if (state == print.PrintDocumentAdapterState.PRINT_TASK_CANCEL) {

            console.log('PRINT_TASK_CANCEL');

        } else if (state == print.PrintDocumentAdapterState.PRINT_TASK_BLOCK) {

            console.log('PRINT_TASK_BLOCK');

        }

    }

}

回到顶部