news 2026/4/15 11:59:45

【Android】打印功能简介

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Android】打印功能简介

在 Android 4.4(API 级别 19)及更高版本中,框架提供直接从 Android 应用打印图片和文档的服务。本文章介绍如何在应用中启用打印功能,包括打印图片、HTML 页面以及创建要打印的自定义文档。

一、打印照片

Android 支持库PrintHelper类提供 一种简单的图片打印方法,用于简化图片打印操作。

1、缩放模式

  • 通过setScaleMode() 方法,可设置打印时的图片缩放模式:
    • SCALE_MODE_FIT: 调整图片大小,以便在页面的可打印区域内完整显示图片。
    • SCALE_MODE_FILL:缩放图片,使其填充整个页面的可打印区域,但可能会裁剪图片的上下或左右边缘的某些部分。此模式为默认选项。
  • 两个缩放选项都能保持图片的现有宽高比不变

2、使用方法

  • 调用 printBitmap() 方法后,系统会显示打印界面,用户可以选择打印机和打印选项。
packagecom.android.androidfunctiondemo.printerimportandroid.content.Contextimportandroid.graphics.BitmapFactoryimportandroid.os.Bundleimportandroidx.appcompat.app.AppCompatActivityimportandroidx.print.PrintHelperimportcom.android.androidfunctiondemo.Rimportcom.android.androidfunctiondemo.databinding.ActivityPrinterBindingclassPrintPhotoActivity:AppCompatActivity(){privatelateinitvarviewBinding:ActivityPrinterBindingoverridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)viewBinding=ActivityPrinterBinding.inflate(layoutInflater)setContentView(viewBinding.root)viewBinding.print.setOnClickListener{doPhotoPrint(this)}}/** * 打印图片 */privatefundoPhotoPrint(context:Context){try{valprintHelper=PrintHelper(context)printHelper.scaleMode=PrintHelper.SCALE_MODE_FITvalbitmap=BitmapFactory.decodeResource(resources,R.mipmap.weather_sun)bitmap?.let{printHelper.printBitmap("photo-print",bitmap)}}catch(e:Exception){e.printStackTrace()}}}
  • 实现效果

二、打印 HTML 文档

使用 WebView 类可打印 HTML 文档,支持直接加载 HTML 页面, 或者以字符串形式构建自定义 HTML 文档。

1、注意事项

  • 使用 WebView 创建打印文档时, 存在以下限制:
    • 不能向文档中添加页眉或页脚,包括页码。
    • HTML 文档的打印选项不支持打印页码选择,只能全部打印。
    • WebView 的实例一次只能处理一个打印作业。
    • 不能在 HTML 文档中使用 JavaScript 触发打印作业。

2、实现步骤

  • 创建 WebViewClient 类,用于监听 HTML 资源加载完成情况,若 HTML 资源已加载完成,则创建打印作业。
  • 将 HTML 资源加载到 WebView 对象中。

3、使用方法

  • 确保在 onPageFinished() 方法中调用打印任务。若没有等待页面显示 加载完成,则打印输出可能不完整或空白,或者可能完全失败。
  • 存储 WebView 对象,使其不会在打印作业之前进行垃圾回收,否则打印流程 可能会失败。
packagecom.android.androidfunctiondemo.printerimportandroid.content.Contextimportandroid.os.Bundleimportandroid.print.PrintAttributesimportandroid.print.PrintManagerimportandroid.util.Logimportandroid.webkit.WebResourceRequestimportandroid.webkit.WebViewimportandroid.webkit.WebViewClientimportandroidx.appcompat.app.AppCompatActivityimportcom.android.androidfunctiondemo.databinding.ActivityPrinterBindingclassPrintHtmlActivity:AppCompatActivity(){privatevaltag="PrintHtmlActivity"privatelateinitvarviewBinding:ActivityPrinterBindingprivatevarglobalWebView:WebView?=nulloverridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)viewBinding=ActivityPrinterBinding.inflate(layoutInflater)setContentView(viewBinding.root)viewBinding.print.setOnClickListener{doWebViewPrint(this)}}/** * 打印 HTML 文档 */privatefundoWebViewPrint(context:Context){valwebView
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 15:48:02

解决Sanic CLI开发模式异常的3种高效方法

解决Sanic CLI开发模式异常的3种高效方法 【免费下载链接】sanic Accelerate your web app development | Build fast. Run fast. 项目地址: https://gitcode.com/gh_mirrors/sa/sanic Sanic作为Python高性能异步Web框架,在23.12.0版本中CLI工具出现了一个棘…

作者头像 李华
网站建设 2026/4/12 12:15:11

【卫星遥感】YOLO11-C3k2-SFA太阳能电池板检测详解

1. YOLO11-C3k2-SFA太阳能电池板检测详解 1.1. 引言 近年来,基于深度学习的目标检测技术在工业检测领域取得了显著进展,其中YOLO系列算法因其高效性和准确性备受关注。在太阳能电池板检测领域,研究者们也在不断探索改进的YOLO算法。刘盼等通…

作者头像 李华
网站建设 2026/4/11 6:28:05

腾讯Hunyuan3D-2.1:开启你的智能3D创作之旅

腾讯Hunyuan3D-2.1:开启你的智能3D创作之旅 【免费下载链接】Hunyuan3D-2.1 腾讯开源项目Hunyuan3D-2.1,一站式图像到3D、文本到3D生成解决方案,轻松打造高分辨率纹理的3D资产。基于先进的扩散模型,助力创意无限,开启三…

作者头像 李华
网站建设 2026/4/10 15:34:36

模拟IC电路设计从入门到上手:视频教程全攻略

模拟ic电路设计,版图设计,仿真视频教程 运算放大器,带隙基准,LDO,ADC模数转换器,射频ic设计,模拟版图设计 讲的很好,学完后可快速上手在模拟IC设计这个充满挑战与魅力的领域&#xf…

作者头像 李华