惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
Engineering at Meta
Engineering at Meta
有赞技术团队
有赞技术团队
博客园_首页
Apple Machine Learning Research
Apple Machine Learning Research
Vercel News
Vercel News
G
Google Developers Blog
Blog — PlanetScale
Blog — PlanetScale
IT之家
IT之家
MongoDB | Blog
MongoDB | Blog
Y
Y Combinator Blog
B
Blog
The GitHub Blog
The GitHub Blog
M
MIT News - Artificial intelligence
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Stack Overflow Blog
Stack Overflow Blog
C
Check Point Blog
Microsoft Azure Blog
Microsoft Azure Blog
D
DataBreaches.Net
I
InfoQ
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
腾讯CDC
H
Help Net Security

博客园 - H5开发技术

安卓手机系统WebView内核更新指南 C#强签名实战:恒盾混淆加密大师重签名教程 HTML打包APK自定义User Agent设置教程 HTML打包EXE退出密码配置详细教程 HTML打包APK实现视频全屏播放方法 HTML打包APK实现拍照、录像、录音和文件选择 HTML打包APK:二维码扫码功能实现笔记 C#混淆选项选择指南:使用合适的加密方式保护C#代码 C#混淆随机种子详解与恒盾加密大师使用教程 在.NET项目集成混淆加密:自动化保护DLL和EXE 恒盾C#混淆加密大师1.5.0:EXE保护增强与.NET 10适配 EXE加密原生内核使用:解决系统环境兼容问题 EXE一机一码加密后无法运行?兼容模式使用指南 HTML打包EXE多实例共享进程:多开加速与状态共享 免费绿色JS混淆加密工具 - 离线版本分享 5分钟学会HTML打包AP本地文件加密 HTML打包EXE后桌面图标不更新?刷新缓存方法 HTML打包EXE 2.3.0更新详解(附最新版本下载地址-含免费内核) HTML打包EXE离线一机一码新增试用功能(附2026最新版下载地址) PDF加密转APK大师最新版本1.1.0更新, 附快速上手教程 极速图标设计大师 — 不会 PS 也能 3 秒做出专业 App 图标(附免费下载) HTML打包EXE导出配置文件教程:使用 .html2exe 文件备份、迁移和复用打包设置 BZ全景漫游可视化编辑器: 零代码制作360全景漫游H5作品 苹果手机快速开启开发者模式教程(iOS 16+) Windows平台生成苹果开发者测试证书教程 苹果签名安装助手 - 用 Apple ID 一键生成开发者测试证书教程 HTML打包EXE使用附件功能调用外部程序扩展你的EXE - 附实战演练实现录频功能 HTML打包EXE安装包配置教程 - 自定义安装目录和桌面快捷方式名 HTML打包/EXE加密的一机一码网络验证常见问题汇总 HTML打包EXE透明窗口教程 - 打造炫酷无边框透明桌面应用
HTML一键打包APK:实现安卓打印功能
H5开发技术 · 2026-08-24 · via 博客园 - H5开发技术

在网页中,一行 window.print() 就能调起浏览器的打印功能。在HTML一键打包APK工具生成的APP中,这行代码同样有效:工具会拦截 window.print() 调用,并转交给安卓系统打印服务。用户可以直接选择打印机打印,也可以"另存为PDF"把页面保存成PDF文件。

如果你不了解HTML打包APK工具, 想要进一步了解, 可以查看官网:

HTML一键打包APK工具官网

html2apk-start-pack

创建打印页面

在HTML项目入口目录中创建 index.html,写入以下代码。页面展示一张简单的单据,点击"打印"按钮后调用 window.print() 触发打印。通过 @media print 样式,打印时会自动隐藏按钮等屏幕元素,只保留单据内容。

<!doctype html>
<html lang="zh-CN">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
        <title>单据打印</title>
        <style>
            * {
                box-sizing: border-box;
            }

            body {
                min-height: 100vh;
                margin: 0;
                padding: 20px;
                display: grid;
                place-items: center;
                font-family: 'Microsoft YaHei', sans-serif;
                background: #f4f7f5;
                color: #17221c;
            }

            main {
                width: min(100%, 440px);
            }

            .sheet {
                padding: 24px;
                border: 1px solid #cad4ce;
                border-radius: 8px;
                background: #fff;
            }

            h1 {
                margin: 0 0 4px;
                font-size: 24px;
                text-align: center;
            }

            .sheet-meta {
                margin: 0 0 16px;
                font-size: 13px;
                color: #526159;
                text-align: center;
            }

            table {
                width: 100%;
                border-collapse: collapse;
                font-size: 14px;
            }

            th,
            td {
                padding: 8px 6px;
                border-bottom: 1px solid #e2e8e4;
                text-align: left;
            }

            th {
                background: #eef2f0;
            }

            .total {
                margin-top: 12px;
                text-align: right;
                font-size: 16px;
                font-weight: 700;
            }

            button {
                width: 100%;
                min-height: 48px;
                margin-top: 14px;
                border: 0;
                border-radius: 6px;
                background: #197447;
                color: white;
                font: inherit;
                font-weight: 700;
            }

            /* 打印相关样式 */
            @media print {
                body {
                    padding: 0;
                    background: #fff;
                }

                /* 打印时隐藏按钮,只保留单据 */
                .no-print {
                    display: none;
                }

                .sheet {
                    width: 100%;
                    border: 0;
                    border-radius: 0;
                }
            }
        </style>
    </head>
    <body>
        <main>
            <div class="sheet">
                <h1>购物清单</h1>
                <p class="sheet-meta">单号:20260824001 日期:2026-08-24</p>
                <table>
                    <thead>
                        <tr>
                            <th>品名</th>
                            <th>数量</th>
                            <th>金额</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>无线鼠标</td>
                            <td>1</td>
                            <td>79.00</td>
                        </tr>
                        <tr>
                            <td>机械键盘</td>
                            <td>1</td>
                            <td>299.00</td>
                        </tr>
                        <tr>
                            <td>USB数据线</td>
                            <td>2</td>
                            <td>30.00</td>
                        </tr>
                    </tbody>
                </table>
                <p class="total">合计:408.00 元</p>
            </div>
            <button class="no-print" type="button" onclick="window.print()">打印</button>
        </main>
    </body>
</html>

代码说明:

  • 点击"打印"按钮执行 window.print(),这是整个打印功能的核心,不需要引入任何第三方库。
  • @media print 中定义了打印时的样式,display: none.no-print 元素(按钮等)不会出现在打印内容中。
  • 单据表格、金额等内容在屏幕和打印中都会完整保留。

打包APK

打开HTML一键打包APK工具,选择包含 index.html 的项目目录,填写应用名称、包名等打包信息。打印功能依赖安卓系统打印服务,无需额外勾选权限,按默认配置打包即可。

打包APK生成应用

确认配置后开始打包,等待工具生成APK文件。

安装并测试打印

将生成的APK安装到安卓手机,打开APP点击"打印"按钮,系统会弹出打印预览界面。在这里可以:

  • 选择已连接的打印机(云打印机、局域网打印机等)直接打印;
  • 在打印机列表中选择"另存为PDF",把页面保存成PDF文件。

保存的PDF文件可以在手机的"文件"应用或相册中找到,方便发送给客户或存档。

常见问题

点击打印没有反应? 请确认手机系统为Android 5.0及以上,旧系统没有内置打印服务。

列表中找不到打印机? 安卓打印服务需要打印机与手机处于同一网络,或打印机已接入云打印服务。也可以直接使用"另存为PDF",不依赖任何打印机。

打印内容不完整或分页异常?@media print 中适当调整宽度、字号和间距,避免内容超出纸张范围;需要强制分页时,可以在指定元素上添加 page-break-after: always 样式。