首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Android中的打印管理器将字节数组打印为PDF

在Android中,可以使用打印管理器将字节数组打印为PDF。打印管理器是Android系统提供的一个功能,它允许应用程序将内容以各种格式打印出来,包括PDF。

打印字节数组为PDF的步骤如下:

  1. 创建一个PrintDocumentAdapter对象,该对象负责生成打印内容。可以继承PrintDocumentAdapter类,并实现其onWrite()方法,在该方法中将字节数组写入打印输出流。
  2. 创建一个PrintAttributes对象,用于指定打印的属性,例如页面大小、方向等。
  3. 调用PrintManager的print()方法,传入打印作业名称、PrintDocumentAdapter对象和PrintAttributes对象,开始打印。

下面是一个示例代码:

代码语言:txt
复制
// 创建PrintDocumentAdapter对象
PrintDocumentAdapter printAdapter = new PrintDocumentAdapter() {
    @Override
    public void onWrite(PageRange[] pages, ParcelFileDescriptor destination, CancellationSignal cancellationSignal, WriteResultCallback callback) {
        // 将字节数组写入打印输出流
        try {
            FileOutputStream output = new FileOutputStream(destination.getFileDescriptor());
            output.write(byteArray); // byteArray为待打印的字节数组
            callback.onWriteFinished(new PageRange[]{PageRange.ALL_PAGES});
        } catch (IOException e) {
            // 处理异常
        }
    }

    @Override
    public void onLayout(PrintAttributes oldAttributes, PrintAttributes newAttributes, CancellationSignal cancellationSignal, LayoutResultCallback callback, Bundle extras) {
        // 不需要布局,直接传递打印内容
        callback.onLayoutFinished(new PrintDocumentInfo.Builder("print_output.pdf").setContentType(PrintDocumentInfo.CONTENT_TYPE_DOCUMENT).build(), false);
    }
};

// 创建PrintAttributes对象
PrintAttributes attributes = new PrintAttributes.Builder()
        .setMediaSize(PrintAttributes.MediaSize.ISO_A4)
        .setResolution(new PrintAttributes.Resolution("pdf", "pdf", 300, 300))
        .setColorMode(PrintAttributes.COLOR_MODE_COLOR)
        .build();

// 调用PrintManager的print()方法开始打印
PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE);
printManager.print("print_job_name", printAdapter, attributes);

这样,字节数组将被打印为PDF格式。在实际应用中,可以根据需要进行适当的修改和调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android webview转PDF方法示例

1.网上找了好多没有显示出来效果不错,后来看到调用手机打印预览,看了效果还不错,就打算使用系统打印服务预览下载 2....‘webView.createPrintDocumentAdapter()’得到打印PrintDocumentAdapter有了该类就可以使用onWrite方法写入制定文件,但是这个方法需要传入回调这个悲剧是这个回调方法是...hiden我们没办法调用 3,字怎么解决呢,有连个方法 3.1 使用此开源库替换自己sdk android.jar文件,就可以使用了 https://github.com/anggrayudi...= android.os.Build.VERSION_CODES.KITKAT) { /** * android 5.0之后,出于对动态注入字节码安全性德考虑,已经不允许随意指定字节保存路径了,...dexCacheFile.exists()) { dexCacheFile.mkdir(); } try { //创建待写入PDF文件,pdfFilePath自行指定PDF文件路径 if (file.exists

1.3K31
  • Android开发专业名词及工具概述

    前言:   系统学习下Android开发涉及到一些专业名词 和Android开发工具 名词: 一、SDK(Software Development Kit)   软件开发工具包:一般都是一些软件工程师特定软件包...可以删除没用注释,最大限度地优化字节码文件。   它还可以使用简短无意义名称来重命名已经存在类、字段、方法和属性。   常常用于Android开发用于混淆最终项目,增加项目被反编译难度。...三、Android SDK管理器 ?   下载样式 机器人图标 点击进入Android SDK管理器,可以用于查看已安装SDK版本或下载更多SDK版本 ?...四、Logcat   日志查看工具,用于查看和过滤Android日志系统输出,一般用于项目调试。 ?   对应 过滤类型    ?   (1)、打印日志 ?   (2)、查看日志 ?  ...五、SQLite3   轻型数据库,可以用它访问在Android创建和使用SQLite数据库文件  六、AVD(Android虚拟设备管理器)   用于创建和管理将会驻留模拟器实例虚拟设备工具。

    1.1K60

    Python 处理 PDF 神器 -- PyMuPDF

    文件名必须是一个已经存在文件python字符串。 也可以从内存数据打开文档,或创建新PDF。您还可以文档用作上下文管理器。 3....检查页面的链接、批注或表单字段 使用某些查看器软件显示文档时,链接显示==“热点区域”==。如果您在光标显示手形符号时单击,您通常会被带到该热点区域中编码标记。...\ Pixmap包含以下引用许多方法和属性。其中包括整数宽度、高度(每个像素)和跨距(一个水平图像行字节数)。属性示例表示表示图像数据矩形字节区域(Python字节对象)。...Document.select()PDF压缩到选定页面,参数是要保留页码序列。这些整数都必须在0<=i<page_ count范围内。执行时,此列表缺少所有页面都将被删除。...因此,您可以轻松地使用创建新PDF: - 第一页或最后10页 仅奇数页或偶数页(用于双面打印) 包含或不包含给定文本页 颠倒页面顺序 保存新文档包含仍然有效链接、注释和书签(i.a.w.指向所选页面或某些外部资源

    3.4K31

    Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件机器码数据 | 反汇编二进制机器码 | 打印反汇编数据 )

    , 这些数据就是需要反汇编机器码数据 ; 调用 反汇编解析器 disasm 方法 , 向汇编解析器传入 节区数据 对应 二进制数据 , 这些二进制数据都是机器码数据 , 即 , 需要反汇编这些二进制数据...= True # 向汇编解析器传入 节区数据 对应 二进制数据 , 这些二进制数据都是机器码数据 # 即 , 需要反汇编这些二进制数据 汇编..., 如果反汇编失败 , 此处空 disasm = capstone.disasm(raw, 0) 二、打印反汇编数据 ---- 调用 反汇编解析器 disasm 方法 ,...写寄存器:esp ; 机器码 :53 在开始位置打印汇编代码地址 , 然后是 汇编指令 , 操作对象 ; 之后汇编代码 读取寄存器 , 写出寄存器 打印出来 ; 最后打印出该行汇编代码对应机器码..., 保证在第 55 字节打印寄存器读写信息 # 00000000: push ebx ; 读寄存器

    77810

    Android 插件化】Hook 插件化框架 ( 创建插件应用 | 拷贝插件 APK | 初始化插件包 | 测试插件 DEX 字节码 )

    Android 插件化】“ 插桩式 “ 插件化框架 ( 注入上下文使用 ) 【Android 插件化】“ 插桩式 “ 插件化框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources...| 设置合并后 Element[] 数组 ) 【Android 插件化】Hook 插件化框架 ( 创建插件应用 | 拷贝插件 APK | 初始化插件包 | 测试插件 DEX 字节码 ) ----...| 设置合并后 Element[] 数组 ) , 将上述从 " 插件包 " APK 文件获取 Element[] dexElements 和 从 " 宿主 " 应用获取 Element[]...dexElements 获取两个数组进行了合并 ; 本篇博客开始验证上述加载插件包 Dex 字节码是否加载成功 ; ---- 一、创建插件包应用 ---- 创建插件包 Module 应用 , 使用默认配置即可...Element[] dexElements 数组 , 此时可以通过反射获取插件包字节码类 ; 在下面的代码 , 通过反射获取了 com.example.plugin.MainActivity 字节码类

    1K20

    1.2w+字!Java IO 基础知识总结

    read(byte b[ ]) : 从输入流读取一些字节存储到数组 b 。如果数组 b 长度零,则不读取。如果没有可用字节读取,返回 -1。...从 Java 9 开始,InputStream 新增加了多个实用方法: readAllBytes() :读取输入流所有字节,返回字节数组。...FileInputStream 是一个比较常用字节输入流对象,可直接指定文件路径,可以直接读取单字节数据,也可以读取至字节数组。...我使用 write(int b) 和 read() 方法,分别通过字节流和字节缓冲流复制一个 524.9 mb PDF 文件耗时对比如下: 使用缓冲流复制PDF文件总耗时:15428 毫秒 使用普通字节流复制...PrintStream 属于字节打印流,与之对应是 PrintWriter (字符打印流)。

    50330

    Android实现PDF预览打印功能

    最近在做一个项目,需要用到android手机连接打印机进行打印功能,目前在网上找到教程介绍都是蓝牙连接热敏打印机(pos机大小打印机)和蓝牙打印机,如果连接日常所见到网络打印机,进行打印,很显然这些教程是做不到...由于android没有提供任何标准,都是自家封API,参考了WPSAPP打印功能,决定按照WPS方案来写,需要安装打印服务插件,比如PrinterShare以及三星、HP提供自家打印服务插件。...一、连接打印管理者   当程序需要直接管理打印进程时,在收到用户打印请求之后,第一步就是连接Android打印框架,以及操作PrintManager类实例。...随着这些选项设置,打印框架会要求适配器展示并生成一个打印文稿,最终打印做准备。一旦用户按下了打印按钮,打印框架会拿到最终打印文档然后交付给打印提供者以便打印。...android.graphics.pdf.PdfDocument; import android.graphics.pdf.PdfDocument.PageInfo; import android.graphics.pdf.PdfRenderer

    4.6K10

    Android Protobuf 序列化】Protobuf 使用 ( Protobuf 序列化 | Protobuf 反序列化 )

    使用 ( Protobuf 源码分析 | 创建 Protobuf 对象 ) , 创建了 Protobuf 对象 , 本博客中将其序列化 , 保存到本地文件 ; 序列化操作 : 调用 Protobuf...对象 toByteArray 方法 , 可以将对象序列化为字节数组 ; // addressBook 对象转为字节数组 var bytes: ByteArray...addressBook 对象转为字节数组 var bytes: ByteArray = addressBook.toByteArray() Log.i(TAG, "序列化耗时...${System.currentTimeMillis() - serializeStart} ms , 序列化大小 ${bytes.size} 字节") 日志打印结果 : 2021-04-27 10:...反序列化操作 : 调用 Protobuf 对象 parseFrom 方法 , 传入字节数组作为参数 , 可以字节数组反序列化为 Protobuf 对象 ; var deserializeAddressBook

    72940

    面试官:Java缓冲流真的性能很好吗?我看未必

    2.2 数组流所谓数组流就是内存中有限数据进行读写操作流,适应于数据量小,无需利用文件存储,提升程序效率。...我们以PipedOutputStream和PipedInputStream例,通过PipedOutputStream一串字符写入到内存,再通过PipedInputStream读取输出到控制台,整个过程并没有临时文件事情...,自然也会涉及到这种情况,比如我们txt文件数字型数据以int类型读取到程序,这时Java我们提供了DataInputStream/DataOutputStream类。...PDF文件总耗时:" + (end - start) + " 毫秒"); }}输出:使用普通文件流复制PDF文件总耗时:221611 毫秒使用缓冲字节流复制PDF文件总耗时:228 毫秒然后,我们注释掉代码放开...使用普通文件流复制PDF文件总耗时:106 毫秒使用缓冲字节流复制PDF文件总耗时:80 毫秒在这种情况下,我们可以看到,甚至于普通文件流耗时是小于缓冲流,所以对于这种情况来说,缓冲流未必一定性能最好

    9220

    Python处理PDF——PyMuPDF安装与使用

    文件名必须是一个已经存在文件python字符串。也可以从内存数据打开文档,或创建新PDF。您还可以文档用作上下文管理器。 3....检查页面的链接、批注或表单字段 使用某些查看器软件显示文档时,链接显示==“热点区域”==。如果您在光标显示手形符号时单击,您通常会被带到该热点区域中编码标记。...\ Pixmap包含以下引用许多方法和属性。其中包括整数宽度、高度(每个像素)和跨距(一个水平图像行字节数)。属性示例表示表示图像数据矩形字节区域(Python字节对象)。...Document.select()PDF压缩到选定页面,参数是要保留页码序列。这些整数都必须在0<=i<page_ count范围内。执行时,此列表缺少所有页面都将被删除。...因此,您可以轻松地使用创建新PDF: - 第一页或最后10页- 仅奇数页或偶数页(用于双面打印)- 包含或不包含给定文本页- 颠倒页面顺序 保存新文档包含仍然有效链接、注释和书签(i.a.w

    7.3K30

    Python处理PDF——PyMuPDF安装与使用

    文件名必须是一个已经存在文件python字符串。也可以从内存数据打开文档,或创建新PDF。您还可以文档用作上下文管理器。 3....检查页面的链接、批注或表单字段 使用某些查看器软件显示文档时,链接显示==“热点区域”==。如果您在光标显示手形符号时单击,您通常会被带到该热点区域中编码标记。...\ Pixmap包含以下引用许多方法和属性。其中包括整数宽度、高度(每个像素)和跨距(一个水平图像行字节数)。属性示例表示表示图像数据矩形字节区域(Python字节对象)。...Document.select()PDF压缩到选定页面,参数是要保留页码序列。这些整数都必须在0<=i<page_ count范围内。执行时,此列表缺少所有页面都将被删除。...因此,您可以轻松地使用创建新PDF: - 第一页或最后10页- 仅奇数页或偶数页(用于双面打印)- 包含或不包含给定文本页- 颠倒页面顺序 保存新文档包含仍然有效链接、注释和书签(i.a.w

    6.4K10

    【第3版emWin教程】第45章 emWin6.x窗口管理器之定时器使用

    mod=viewthread&tid=98429 第45章 emWin6.x窗口管理器之定时器使用 本期教程大家讲解窗口管理器之定时器使用方法,这个定时器使用起来比较简单,而且很实用,以后项目工程很多时候要用到...,不过使用时有些小问题要特别注意,如果不注意的话,定时器无法正确启动。...然后再结合本章教程给出实例进行学习。 2、 窗口管理器这块API函数应该是emWin手册所有章节函数最多,定时器API函数也属于这部分。...3、默认上电是通过串口打印信息,如果使用RTT打印信息: MDK AC5,MDK AC6或IAR通过使能bsp.h文件宏定义1即可 #define Enable_RTTViewer 1 4、各个任务实现功能如下...系统栈大小单位是4字节,那么这里就是配置系统栈大小2KB emWin动态内存配置: GUIConf.c文件配置如下: #define EX_SRAM 1/*1 used extern sram

    1.1K20

    android渗透测试学习笔记

    Android渗透测试学习手册》写学习笔记 摘要 adb 工具 ProGuard 压缩、优化和混淆Java字节工具 DashO java混淆器代码保护 links attify/lot exploitation...kill-server //杀死服务器 $ adb start-server //启动服务器 $ adb shell pm list packages //pm包管理器 工具获取所有已安装软件包列表...[device-name].rc获取自己配置,在某些情况下从位于相同位置.sh文件获取自己配置 $ls -l | grep 'init' # cat init.rc 加载时使用属性 location...一旦完成整个引导过程,系统发送BOOT_COMPLETED广播,许多应用程序可能使用称为广播接收器Android应用程序组件来监听。...不安全文件存储**** 目录遍历或本地文件包含漏洞:读取系统文件 客户端注入攻击:sqlite注入 pdf 链接: 提取码: ddka

    80730

    是时候对员工进行网络安全培训了:黑客正将目标瞄准打印

    “用指尖改变世界” 我们都知道,目前大多数打印机都具备扫描功能。在日常办公,我们经常会使用这些扫描功能来获取纸质文件电子扫描件,这可能包括身份证、护照、简历、企业经营许可证等等。...出于方便,我们通常会选择设置打印直接这些扫描件通过电子邮件发送给自己或其他有需要的人。 梭子鱼网络(Barracuda)安全研究人员警告说,网络犯罪分子正将目光锁定在这个办公重要环节。...研究人员在博客说:“在打印机发送电子邮件接收PDF附件非常普遍,这种惯性思维,让许多用户认为文档是完全安全。从社会工程角度来看,这正是网络犯罪分子想要回应。”...除了PDF外,恶意代码还会被隐藏在其他一些格式文件,比如jpg、txt或者其他任何格式。...附件文件恶意代码旨在获得对受害者计算机无限制访问权限,包括监控受害者行为、更改计算机设置以及浏览和复制文件,并可以利用Windows资源管理器搜索工作组共享,获取包含凭证XML文件。

    74660

    Python 处理 PDF —— PyMuPDF 安装与使用

    文件名必须是一个已经存在文件python字符串。 也可以从内存数据打开文档,或创建新PDF。您还可以文档用作上下文管理器。 3....检查页面的链接、批注或表单字段 使用某些查看器软件显示文档时,链接显示==“热点区域”==。如果您在光标显示手形符号时单击,您通常会被带到该热点区域中编码标记。...\ Pixmap包含以下引用许多方法和属性。其中包括整数宽度、高度(每个像素)和跨距(一个水平图像行字节数)。属性示例表示表示图像数据矩形字节区域(Python字节对象)。...Document.select()PDF压缩到选定页面,参数是要保留页码序列。这些整数都必须在0<=i<page_ count范围内。执行时,此列表缺少所有页面都将被删除。...因此,您可以轻松地使用创建新PDF: 第一页或最后10页 仅奇数页或偶数页(用于双面打印) 包含或不包含给定文本页 颠倒页面顺序 保存新文档包含仍然有效链接、注释和书签(i.a.w.指向所选页面或某些外部资源

    2.2K10

    通过TXT文件批量生成PDF417码

    最大信息量字母数字 1850 字符、数字 2725 位、二进制数据 1108 字节。...批量生成PDF417二维码,可以通过导入数据库方式,下面小编以TXT文本作为数据库来介绍如何批量生成PDF417码。   在条码标签软件中新建一个空白标签,标签大小根据自己需要自行设置。...点击设置数据源,保存有二维码数据TXT文件导入到软件。 01.jpg   因为我们导入是TXT文件,勾选文件内容UTF8格式,这样数据乱码就可以正常显示了。再勾选第一行表头。...02.jpg   使用二维码工具在画布上绘制一个二维码,在弹出界面里二维码类型选择PDF417。点击插入数据源字段,选择产品序列号。...03.jpg   点击打印预览,可以查看批量生成PDF417二维码。如需打印,设置打印范围和打印数量就可以直接打印啦。

    96810

    Python处理PDF——PyMuPDF安装与使用

    文件名必须是一个已经存在文件python字符串。也可以从内存数据打开文档,或创建新PDF。您还可以文档用作上下文管理器。 3....检查页面的链接、批注或表单字段 使用某些查看器软件显示文档时,链接显示==“热点区域”==。如果您在光标显示手形符号时单击,您通常会被带到该热点区域中编码标记。...\ Pixmap包含以下引用许多方法和属性。其中包括整数宽度、高度(每个像素)和跨距(一个水平图像行字节数)。属性示例表示表示图像数据矩形字节区域(Python字节对象)。...Document.select()PDF压缩到选定页面,参数是要保留页码序列。这些整数都必须在0<=i<page_ count范围内。执行时,此列表缺少所有页面都将被删除。...因此,您可以轻松地使用创建新PDF: - 第一页或最后10页- 仅奇数页或偶数页(用于双面打印)- 包含或不包含给定文本页- 颠倒页面顺序 保存新文档包含仍然有效链接、注释和书签(i.a.w

    4K10
    领券