You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android PDF生成:PrintedPdfDocument与PdfDocument的差异及选型建议

PrintedPdfDocument 与 PdfDocument 的区别及适用场景

核心差异

  • 定位与设计初衷
    • PrintedPdfDocument:专为Android打印框架打造,与打印系统深度绑定,页面参数完全遵循打印作业配置(如打印机支持的纸张尺寸、方向),是连接应用内容与打印输出的中间载体。
    • PdfDocument:通用型PDF生成工具,不依赖打印框架,页面尺寸、布局完全由开发者自定义,专注于独立生成个性化PDF文件。
  • 页面配置逻辑
    • PrintedPdfDocument:必须通过PrintAttributes指定页面参数,比如MediaSize(纸张规格)、Resolution(分辨率),这些参数通常来自打印请求的预设配置,无法随意定义非标准尺寸。
    • PdfDocument:通过PdfDocument.PageInfo.Builder直接设置页面宽高(单位为像素),可创建任意尺寸的页面,自由度拉满。
  • API使用复杂度
    • PrintedPdfDocument:API轻量化,很多参数由打印系统自动处理,适合快速适配打印场景的PDF生成需求。
    • PdfDocument:需要开发者手动管控所有页面细节(边距、排版、元素位置等),API灵活但需要更多自定义代码。

适用场景选择

  • 优先选 PrintedPdfDocument
    • 需求是将应用内容适配Android打印功能,比如把页面、文档通过打印系统输出为PDF,或需要结合打印预览功能时。
    • 希望直接复用打印框架的纸张配置,无需自定义特殊尺寸PDF。
  • 优先选 PdfDocument
    • 需要生成自定义尺寸、自定义布局的PDF文件,比如名片、海报这类非标准尺寸内容,或需要精确控制PDF细节(如添加水印、多栏排版)。
    • 生成的PDF仅用于保存、分享,不需要关联打印系统(如导出报告、电子书)。

快速代码示例

PrintedPdfDocument 实现

// 基于打印属性初始化文档
PrintAttributes printAttrs = new PrintAttributes.Builder()
        .setMediaSize(PrintAttributes.MediaSize.ISO_A4)
        .build();
PrintedPdfDocument pdfDoc = new PrintedPdfDocument(context, printAttrs);

// 创建页面并绘制内容
PrintedPdfDocument.Page page = pdfDoc.startPage(0);
Canvas canvas = page.getCanvas();
canvas.drawText("适配打印的PDF内容", 100, 100, new Paint());
pdfDoc.finishPage(page);

// 保存并关闭文档
pdfDoc.writeTo(new FileOutputStream(new File(getFilesDir(), "print-ready.pdf")));
pdfDoc.close();

PdfDocument 实现

PdfDocument pdfDoc = new PdfDocument();
// 自定义A4尺寸页面(595x842像素)
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(595, 842, 1).create();
PdfDocument.Page page = pdfDoc.startPage(pageInfo);
Canvas canvas = page.getCanvas();
canvas.drawText("自定义PDF内容", 50, 50, new Paint());
pdfDoc.finishPage(page);

// 保存并关闭文档
pdfDoc.writeTo(new FileOutputStream(new File(getFilesDir(), "custom.pdf")));
pdfDoc.close();

内容的提问来源于stack exchange,提问作者Hitesh Verma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 20:17:02