news 2026/2/14 6:32:53

【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/2/11 9:11:03

Steamless终极指南:轻松移除Steam游戏DRM保护

Steamless终极指南:轻松移除Steam游戏DRM保护 【免费下载链接】Steamless Steamless is a DRM remover of the SteamStub variants. The goal of Steamless is to make a single solution for unpacking all Steam DRM-packed files. Steamless aims to support as …

作者头像 李华
网站建设 2026/2/11 11:58:49

图像对比工具在网络安全配置中的高效应用与优化策略

图像对比工具在网络安全配置中的高效应用与优化策略 【免费下载链接】image-compare-viewer Compare before and after images, for grading and other retouching for instance. Vanilla JS, zero dependencies. 项目地址: https://gitcode.com/gh_mirrors/im/image-compare…

作者头像 李华
网站建设 2026/2/14 3:15:43

终极指南:macOS iSCSI Initiator快速连接远程存储

终极指南:macOS iSCSI Initiator快速连接远程存储 【免费下载链接】iSCSIInitiator iSCSI Initiator for macOS 项目地址: https://gitcode.com/gh_mirrors/is/iSCSIInitiator macOS iSCSI Initiator是一款功能强大的开源软件,专门为苹果电脑用户…

作者头像 李华