Print:把位图交给打印系统 · AndroidX 源码指南
AAndroidX 源码指南
文件与分享
文件与分享 · androidx.documentfile

Print:把位图交给打印系统DocumentFile 1.1.0-rc01

PrintHelper 的缩放模式、颜色模式与打印任务分发。

最后更新 2026-08-01

复制即用

PrintHelper helper = new PrintHelper(context);
helper.setScaleMode(PrintHelper.SCALE_MODE_FIT);
helper.setColorMode(PrintHelper.COLOR_MODE_COLOR);
helper.printBitmap("job-name", bitmap);

// 带完成回调
helper.printBitmap("job-name", bitmap, () -> {
    // 打印界面关闭后回调
    Log.d("Print", "done");
});

PrintHelper 是整个 androidx.print 库的单一入口。它把 Bitmap 交给系统打印框架,用户选择打印机与页面设置,应用不接触打印流程细节。

两个关键模式

模式效果
setScaleModeSCALE_MODE_FIT整图缩放到页面内(不裁切)
SCALE_MODE_FILL填满页面(可能裁切)
setColorModeCOLOR_MODE_MONOCHROME黑白
COLOR_MODE_COLOR彩色
helper.setScaleMode(PrintHelper.SCALE_MODE_FIT);
helper.setOrientation(PrintHelper.ORIENTATION_LANDSCAPE);
helper.setColorMode(PrintHelper.COLOR_MODE_COLOR);

printBitmap 重载

// 简单版
helper.printBitmap(jobName, bitmap);

// 回调版(打印界面关闭后)
helper.printBitmap(jobName, bitmap, onFinishCallback);

打印 View / 文本

PrintHelper 只收 Bitmap。打印其他内容先渲染成位图:

// View 转 Bitmap
Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);

helper.printBitmap("view", bitmap);

更复杂的打印(多页、PDF)用平台 PrintManager + PrintDocumentAdapter——androidx.print 只处理位图。

常见陷阱

  • 大图 OOM:超大 Bitmap 打印前缩放。
  • FILL 裁切:不希望裁切用 FIT。
  • 主线程打印printBitmap 在主线程调用即可(内部异步),但别在回调里做重活。
  • 忘回调:需要知道完成时机用带回调重载。

明确不解决什么

  • 不打印 View、PDF 或文本排版:只接收 Bitmap,其他内容需先渲染成位图。
  • 不管理打印机:设备发现、选择、进度都在系统打印对话框里。
  • 不控制打印质量细节:DPI、纸张尺寸等由用户在系统 UI 中选择。

要点

  • PrintHelper 单一入口;FIT/FILL 控制缩放,COLOR/MONO 控制颜色。
  • 只收 Bitmap;View/文本先渲染成位图。
  • 打印机选择和 DPI 由系统 UI 决定。
  • 完成时机用带回调重载。

相关页面