lpapi-dtpweb
v1.5.251121
Published
一款基于dtpweb打印助手的标签打印机接口
Downloads
89
Readme
lpapi-spp-cdv
lpapi-dtpweb 是一款基于 PC端的 dtpweb打印助手进行数据传输的标签打印接口,接口通过H5所提供的canvas来按照用户需要进行2D绘图,绘制完毕后将图片内容转换为打印机所支持的指令,然后通过打印助手将数据发送到打印机,然后开始打印。
安装接口包及依赖
- 通过 npm/yarn 直接下载安装;
npm install lpapi-dtpweb
// 或者
yarn add lpapi-dtpweb- lpapi-dtpweb 是通过dtpweb打印助手进行数发送的,所以在使用该接口前,需要安装打印助手。一般情况下在安装驱动的时候,默认会自动安装打印助手的。
使用方法
- 初始化接口实例(初始化之后才可以正常使用);
// 如果是在cli模式下通过 npm或者yarn安装的插件,则通过如下方式引入接口:
import { LPAPIFactory } from "lpapi-dtpweb";
export default {
mounted() {
this.lpapi = LPAPIFactory.getInstance({
// 如果需要查看打印相关日志,需要配置 logLevel,值为 0 - 4,0表示不显示调试信息,4表示显示所有调试信息
// logLevel: 4, // 【可选】
});
// 在使用页面初始化的时候,最好调用下 checkServer,检查下打印助手是否可用,如果打印助手可用,然后搜索打印机设备,更新打印机列表。
this.lpapi.checkPlugin().then((resp) => {
if (resp.statusCode === 0) {
// 插件检测成功,更新打印机列表,
this.lpapi.startDiscovery({
deviceFound: (devices) => {
console.warn("发现打印机列表:", devices);
updatePrinterList(devices);
},
});
// 预览标签内容
handlePreviewLabel();
}
});
},
};- 根据实际需要创建指定大小的打印任务,开始打印或者预览;
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画布大小后,画布大小不会立即生效,需要等待画布尺寸更新之后在进行后续操作才可以;
// 绘制二维码
api.draw2DQRCode({
text: "测试测试测试测试测试测试",
x: margin,
y: margin,
width: labelWidth - margin * 2,
height: labelHeight - margin * 2,
});
//
api.commitJob({
complete: (resp) => {
// 执行打印完毕回调函数
if (typeof callback === "function") {
callback(true);
}
},
});
}接口介绍
interface InitOptions {
/** 是否显示相关日志信息 */
logLevel?: number;
}
export interface LPAPIFactory {
/**
* 通过配置信息获取接口实例对象。
*/
static getInstance(context: InitOptions): LPAPI;
}
interface DTPWeb {
/**
* 获取 LPAPI 接口单实例。
*
* @param printer 外部提供的打印机设备接口。
* @returns {LPAPI} LPAPI 接口实例对象。
*/
static getInstance(adapter?: LPAPIContext): LPAPI;
/**
* 设置有效的打印机型号。
*/
static setPrinterModels(models?: string): void;
/**
* 检查打印助手是否可用。
* LPA_Response.statusCode === 0 表示打印助手可用,否则不可用。
*/
checkPlugin(options?: LPA_CheckPluginOptions): Promise<LPA_Response<LPA_ServerInfo>>;
/**
* 获取标签打印所需要的设备管理器。
*/
get DeviceManager(): IDeviceManager;
/**
* 修改标签打印所需要的设备管理器。
*/
set DeviceManager(manager: IDeviceManager);
/**
* 获取接口的绘制上下文环境。
*/
getContext(): DrawContext;
get Context(): DrawContext;
get Printer(): DzPrinter;
/**
* 获取定位相关信息。
* 备注:部分打印机支持,并且当前只支持北斗定位。
*/
requestPositioningInfo(options?: Record<string, any>): Promise<LPA_Response<string | import("./lpapi/DzPrinter").IPositioningInfo>>;
/**
* 设置标签绘制的绘制上下文对象。
*/
setDrawContext(value: DrawContext): void;
/**
* 创建绘制上下文环境。
* 本接口主要是针对 UniApp 开发环境的,因为在 UniApp 中不支持离屏canvas,在不同的页面中接口所关联的绘制上下文不一样。
*/
createDrawContext(options: LPA_CreateContextOptions): DrawContext | undefined;
/**
* 异步加载图片 URL。
* 图片的绘制需要加载完毕之后才可以进行canvas绘制,否则可能会不显示。
*/
loadImage(options: string | ImageLoadOptions, callback?: (image: HTMLImageElement | DzImage | null) => void): Promise<HTMLImageElement | DzImage | null>;
/**
* 以图片的方式来加载目标HTML字符串。
* @param html 目标html字符串。
* @returns 生成的 Image 对象。
*/
loadHtml(html: string | HTMLElement): Promise<HTMLImageElement | DzImage | null>;
/**
* 设置支持的打印机型号列表。
* @param models 接口所支持的打印机型号列表,多个型号可以通过";"进行分割。
*/
setSupportPrefixes(models: string | string[]): void;
setSupportTrades(trades: string | string[]): void;
/**
* 打开蓝牙适配器。
*/
openAdapter(options?: LPA_OpenAdapterOptions): Promise<LPA_Response<any>>;
/**
* @deprecated 请使用 {@link startDiscovery} 代替。
*/
startBleDiscovery(options?: LPA_BleDiscoveryOptions): Promise<LPA_Response<any>>;
/**
* 开始搜索打印机设备。
*
* @param {LPA_BleDiscoveryOptions|undefined} options 蓝牙打印机搜索相关现象;
* @param {string|undefined} options.models 只搜索指定型号的打印机设备;
* @param {number|undefined} options.timeout 搜索超时时间,
* undefined : 表示一直搜索,当用户调用 {@link stopBleDiscovery} 接口的时候或者链接打印机的时候,自动停止;
* 0 :表示搜索到目标打印机后立即停止搜索;
* number : 用户指定的超时时间到了之后,自动停止搜索;
* @param {number|undefined} interval 设备搜索上报的时间间隔;
* @param {(devices: LPA_BleDevice[]) => void} deviceFound 检测到设备时的回调函数;
* @param {(result: LPA_BleAdapterStateChangeResult) => void} adapterStateChange 搜索状态变化时的回调函数;
* @param {(resp: LPA_Response<any>) => void} success 搜索蓝牙设备启动成功时的回调函数;
* @param {(resp: LPA_Response<any>) => void} fail 搜索蓝牙设备启动失败时的回调函数;
* @param {(resp: LPA_Response<any>) => void} complete 搜索蓝牙设备启动成功或失败时的回调函数;
*
* @returns {Promise<LPA_Response<any>>} 等同于 complete回调函数。
*/
startDiscovery(options?: LPA_BleDiscoveryOptions): Promise<LPA_Response<any>>;
/**
* 停止蓝牙设备搜索操作。
*
* @deprecated 请使用 {@link stopDiscovery} 代替。
*/
stopBleDiscovery(): Promise<any>;
/**
* 停止蓝牙设备搜索操作。
*/
stopDiscovery(): Promise<any>;
/**
* 搜索指定型号或者名称的打印机。
*
* @param models 目标打印机型号或名称。
* @param timeout 搜索超时时间,默认为0,表示搜索到目标设备后立即停止。
*/
searchPrinter(options?: LPA_DeviceSearchOptions): Promise<LPA_BleDevice | undefined>;
/**
* 获取缓存的打印机列表。
*
* @return {LPA_Device[]} 返回打印机设备列表。
*/
getPrinters(): LPA_BleDevice[];
/**
* 获取已连接的打印机名称。
*/
getPrinterInfo(): IPrinterInfoExt | undefined;
/**
* 获取打印头宽度。
* 注意:调用此接口之前最好先链接打印机,如果打印机未连接,则获取到的默认打印头宽度为48毫米。
*/
getPrinterWidthMM(): number;
/**
* 判断打印机是否已打开。
*/
isPrinterOpened(): boolean;
isConnected(): boolean;
isJobPaused(): boolean;
/**
* 打开指定的打印机。
*
* @param {LPA_DeviceOpenOptions|undefined} options 打印机链接相关参数;
*
* @param {string|undefined} options.name 目标设备名称;
* @param {string|undefined} options.deviceId 目标设备ID;
* @param {(resp: LPA_BleConnectionCloseOptions) => void} options.connectionStateChange 打印机断开时的回调函数;
*
* @return {Promise<LPA_Response<any>>} 设备链接结果信息。
*/
openPrinter(options?: LPA_DeviceOpenOptions | string): Promise<LPA_Response<IPrinterInfoExt>>;
/**
* 关闭已经打开的打印机。
*
* @info 关闭打印机时,当前还有未打印的任务/数据将会被自动提交打印,同时所有参数设置将会被保留。
*/
closePrinter(options?: LPA_CloseDeviceOptions, callback?: (res: boolean) => void): Promise<boolean>;
/**
* 停止正在进行的打印任务。
* 如果正在发送打印数据,则终止打印数据的发送。
*/
stopPrint(): void;
/**
* 当前正在打印的任务的打印或预览模式是不是打印模式?
*
* 通常在打印模式下,用户可能需要对标签的位置做适当的偏移处理。
*/
isPrintJob(): boolean;
/**
* 创建打印任务。
*
* 创建打印任务时,如果没有链接打印机,则本函数会自动打开当前系统安装的第一个 LPAPI 支持的打印机,用于打印。
* 当前还有未打印的任务,已有打印数据将会被全部丢弃。
*
* @param {LPA_JobStartOptions} options 标签任务选项。
*
* @param {number} options.width 标签宽度,单位毫米。
* @param {number} options.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 背景色,预览模式下有效。
* @param {number|undefined} options.printPages 打印页面的个数。在分页打印的时候用于指定总的打印页数,方便处理打印进度。
*
* @returns {JobStartResult|undefined} 返回打印任务及画布相关信息。
*/
startJob(options: LPA_JobStartOptions): JobStartResult | undefined;
/**
* 创建打印任务,在打印任务中:
* 如果制定了打印机相关信息,那么会自动链接打印机;
* 如果未指定打印机,则返回错误信息;
*
* @param {number} options.width 标签宽度,单位毫米。
* @param {number} options.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 {string|undefined} options.printerName 目标打印机名称;
* @param {string|undefined} options.deviceId 目标设备ID;
* @param {number|undefined} options.printPages 打印页面的个数。在分页打印的时候用于指定总的打印页数,方便处理打印进度。
* @returns
*/
startPrintJob(options: LPA_StartPrintJobOptions, callback?: (res: LPA_JobStartResult) => void): Promise<LPA_JobStartResult>;
/**
* 终止当前打印任务,允许重新创建新的打印任务。
*/
abortJob(): void;
/**
* 获取当前打印任务的预览图片。
*/
toDataURL(): string;
nextLine(lineHeight?: number): void;
getPosY(): number;
getCommandDatas(): 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): Promise<LPA_JobPrintResult>;
/**
* 开始一个新的打印页面。
*/
startPage(): LPA_PageStartResult | undefined;
/**
* 结束当前打印任务。
* 打印模式下,直接提交数据,开始打印。
* 预览模式下,缓存生成的预览图片。
*/
endPage(options: LPA_PageEndOptions): Promise<LPA_PagePrintResult>;
/*********************************************************************
* 绘制相关内容。
*********************************************************************/
/**
* 设置后续绘制内容的默认对齐方式。
* 0: 水平靠左对齐;
* 1: 水平居中对齐;
* 2: 水平靠右对齐;
* 3: 水平拉伸对齐;
*/
setItemHorizontalAlignment(alignment: Alignment): void;
/**
* 设置后续绘制内容的默认垂直对齐方式。
* 0: 垂直靠上对齐;
* 1: 垂直居中对齐;
* 2: 垂直靠下对齐;
* 3: 垂直拉伸对齐;
*/
setItemVerticalAlignment(alignment: Alignment): void;
/**
* 设置后续绘制内容的默认旋转角度。
* 0 :不旋转;
* 90 :右转90度;
* 180:旋转180度;
* 270:左转90度;
*/
setItemOrientation(orientation: number): void;
/**
* 绘制文本。
*
* 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): boolean | undefined;
/**
* 打印一维条码。
*
* @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.barcodeType 一维码/二维码类型,默认为{@link LPA_BarcodeType.CODE128},表示根据字符串自动采用最佳方式。
* @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},表示居上对齐。
*/
drawBarcode(options: DrawBarcodeOptions): boolean;
/**
* 打印一维条码。
*
* @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): boolean;
/**
* 打印二维码。
*
* @param options 二维码相关绘制参数。
* @param options.barcodeType 二维码类型。
*/
draw2DBarcode(options: Draw2DBarcodeOptions): boolean;
/**
* 打印 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},表示居上对齐。
*/
drawQRCode(options: DrawQRCodeOptions): boolean | undefined;
/**
* 打印 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): boolean | undefined;
/**
* 打印 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},表示居上对齐。
*/
drawPDF417(options: DrawPDF417Options): boolean | undefined;
/**
* 打印 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): boolean | undefined;
/**
* 打印 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 成功与否。
*/
drawDataMatrix(options: DrawDataMatrixOptions): boolean;
/**
* 打印 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): boolean;
/**
* 绘制矩形框。
*
* @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;
drawRect(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 | undefined;
/**
* 绘制圆形。
*
* @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 | undefined;
/**
* 绘制直线。
*
* @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 DrawContext.LINE_WIDTH_MM}。
* @param {number[]|undefined} options.dashLens 点化线线段长度的数组。
* @param {0|90|180|270|undefined} options.orientation 旋转角度,0、90、180、270。
* 不指定表示使用 {@link setItemOrientation()} 设置的参数。默认为0,表示不旋转。
*/
drawLine(options: DrawLineOptions): boolean | undefined;
/**
* 打印指定的URL图片。
*
* @param {DrawImageUrlOptions} options URL图片绘制相关选项。
*
* @param {CanvasImageSource} options.image 图片对象。
* @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;
drawImageAsync(options: DrawImageAsyncOptions): Promise<boolean>;
/**
* @deprecated 请使用 drawImage 替代函数。
*/
drawImagePath(options: DrawImageAsyncOptions): Promise<boolean>;
/**
*
* @param {DrawTableOptions} options 表格绘制相关参数。
*
* @param {number} options.x 表格在画布X轴方向上的位置(单位毫米,值默认为0)。
* @param {number} options.y 表格在画布Y轴方向上的位置(单位毫米,值默认为0)。
* @param {number} options.width 表格的宽度(单位毫米,值默认为标签宽度)。
* @param {number} options.height 表格的高度(单位毫米,值默认为标签高度)。
* @param {number} options.lineWidth 表格线条的宽度,单位毫米,默认位0.35。当线条宽度小于等于0的时候不显示表格的边框。
* @param {TableRow[]} options.rows 表格的单元格内容的行列表,列表中的每一项表示表格中每一行的单元格列表。在用rows指定单元格内容的时候,
* 可以不用指定表格的 rowCount 和表格的 columnCount,单元格的行列数可以通过该属性的长度以及该属性中每一条数据中子列表的长度自动计算。
* @param {TableCell[]} options.cells 表格单元格列表,列表长度为表格的行数乘以表格的列数[rowCount * columnCount]。
* @param {number} options.rowCount 表格的行数,值默认为 tableRows的行数。
* @param {number} options.columnCount 表格的列数,值默认为 tableRows 中最大的值。
* @param {number[]} options.rowHeights 单元格行高列表,
* 当数组中的值大于等于1的时候,数组中的值为单元格的固定高度,单位毫米;
* 当数组中的值未指定,或者值大于0并且小于1的时候,表示当前行单元格所占表格剩余高度的百分比。
* @param {number[]} options.columnWidths 单元格列宽列表,原理等同于 rowHeights,
* 当数组中的值大于等于1的时候,数组中的值为单元格的固定宽度,单位毫米;
* 当数组中的值未指定,或者值大于0并且小于1的时候,表示当前行单元格所占表格剩余宽度的百分比。
* @param {Rect[]} options.groups 单元格合并信息。Rect中的属性描述如下:
* Rect.x: 待合并的目标单元格的列索引,从0开始。
* Rect.y: 待合并的目标大院个的行索引,从0开始。
* Rect.width : 从目标单元格开始,要合并的单元格的列数,值大于等于1,1表示列方向上没有要合并的单元格。
* Rect.height: 从目标单元格开始,要合并的单元格的行数,值大于等于1,1表示行方向上没有要合并的单元格。
* 备注:单元格的合并信息也可以通过单元格内容中的 rowSpan 和 ColumnSpan 来指定。
*
* @interface TableCell extends DrawItemOptions {
* type: DrawType; // 单元格类型
* rowSpan?: number; // 占用单元格的行数
* columnSpan?: number; // 占用单元格的列数
* }
*/
drawTable(options: DrawTableOptions): boolean;
/**
* 直接打印指定位图对象。
*
* @param {LPA_ImagePrintOptions} options 图片打印相关选项。
*
* @param {HTMLImageElement|string|undefined} options.image HTMLImageElement格式的图片对象,或者BASE64格式的图片数据。
* @param {number|undefined} options.width 图片打印区域宽度,单位毫米,值默认为0,表示按照实际大小来打印。
* @param {number|undefined} options.height 图片打印区域高度,单位毫米,值默认为0,表示按照实际大小来打印。
* @param {number|undefined} options.threshold 图片进行黑白转换时的阈值,默认为{@link CONSTANTS.THRESHOLD}。
* @param {number|undefined} options.orientation 图片打印方向,默认为0,表示打印前不进行图片的旋转操作。
* @param {number|undefined} options.copies 打印份数,默认只打印1份。
* @param {string|undefined} options.jobName 打印任务名称。
* @param {(res: LPA_Result) => void} options.success 打印成功回调函数。
* @param {(res: LPA_Result) => void} options.fail 打印失败回调函数。
* @param {(res: LPA_Result) => void} options.complete 打印完毕回调函数。
*/
printImage(options: LPA_ImagePrintOptions): Promise<LPA_JobPrintResult>;
private pushImageData;
/**
* 将打印输入添加到打印队列中。
*
* @param {LPA_ImageDataPrintOptions} options ImageData 打印相关参数
*
* @param {ImageData} options.imageData ImageData格式的二进制数据。
* @param {ArrayBuffer|string|undefined} data 图片二进制数据,或者图片数据的十六进制字符串。
* @param {number|undefined} width 图片的像素宽度,配合 data 属性一块使用,可以替代 imageData属性。
* @param {number|undefined} height 图片的像素高度,配合 data 属性一块使用,可以替代 imageData属性。
* @param {LPA_PrintDarkness} options.printDarkness 打印浓度。
* @param {LPA_PrintSpeed} options.printSpeed 打印速度。
* @param {LPA_GapType} options.gapType 纸张类型。
* @param {number} options.threshold 图片处理灰度阈值。
* @param {(res: IJobPrintResult) => void} options.success 打印成功回调函数。
* @param {(res: IJobPrintResult) => void} options.fail 打印失败回调函数。
* @param {(res: IJobPrintResult) => void} options.complete 打印完毕回调函数。
* @returns 打印结果成功或着错误编码。
*/
printImageData(options: LPA_ImageDataPrintOptions): Promise<IJobPrintResult>;
/**
* @param options JSON 打印相关配置信息。
*
* @param {number} options.action 结果返回方式。
* 0x0001: 表示返回打印用二级制数据;
* 0x0002: 表示返回包含"data:image/png;base64,"前缀的 BASE64 编码的预览用图片数据。
* 0x0004: 表示返回预览用图片网址,如:https://d6688.cn/f/f?key=xxx;
* 0x0082: 表示是否生成透明底色的预览图片;
* 0x1000: 表示直接打印给定的json数据。
* @param {number} options.jobInfo.jobWidth 打印任务宽度,单位毫米。
* @param {number} options.jobInfo.jobHeight 打印任务高度,单位毫米。
* @param {number|undefined} options.jobInfo.orientation 打印任务旋转角度。
* @param {string|undefined} options.jobInfo.jobName 打印任务名称。
* @param {number|undefined} options.jobInfo.gapType 设置打印纸张类型。
* @param {number|undefined} options.jobInfo.printDarkness 设置打印浓度
* @param {number|undefined} options.jobInfo.printSpeed 设置打印速度。
* @param {number|undefined} options.jobInfo.threshold 设置打印时的灰度阈值。
* @param {boolean|undefined} options.jobInfo.antiColor 是否进行反色打印。
* @param {boolean|undefined} options.jobInfo.horizontalFlip 是否需要进行水平镜像翻转打印。
*
* @param {string|undefined} options.printerInfo.printerName 打印机名称。
* @param {string|undefined} options.printerInfo.deviceId 打印机设备ID。
* @param {number|undefined} options.printerInfo.printerDPI 打印机分辨率。
*
* @param {DrawPageItems[]|undefined} options.jobPages 打印页面列表,在一个打印任务中可以同时打印多张标签。
* @param {DrawPageItems|undefined} options.jobPage 打印页面信息,该参数通常只打印一张标签,如果需要批量打印,可以通过该参数中每一个绘制选项的 columnName 属性来关联 jobArguments 中的属性名称来实现批量打印的功能。
* 备注:jobPage 与 jobPages 其中一个必须要设置,否则本次打印为无效的打印。
* @param {Record<string, any>[]|undefined} options.jobArguments 打印参数,用于进行批量打印。可以通过 jobPages中 drawItem中的 columnName 来关联 jobArguments中对应的key来绑定数据。
* @returns
*/
print(printOptions: LPA_JsonPrintOption | (() => LPA_JsonPrintOption)): Promise<LPA_JobPrintResult>;
/**
* 解析并打印 wdfx 格式的文件内容。
* @param {LPA_JsonPrintOption} options wdfx文件解析与打印相关配置参数。
*
* @param {string} options.content wdfx格式的字符串内容。
* @param {JobExtraInfo} options.jobInfo 打印任务相关参数。
* @param {string|undefined} options.jobInfo.jobName 打印任务名称。
* @param {number|undefined} options.jobInfo.gapType 标签纸类型。
* @param {number|undefined} options.jobInfo.printSpeed 打印速度。
* @param {number|undefined} options.jobInfo.printDarkness 打印浓度。
* @param {number|undefined} options.jobInfo.orientation 打印任务出纸方向。
* @param {PrinterInfo} options.printerInfo 打印机相关参数。
* @param {string|undefined} options.printerInfo.printerName 打印机名称,在打印模式下会自动链接该打印机。
* @param {string|undefined} options.printerInfo.deviceId 打印机设备ID,在打印模式下会自动链接该打印机。
* @param {Function} options.onJobCreated 打印任务创建完毕的回调函数,在Uni环境下需要在打印任务创建完毕后实时的更新画布大小。
* @param {Function} options.onPageComplete 打印页面处理完毕的回调函数,用户可以在页面处理完毕后实时的预览标签信息。
* @param {Function} options.onJobComplete 所有打印页面全部处理完毕时的回调函数。
* @param {Document|undefined} options.doc 在不知DOMParser的环境下,用户可以使用三方工具来创建一个Document来完成数据的解析功能。
* @param {DOMParser|undefined} options.domParser 特殊环境下底层不支持默认的DOMParser,此时需要用户自己创建一个DOMParse实例来完成wdfx文件的解析。
*
* @returns {Promise<LPA_JobPrintResult>}
*/
printWdfx(options: LPA_JsonPrintOption): Promise<LPA_JobPrintResult>;
}
