更新记录

1.0.3(2025-09-05)

Android 修复:打印预览切换纸张(大小/方向)后“无法工作”问题。

  • 调整 WebView 生命周期管理:由“任务创建后 2 秒清理”改为在 PrintDocumentAdapter.onFinish() 中清理,确保系统在切换纸张时可重复调用 onLayout/onWrite 完成重排。
  • 提升 HTML 片段与网页打印在 Android 上的稳定性。

1.0.2(2025-08-29)

多图片打印功能新增

1.0.1(2025-08-20)

Android 修复打印问题

查看更多

平台兼容性

uni-app(4.75)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - -

uni-app x(4.75)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - - -

hens-print

插件简介

hens-print 是一个功能完整的 uni-app X 打印插件,使用 UTS (UniType Script) 开发,支持 Android 和 iOS 双平台。插件提供了丰富的打印功能,可以打印 PDF 文档、图片文件、网页内容和 HTML 字符串。

功能特性

  • 📄 PDF文档打印 - 支持直接打印PDF文件
  • 🖼️ 图片打印 - 支持PNG、JPEG、GIF、BMP、TIFF格式
  • 🖼️ 多图片打印 - 支持一次性打印多张图片,可配置布局模式和排版选项
  • 🌐 网页打印 - 支持通过URL打印网页,包含渲染控制
  • 📝 HTML内容打印 - 支持直接打印HTML字符串,可指定基础URL
  • 🔍 文件检查 - 提供同步文件格式支持检查功能
  • 🐛 调试支持 - 可启用/禁用调试日志,便于开发调试
  • 错误处理 - 完整的错误码体系,便于调试和处理异常

安装方式

  1. hens-print 插件文件夹复制到项目的 uni_modules 目录下
  2. 在需要使用的页面中导入插件

快速开始

基础导入

import { print, printWebPage, printHtmlContent, printMultipleImages, isPrintableSync, setDebugLog, getDebugLogStatus } from '@/uni_modules/hens-print'

打印PDF或图片文件

print({
  filePath: '/path/to/your/file.pdf',
  jobName: '我的打印任务',
  success: (res) => {
    console.log('打印成功', res)
  },
  fail: (err) => {
    console.log('打印失败', err)
  }
})

打印网页

printWebPage({
  url: 'https://www.example.com',
  jobName: '网页打印',
  timeout: 30000,
  renderDelay: 2000,
  success: (res) => {
    console.log('网页打印成功', res)
  },
  fail: (err) => {
    console.log('网页打印失败', err)
  }
})

打印HTML内容

printHtmlContent({
  htmlContent: '<html><body><h1>Hello World</h1></body></html>',
  baseUrl: 'https://www.example.com',
  jobName: 'HTML打印',
  success: (res) => {
    console.log('HTML打印成功', res)
  },
  fail: (err) => {
    console.log('HTML打印失败', err)
  }
})

多图片打印

printMultipleImages({
  imagePaths: ['/path/to/image1.jpg', '/path/to/image2.png', '/path/to/image3.gif'],
  jobName: '多图片打印',
  layoutMode: 'double', // 'single', 'double', 'quad' - 每页显示图片数量
  orientation: 'portrait', // 'portrait' 或 'landscape'
  imageMode: 'fit', // 'fit' 完整显示 或 'fill' 居中裁剪
  autoRotateLandscapeImage: true, // 横图自动旋转90度
  success: (res) => {
    console.log('多图片打印成功', res)
  },
  fail: (err) => {
    console.log('多图片打印失败', err)
  }
})

检查文件是否支持打印

const canPrint = isPrintableSync('/path/to/your/file.pdf')
console.log('文件是否支持打印:', canPrint)

调试日志控制

// 启用调试日志
setDebugLog({
  enabled: true,
  success: () => {
    console.log('调试日志已启用')
  },
  fail: (err) => {
    console.error('调试日志设置失败:', err)
  }
})

// 获取当前调试状态
const isDebugEnabled = getDebugLogStatus()
console.log('调试日志状态:', isDebugEnabled)

API 详细说明

print(options: PrintOptions)

打印PDF文档或图片文件。

参数说明:

参数 类型 必填 默认值 说明
filePath string - 文件路径
jobName string - 打印任务名称
autoRotateLandscapeImage boolean false 横图自动旋转90度
success function - 成功回调
fail function - 失败回调
complete function - 完成回调

printWebPage(options: WebPrintOptions)

打印指定URL的网页内容。

参数说明:

参数 类型 必填 默认值 说明
url string - 网页URL
timeout number 30000 网络超时时间(毫秒)
renderDelay number 智能检测 页面渲染延迟(毫秒)
jobName string - 打印任务名称
success function - 成功回调
fail function - 失败回调
complete function - 完成回调

printHtmlContent(options: HtmlPrintOptions)

打印HTML内容字符串。

参数说明:

参数 类型 必填 默认值 说明
htmlContent string - HTML内容
baseUrl string - 基础URL,用于解析相对路径
jobName string - 打印任务名称
success function - 成功回调
fail function - 失败回调
complete function - 完成回调

printMultipleImages(options: MultipleImagesPrintOptions)

打印多张图片,支持多种布局模式和排版选项。

参数说明:

参数 类型 必填 默认值 说明
imagePaths string[] - 图片文件路径数组
jobName string - 打印任务名称
layoutMode string 'single' 每页图片数量:'single'(1张), 'double'(2张), 'quad'(4张)
orientation string 'portrait' 页面方向:'portrait'(纵向), 'landscape'(横向)
imageMode string 'fit' 图片显示模式:'fit'(完整显示), 'fill'(居中裁剪)
autoRotateLandscapeImage boolean false 横图自动旋转90度
success function - 成功回调
fail function - 失败回调
complete function - 完成回调

isPrintableSync(filePath: string): boolean

同步检查文件是否支持打印。

参数说明:

参数 类型 必填 说明
filePath string 文件路径

返回值: boolean - 是否支持打印

setDebugLog(options: DebugLogOptions)

设置调试日志开启或关闭状态。

参数说明:

参数 类型 必填 说明
enabled boolean 是否启用调试日志
success function 成功回调
fail function 失败回调
complete function 完成回调

getDebugLogStatus(): boolean

获取当前调试日志的开启状态。

返回值: boolean - 调试日志是否已启用

支持的文件格式

图片格式

  • PNG
  • JPEG/JPG
  • GIF
  • BMP
  • TIFF

文档格式

  • PDF

网页内容

  • 任何可访问的HTTP/HTTPS URL
  • HTML字符串内容

错误处理

插件提供了完整的错误码体系,便于开发者处理各种异常情况:

错误码 说明
9080001 文件不存在
9080002 文件格式不支持
9080003 打印机不可用
9080004 打印参数无效
9080005 打印失败
9080006 系统权限不足
9080007 打印服务不可用
9080009 URL格式无效
9080010 网络连接失败
9080011 网页加载超时
9080012 HTML内容解析失败
9080013 用户取消打印操作
9080014 图片列表为空
9080015 部分图片文件无效

平台限制说明

Android 平台

  • 支持所有打印功能,打印设置通过系统打印对话框进行配置
  • v1.0.3:修复切换纸张大小/方向后预览“无法工作”的问题(保留 WebView 至打印结束)

iOS 平台

  • 支持所有打印功能,打印设置通过系统打印对话框进行配置

功能支持对比

功能 Android iOS 说明
PDF 打印 完全支持
图片打印 支持多种格式
多图片打印 支持多种布局模式
网页打印 支持 URL 打印
HTML 内容打印 支持 HTML 字符串
调试日志 可动态开启/关闭
文件格式检查 同步检查支持

使用注意事项

  1. 文件路径: 确保文件路径正确且文件存在
  2. 权限要求: 确保应用具有访问存储和打印的权限
  3. 网络连接: 网页打印需要网络连接
  4. 渲染延迟: 复杂网页可能需要调整 renderDelay 参数
  5. 调试日志: 开发时可启用调试日志查看详细执行信息
  6. 打印设置: 打印方向、纸张大小、份数等设置通过系统打印对话框进行配置

隐私、权限声明

1. 本插件需要申请的系统权限列表:

存储

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。