npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

lpapi-ble-dd

v1.0.20240105

Published

蓝牙打印接口

Downloads

2

Readme

lpapi-ble-dd

lpapi-ble-dd 是一款基于钉钉小程序本身提供的BLE接口和canvas所封装的标签编辑及蓝牙打印接口,接口通过canvas来按照用户需要进行2D绘图,绘制完毕后将图片内容转换为打印机所支持的指令,然后通过BLE将数据发送到打印机,然后开始打印图片。

注意:本接口包仅针对德佟系列标签打印机

接口包的获取

  1. 通过 npm/yarn 直接下载安装;
npm install lpapi-ble-dd
// 或者
yarn add lpapi-ble-dd
  1. 打开德佟电子官方网站,点击软件下载, 选择SDK开发包下载,然后点击下载蓝牙打印钉钉小程序SDK(含API文档);

使用方法

  1. 引入接口实例

1.1 导入接口包

将下载后的接口包解压缩,然后将解压缩后的 lib 目录下的文件复制到路径合适的目录下,eg: "/js_sdk/lpapi-ble-dd/".

1.2 打开 index.axml 文件,创建一个隐藏的画布,用于进行标签的绘制,canvas 的宽高需要在创建打印任务后动态设置。

<canvas id="{{canvasId}}" width="{{labelWidth}}px" height="{{labelHeight}}px" style="position: fixed;left: -999999rpx;top: -999999rpx;" />

1.3 在目标js文件(eg: index.js)中引入接口包,然后创建接口实例。

import { LPAPIFactory } from "/js_sdk/lpapi-ble-dd/index.js";

export default {
    data() {
        return {
            canvasId: "dothan-lpapi-ble",
        };
    },
    onLoad() {
        this.lpapi = LPAPIFactory.getInstance({
            // 如果需要查看打印日志的话,可以在此配置日志显示状态,0表示不显示,4表示显示所有日志信息。
            // showLog: 4,	// 【可选】
            // 设置画布ID,第一步中创建的画布ID,全局唯一
            canvasId: this.canvasId, // 【必须】
        });
        // 搜索蓝牙设备
        this.lpapi.startBleDiscovery({
            // timeout = 0 表示搜索到匹配的打印机后自动停止搜索,不指定表示会一直搜索下去
            timeout: 0,
            deviceFound: (devices) => {
                // 更新打印机列表
            },
        });
    },
};
  1. 根据实际需要创建指定大小的打印任务,开始打印或者预览;
function printQrcode(data, callback) {
    // 标签宽度,单位毫米
    const labelWidth = 30;
    // 标签高度,单位毫米;
    const labelHeight = 30;
    // 标签转转方向,值为:0,90,180,270,默认为0,表示不做任何的旋转处理;
    const orientation = 0;
    // 二维码外边可以适当的留一点边距;
    const margin = 2;
    // 二维码大小

    const api = this.lpapi;
    // 创建指定大小的打印任务,单位毫米
    const jobInfo = api.startJob({
        width: labelWidth, // 【必填】标签宽度
        height: labelHeight, // 【必填】标签高度
        orientation: orientation, // 【可选】旋转方向
        jobName: "#!#preview#!#", // 【可选】 "#!#preview#!#" 和 "#!#transparent#!#" 是两个特殊的打印任务名称,主要供生成预览图片或者调试使用,不会打印,其他任何字符串都会直接打印;
    });
    // 更新画布大小,单位像素
    this.labelWidth = jobInfo.canvas.width;
    this.labelHeight = jobInfo.canvas.height;
    // 注意,在uni模式下更新canvas画布大小后,画布大小不会立即生效,需要等待画布尺寸更新之后在进行后续操作才可以;
    // 此处可以使用 nextTick或者直接启用定时器
    this.$nextTick(() => {
        // 绘制二维码
        api.draw2DQRCode({
            text: "测试测试测试测试测试测试",
            x: margin,
            y: margin,
            width: labelWidth - margin * 2,
            height: labelHeight - margin * 2,
        });
        //
        api.commitJob({
            complete: (resp) => {
                // 执行打印完毕回调函数
                if(resp.statusCode === 0) {
                    console.log("打印成功!");
                } else {
                    console.log("打印失败!");
                }
            },
        });
    });
}

接口介绍


interface InitOptions {
	/** 用于标签绘制的 canvas ID */
    canvasId: string;
	/** 是否显示相关日志信息 */
    showLog?: number|boolean;
}

export interface LPAPIFactory {
	/**
	 * 通过配置信息获取接口实例对象。
	 */
    static getInstance(context: InitOptions): LPAPI;
}

/**
 * 数据打印执行结果。
 */
export enum LPA_Result {
    /** 异步等待中 */
    ASYNC_WAIT = -1,
    /** 打印成功 */
    OK = 0,
    /** 参数错误 */
    ERROR_PARAM = 1,
    /** 未检测到打印机 */
    ERROR_NO_PRINTER = 2,
    /** 打印机未连接 */
    ERROR_DISCONNECTED = 3,
    /** 打印机链接失败 */
    ERROR_CONNECT_FAILED = 4,
    /** 数据Notify特征值启动失败 */
    ERROR_START_NOTIFICATION = 5,
    /** 数据发送失败 */
    ERROR_DATA_SEND_ERROR = 6,
    /** 数据接收异常,打印机无响应 */
    ERROR_DATA_RECEIVE_ERROR = 7,
    /** 打印机正在打印过程中不能打印其他标签 */
    ERROR_IS_PRINTING = 8,
    /** 指令发送响应超时 */
    ERROR_RESPONSE_TIMEOUT = 9,
    /** 打印任务被取消 */
    ERROR_JOB_CANCELED = 0x0a,
    /** 其他未知异常 */
    ERROR_OTHER = 0x10,
}

/**
 * 纸张间隔类型。
 */
export enum LPA_GapType {
    /** 随打印机设置 */
    Unset = 255,
    /** 连续纸(小票纸) */
    None = 0,
    /**
     * 定位孔
     * @deprecated
     */
    Hole = 1,
    /** 间隙纸 */
    Gap = 2,
    /** 黑标纸 */
    Black = 3,
}
/**
 * 打印速度常用值。
 *
 * 实际有效值为1到5之间,其他表示随打印机设置。
 */
export enum LPA_PrintSpeed {
    /** 随打印机设置 */
    Unset = 255,
    /** 最慢 */
    Min = 1,
    /** 较慢 */
    Low = 2,
    /** 正常速度 */
    Normal = 3,
    /** 较块 */
    High = 4,
    /** 最快 */
    Max = 5,
}
/**
 * 打印浓度常用枚举值。
 *
 * 打印浓度可以1到15之间的任意值,其他表示随打印机设置。
 */
export enum LPA_PrintDarkness {
    /** 随打印机设置 */
    Unset = 255,
    /** 最淡 */
    Min = 1,
    /** 较淡 */
    Low = 4,
    /** 正常浓度 */
    Normal = 6,
    /** 较浓 */
    High = 10,
    /** 最浓 */
    Max = 15,
}
interface LPAPI {
    /**
     * 获取 LPAPI 接口单实例。
     *
     * @param printer 外部提供的打印机设备接口。
     * @returns {LPAPI} LPAPI 接口实例对象。
     */
    static getInstance(adapter?: LPAPIContext): LPAPI;
    /**
     * 设置有效的打印机型号。
     */
    static setPrinterModels(models?: string): void;
    /**
     * 异步加载图片 URL。
     * 图片的绘制需要加载完毕之后才可以进行canvas绘制,否则可能会不显示。
     */
    loadImage(src: string, callback?: (image: HTMLImageElement | string | null) => void): Promise<HTMLImageElement | string | null>;
    /**
     * 开始搜索打印机设备。
     *
     * @param options 蓝牙打印机搜索相关现象;
     * @param {string|undefined} options.models 只搜索指定型号的打印机设备;
     * @param {number|undefined} options.timeout 搜索超时时间,
     *      undefined : 表示一直搜索,当用户调用 {@link stopBleDiscovery} 接口的时候或者链接打印机的时候,自动停止;
     *      0         :表示搜索到目标打印机后立即停止搜索;
     *      number    : 用户指定的超时时间到了之后,自动停止搜索;
     * @param {number|undefined} interval 设备搜索上报的时间间隔;
     * @param {(devices: IBleDevice[]) => void} deviceFound 检测到设备时的回调函数;
     * @param {(result: IBleAdapterStateChangeResult) => void} adapterStateChange 搜索状态变化时的回调函数;
     * @param {(resp: IResponse<any>) => void} success 搜索蓝牙设备启动成功时的回调函数;
     * @param {(resp: IResponse<any>) => void} fail 搜索蓝牙设备启动失败时的回调函数;
     * @param {(resp: IResponse<any>) => void} complete 搜索蓝牙设备启动成功或失败时的回调函数;
     *
     * @returns {Promise<IResponse<any>>} 等同于 complete回调函数。
     */
    startBleDiscovery(options?: IBleDiscoveryOptions<IResponse<any>>): Promise<IResponse<any>>;
    /**
     * 停止蓝牙设备搜索操作。
     */
    stopBleDiscovery(): Promise<any>;
    /**
     * 搜索指定型号或者名称的打印机。
     *
     * @param models 目标打印机型号或名称。
     * @param timeout 搜索超时时间,默认为0,表示搜索到目标设备后立即停止。
     */
    searchPrinter(models?: string, timeout?: number): Promise<IBleDevice | undefined>;
    /**
     * 获取缓存的打印机列表。
     *
     * @return {LPA_Device[]} 返回打印机设备列表。
     */
    getPrinters(): IBleDevice[];
    /**
     * 获取已连接的打印机名称。
     */
    getPrinterInfo(): IPrinterInfo | undefined;
    /**
     * 判断打印机是否已打开。
     */
    isPrinterOpened(): boolean;
    /**
     * 打开指定的打印机。
     *
     * @param {string|LPA_Printer|undefined} printer 打印机名称或对象。
     *
     * @param {string|undefined} printer.printerName 目标打印机名称。
     * @param {string|undefined} printer.ip 目标打印机IP地址,不指定表示链接本地打印机。
     *
     * @return {Promise<boolean>} 目标打印机链接成功与否。
     */
    openPrinter(options?: IOpenDeviceOptions<IResponse<any>> | string | ((resp: IResponse<any>) => void)): Promise<boolean>;
    /**
     * 关闭已经打开的打印机。
     *
     * @info 关闭打印机时,当前还有未打印的任务/数据将会被自动提交打印,同时所有参数设置将会被保留。
     */
    closePrinter(): Promise<boolean>;
    /**
     * 创建打印任务。
     *
     * 创建打印任务时,如果没有链接打印机,则本函数会自动打开当前系统安装的第一个 LPAPI 支持的打印机,用于打印。
     * 当前还有未打印的任务,已有打印数据将会被全部丢弃。
     *
     * @param {JobStartOptions} options 标签任务选项。
     *
     * @param {number} options.width 标签宽度,单位毫米,值默认为{@link CONSTANTS.LABEL_WIDTH}。
     * @param {number} options.height 标签高度,单位毫米,值默认为{@link CONSTANTS.LABEL_HEIGHT}。
     * @param {0|90|180|270} options.orientation 标签打印方向,`0`表示不旋转,`90`表示右转90度,`180`表示180度旋转,`270`表示左转90度,默认为0。
     * @param {string|undefined} options.jobName 打印任务名称,特殊情况下的任务不进行打印,可用于生成对应的预览图片,
     *          预览时的值可参考:{@link LPA_JobNames},默认为{@link LPA_JobNames.Print},表示打印任务。
     * @param {number} options.dpi 打印头分辨率(值默认为203);
     * @param {HTMLImageElement | undefined} options.backgroundImage 背景图,预览模式下有效;
     * @param {string|undefined} options.backgroundColor 背景色,预览模式下有效
     *
     * @returns {JobStartResult|undefined} 返回打印任务及画布相关信息。
     */
    startJob(options: JobStartOptions): JobStartResult | undefined;
    /**
     * 获取当前打印任务的预览图片。
     */
    toDataURL(): string;
    /**
     * 通过回调方式获取 canvas 画布中的二进制数据。
     *
     * @param callback ImageData数据获取回调函数。
     */
    getImageData(callback: (data: ImageData | undefined) => void): void;
    /**
     * 提交打印任务,进行真正的打印。
     *
     * @param {LPA_JobCommitOptions|undefined} options 相关打印参数。
     *
     * @param {number|undefined} options.threshold 图片进行黑白转换时的阈值,默认为{@link CONSTANTS.THRESHOLD},也即:192。
     * @param {LPA_PrintSpeed|undefined} options.speed 打印速度,默认随打印机设置。
     * @param {LPA_PrintDarkness|undefined} options.darkness 打印浓度,默认随打印机设置。
     * @param {LPA_GapType|undefined} options.gapType 纸张类型,默认随打印机设置。
     * @param {(resp: IResponse<string>) => void} options.success 打印任务处理成功回调函数;
     * @param {(resp: IResponse<string>) => void} options.fail 打印任务处理失败回调函数;
     * @param {(resp: IResponse<string>) => void} options.complete 打印任务处理完毕回调函数;
     */
    commitJob(options?: LPA_JobCommitOptions<IResponse<string>>): Promise<IResponse<string>>;
    /*********************************************************************
     * 绘制相关内容。
     *********************************************************************/
    /**
     * 绘制文本。
     *
     * regionCorners regionLeftUpCorner regionRightUpCorner regionRightBottomCorner
     * regionLeftBottomCorner regionLeftBorders regionRightBorders,这些参数都是长度
     * 数组,建议都是通过数组来传递参数,这样接口会对长度都自动转发为接口使用的 0.01mm 的
     * 单位。为了调试方便,这些参数也支持逗号分隔的字符串方式来参数。但是此时参数必须调用者
     * 自己转发为 0.01mm 为单位的长度数据。
     *
     * @param {DrawTextOptions} options 文本绘制相关选项。
     *
     * @param {string|string[]} options.text 待绘制的文本数据。
     * @param {number|undefined} options.x 绘制对象的水平坐标位置,单位毫米。值默认为0。
     * @param {number|undefined} options.y 绘制对象的垂直坐标位置,单位毫米。值默认为0。
     * @param {number|undefined} options.width 绘制对象的显示宽度,单位毫米。
     *          值默认为0,表示绘制宽度不做限制。
     * @param {number|undefined} options.height 绘制对象的显示高度,单位毫米。
     *          值默认为0,表示高度不做显示,以实际高度显示。
     * @param {string|undefined} options.fontName 绘制对象的字体名称,值默认为{@link CONSTANTS.FONT_NAME}。
     * @param {number} options.fontHeight 绘制对象的字体高度,单位毫米,
     *          值默认为{@link CONSTANTS.FONT_HEIGHT}。
     * @param {LPA_FontStyle|undefined} options.fontStyle 字体样式。
     * @param {LPA_AutoReturnMode|undefined} options.autoReturn 自动换行模式,默认为{@link LPA_AutoReturnMode.Char}。
     *          {@link LPA_AutoReturnMode.None}:没有自动换行;
     *          {@link LPA_AutoReturnMode.Char}:按字换行;
     *          {@link LPA_AutoReturnMode.Word}:按词换行。
     * @param {number|undefined} options.charSpace 字符间距,默认为0,单位毫米。
     * @param {number|string|undefined} options.lineSpace 行间距,单位毫米,
     *          或为枚举字符串(1_0,1_2,1_5,2_0)。默认为 1_0,也即单倍行距。
     *          格式为:`[Width, Y, Height, Width, Y, Height]`,单位毫米。
     * @param {number[]|string|undefined} regionRightBorders 显示区域右边的删除矩形,最多支持删除两个矩形,
     *          格式为:`[Width, Y, Height, Width, Y, Height]`,单位毫米。
     * @param {boolean|undefined} onlyMeasureText 表示仅仅度量、而不真正的绘制文本。
     * @param {0|90|180|270|undefined} options.orientation 旋转角度,0、90、180、270。
     *          不指定表示使用 {@link setItemOrientation()} 设置的参数。默认为0,表示不旋转。
     * @param {LPA_ItemAlignment|undefined} options.horizontalAlignment 水平对齐方式。不指定表示使用 {@link setItemHorizontalAlignment()} 设置的参数,
     *          默认为{@link LPA_ItemAlignment.Start},表示居左对齐。
     * @param {LPA_ItemAlignment|undefined} options.verticalAlignment 垂直对齐方式。不指定表示使用 {@link setItemVerticalAlignment()} 设置的参数,
     *          默认为: {@link LPA_ItemAlignment.Start},表示居上对齐。
     */
    drawText(options: DrawTextOptions): void;
    /**
     * 打印一维条码。
     *
     * @param {DrawBarcodeOptions} options 一维码绘制相关选项。
     *
     * @param {string} options.text 待绘制的一维码数据。
     * @param {number|undefined} options.x 绘制对象的水平坐标位置,单位毫米。值默认为0。
     * @param {number|undefined} options.y 绘制对象的垂直坐标位置,单位毫米。值默认为0。
     * @param {number|undefined} options.width 绘制对象的显示宽度,单位毫米。
     *          值默认为0,表示根据 {@link barPixels} 设定的点的大小自动计算对象宽度。
     * @param {number|undefined} options.height 绘制对象的显示高度,单位毫米。
     *          值默认为0,表示根据 {@link barPixels} 设定的点的大小自动计算对象宽度。
     * @param {number|undefined} options.textHeight 一维码中供人识读文本的高度,单位毫米,
     *          值默认为0,表示不显示一维码下面的字符串。
     * @param {LPA_BarcodeType|undefined} options.type 一维码类型,默认为{@link LPA_BarcodeType.LPA_1DBT_AUTO},表示根据字符串自动采用最佳方式。
     * @param {string|undefined} options.fontName 一维码中供人识读文本的字体名称,默认为{@link CONSTANTS.FONT_NAME}。
     * @param {LPA_FontStyle|undefined} options.fontStyle 一维码供人识读文本的字体风格,默认为{@link LPA_FontStyle.Regular},表示显示常规字体样式。
     * @param {LPA_ItemAlignment|undefined} options.textAlignment 一维码供人识读文本的水平对齐方式,值参考{@link LPA_ItemAlignment},
     *          >= 5 表示表示跟随一维码本身的水平对齐方式,默认为{@link LPA_ItemAlignment.Center},也即居中对齐。
     * @param {LPA_BarcodeFlags|undefined} options.barcodeFlags 一维码编码参数标志,值参考{@link LPA_BarcodeFlags},默认为 ShowReadDown | ShowStartStop | EanCheckCode。
     * @param {number} options.barPixels 在不指定一维码宽度的情况下,一维码中每个逻辑点的像素大小,单位像素,值为 1 - 7 之间的任意值,默认为2。
     * @param {number|undefined} options.textBarSpace 一维码供人识读文本和条码的垂直间距,单位毫米,默认为约2个像素。
     * @param {0|90|180|270|undefined} options.orientation 旋转角度,0、90、180、270。
     *          不指定表示使用 {@link setItemOrientation()} 设置的参数。默认为0,表示不旋转。
     * @param {LPA_ItemAlignment|undefined} options.horizontalAlignment 水平对齐方式。不指定表示使用 {@link setItemHorizontalAlignment()} 设置的参数,
     *          默认为{@link LPA_ItemAlignment.Start},表示居左对齐。
     * @param {LPA_ItemAlignment|undefined} options.verticalAlignment 垂直对齐方式。不指定表示使用 {@link setItemVerticalAlignment()} 设置的参数,
     *          默认为: {@link LPA_ItemAlignment.Start},表示居上对齐。
     */
    draw1DBarcode(options: Draw1DBarcodeOptions): void;
    /**
     * 打印 QrCode 二维码。
     *
     * @param {DrawQrcodeOptions} options QRCode二维码绘制相关参数。
     *
     * @param {string} options.text 待绘制的二维码数据。
     * @param {number|undefined} options.x 绘制对象的水平坐标位置,单位毫米。
     * @param {number|undefined} options.y 绘制对象的垂直坐标位置,单位毫米。
     * @param {number|undefined} options.width 绘制对象的显示宽度,单位毫米
     *          值默认为0,表示根据 {@link qrcPixels} 设定的点的大小自动计算二维码大小。
     * @param {number|undefined} options.height 绘制对象的显示高度,不指定表示按照:{@link width} 来显示,单位毫米。
     * @param {number|number} options.version 二维码编码最小版本号,1~40,默认为根据内容自动计算。
     * @param {LPA_QREccLevel|undefined} options.eccLevel 二维码纠错模式,值参考{@link LPA_QREccLevel},默认为{@link LPA_QREccLevel.EccLevel_L}。
     * @param {0|90|180|270|undefined} options.orientation 旋转角度,0、90、180、270。
     *          不指定表示使用 {@link setItemOrientation()} 设置的参数。默认为0,表示不旋转。
     * @param {LPA_ItemAlignment|undefined} options.horizontalAlignment 水平对齐方式。不指定表示使用 {@link setItemHorizontalAlignment()} 设置的参数,
     *          默认为{@link LPA_ItemAlignment.Start},表示居左对齐。
     * @param {LPA_ItemAlignment|undefined} options.verticalAlignment 垂直对齐方式。不指定表示使用 {@link setItemVerticalAlignment()} 设置的参数,
     *          默认为: {@link LPA_ItemAlignment.Start},表示居上对齐。
     */
    draw2DQRCode(options: DrawQRCodeOptions): void;
    /**
     * 打印 Pdf417 二维码。
     *
     * @param {DrawPdf417Options} options PDF417二维码绘制选项。
     *
     * @param {string} options.text 待绘制的PDF417二维码数据。
     * @param {number|undefined} options.x 绘制对象的水平坐标位置,单位毫米,值默认为0。
     * @param {number|undefined} options.y 绘制对象的垂直坐标位置,单位毫米,值默认为0。
     * @param {number|undefined} options.width 绘制对象的显示宽度,单位毫米
     *          值默认为0,表示根据 {@link p417Pixels} 设置的大小自动计算二维码宽度。
     * @param {number|undefined} options.height 绘制对象的显示高度,单位毫米
     *          值默认为0,表示根据 {@link p417Pixels} 设置的大小自动计算二维码高度。
     * @param {LPA_P417EccLevel|undefined} options.eccLevel 二维码纠错模式,值参考{@link LPA_P417EccLevel},默认为{@link LPA_P417EccLevel.Auto}。
     * @param {0|90|180|270|undefined} options.orientation 旋转角度,0、90、180、270。
     *          不指定表示使用 {@link setItemOrientation()} 设置的参数。默认为0,表示不旋转。
     * @param {LPA_ItemAlignment|undefined} options.horizontalAlignment 水平对齐方式。不指定表示使用 {@link setItemHorizontalAlignment()} 设置的参数,
     *          默认为{@link LPA_ItemAlignment.Start},表示居左对齐。
     * @param {LPA_ItemAlignment|undefined} options.verticalAlignment 垂直对齐方式。不指定表示使用 {@link setItemVerticalAlignment()} 设置的参数,
     *          默认为: {@link LPA_ItemAlignment.Start},表示居上对齐。
     */
    draw2DPdf417(options: DrawPDF417Options): void;
    /**
     * 打印 DataMatrix 二维码。
     *
     * @param {DrawDataMatrixOptions} options DataMatrix 二维码绘制选项。
     *
     * @param {string} options.text 待绘制的二维码数据。
     * @param {number|undefined} options.x 绘制对象的水平坐标位置,单位毫米。
     * @param {number|undefined} options.y 绘制对象的垂直坐标位置,单位毫米。
     * @param {number|undefined} options.width 绘制对象的显示宽度,单位毫米
     *          值默认为0,表示根据 {@link dmtxPixels} 设定的点的大小自动计算二维码大小。
     * @param {number|undefined} options.height 绘制对象的显示高度,不指定表示按照:{@link width} 来显示,单位毫米。
     * @param {number|number} options.symbolShape
     * @param {0|90|180|270|undefined} options.orientation 旋转角度,0、90、180、270,默认为0,表示不旋转。
     * @param {LPA_ItemAlignment|undefined} options.horizontalAlignment 水平对齐方式。不指定表示使用 {@link setItemHorizontalAlignment()} 设置的参数,
     *          默认为{@link LPA_ItemAlignment.Start},表示居左对齐。
     * @param {LPA_ItemAlignment|undefined} options.verticalAlignment 垂直对齐方式。不指定表示使用 {@link setItemVerticalAlignment()} 设置的参数,
     *          默认为: {@link LPA_ItemAlignment.Start},表示居上对齐。
     * @returns 成功与否。
     */
    draw2DDataMatrix(options: DrawDataMatrixOptions): void;
    /**
     * 绘制矩形框。
     *
     * @param {DrawRectOptions} options 矩形框绘制相关选项。
     *
     * @param {number|undefined} options.x 矩形的水平位置,单位毫米,值默认为0。
     * @param {number|undefined} options.y 矩形的垂直位置,单位毫米,值默认为0。
     * @param {number|undefined} options.width 矩形的水平宽度,单位毫米,默认为{@link CONSTANTS.RECT_WIDTH}。
     * @param {number|undefined} options.height 矩形的垂直高度,单位毫米,值默认与宽度相同。
     * @param {number|undefined} options.cornerWidth 矩形的圆角宽度,单位毫米,值默认为0。
     * @param {number|undefined} options.cornerHeight 矩形的圆角高度,单位毫米,值默认为0。
     * @param {number|undefined} options.lineWidth 圆角矩形的线宽,单位毫米,值默认为{@link CONSTANTS.LINE_WIDTH}。
     * @param {boolean|undefined} options.fill 是否绘制填充圆角矩形,值默认为false,表示显示矩形边框。
     * @param {0|90|180|270|undefined} options.orientation 旋转角度,0、90、180、270。
     *          不指定表示使用 {@link setItemOrientation()} 设置的参数。默认为0,表示不旋转。
     */
    drawRectangle(options: DrawRectOptions): boolean | void;
    /**
     * 绘制椭圆边框。
     *
     * @param {DrawRectOptions} 椭圆绘制相关选项。
     *
     * @param {number|undefined} options.x 椭圆的水平位置,单位毫米,值默认为0。
     * @param {number|undefined} options.y 椭圆的垂直位置,单位毫米,值默认为0。
     * @param {number|undefined} options.width 椭圆的水平宽度,单位毫米,值默认为{@link CONSTANTS.RECT_WIDTH}。
     * @param {number|undefined} options.height 椭圆的垂直高度,单位毫米,值默认与宽度相同。
     * @param {number|undefined} options.lineWidth 椭圆的线宽,单位毫米,值默认为{@link CONSTANTS.LINE_WIDTH}。
     * @param {boolean|undefined} options.fill 是否绘制填充椭圆,默认为false,表示绘制椭圆边框。
     * @param {0|90|180|270|undefined} options.orientation 旋转角度,0、90、180、270。
     *          不指定表示使用 {@link setItemOrientation()} 设置的参数。默认为0,表示不旋转。
     */
    drawEllipse(options: DrawBorderOptions): boolean;
    /**
     * 绘制圆形。
     *
     * @param {DrawCircleOptions} options 圆形绘制相关参数。
     *
     * @param {number|undefined} options.x 水平方向上的圆心坐标位置,单位毫米,值默认为0。
     * @param {number|undefined} options.y 垂直方向上的圆心坐标位置,单位毫米,值默认为0。
     * @param {number|undefined} options.radius 圆形半径,单位毫米,值默认为{@link CONSTANTS.RADIUS}。
     * @param {number|undefined} options.lineWidth 圆形边框宽度,单位毫米,值默认为{@link CONSTANTS.LINE_WIDTH}。
     * @param {boolean|undefined} options.fill 是否绘制填充圆形,默认为false,表示只绘制圆形边框。
     */
    drawCircle(options: DrawCircleOptions): boolean;
    /**
     * 绘制直线。
     *
     * @param {DrawLineOptions} options 直线绘制相关选项。
     *
     * @param {number|undefined} options.x1 点划线起点位置,单位毫米,值默认为0。
     * @param {number|undefined} options.y1 点划线起点位置,单位毫米,值默认为0。
     * @param {number|undefined} options.x2 点划线终点位置,单位毫米,值默认等于x1。
     * @param {number|undefined} options.y2 点划线终点位置,单位毫米,值默认等于y1。
     * @param {number|undefined} options.lineWidth lineWidth: 直线线宽,单位毫米,值默认为{@link CONSTANTS.lineWidth}。
     * @param {number[]|undefined} options.dashLens 点化线线段长度的数组。
     * @param {0|90|180|270|undefined} options.orientation 旋转角度,0、90、180、270。
     *          不指定表示使用 {@link setItemOrientation()} 设置的参数。默认为0,表示不旋转。
     */
    drawLine(options: DrawLineOptions): void;
    /**
     *  打印指定的URL图片。
     *
     * @param {DrawImageUrlOptions} options URL图片绘制相关选项。
     *
     * @param {CanvasImageSource} options.img 图片对象。
     * @param {number|undefined} options.x 绘制对象的水平坐标位置,单位毫米,值默认为0。
     * @param {number|undefined} options.y 绘制对象的垂直坐标位置,单位毫米,值默认为0。
     * @param {number|undefined} options.width 绘制对象的显示宽度,单位毫米,值默认为0,表示图片的实际大小。
     * @param {number|undefined} options.height 绘制对象的显示高度,单位毫米,值默认为0,表示图片的实际大小。
     * @param {number|undefined} options.threshold 图片黑白打印的灰度阈值。
     *          0 表示使用参数设置中的值;
     *          256 表示取消黑白打印,用灰度打印;
     *          257 表示直接打印图片原来的颜色。
     * @param {0|90|180|270|undefined} options.orientation 旋转角度,0、90、180、270。
     *          不指定表示使用 {@link setItemOrientation()} 设置的参数。默认为0,表示不旋转。
     *
     * @info        如果之前没有调用 StartPage 而直接进行打印,则打印函数会自动调用 StartPage开始一打印页面,然后进行打印。
     * @info        打印位置和宽度高度是基于当前页面的位置和方向,不考虑页面和打印动作的旋转角度。
     * @info        图片打印时会被缩放到指定的宽度和高度。
     * @info        标签打印都是黑白打印,因此位图会被转变成灰度图片(RGB三分量相同,0~255取值的颜色)之后,然后根据一阀值将位图再次转换黑白位图再进行打印。
     *              默认灰度阀值为 192,也就是说 >= 192 的会被认为是白色,而 < 192 的会被认为是黑色。
     */
    drawImage(options: DrawImageOptions): boolean;
}