Android在使用打印机打印东西的时候,往往会弹出预览设置界面,然后点击打印才能打印内容。

现在有个需求是:点击打印按钮之后,直接打印内容,不让跳出预览设置界面。

使用系统的api几行代码就能打印内容了,但是弹出的预览界面之丑,然后有使用惠普打印插件,预览界面依旧存在,反编译之后也没有发现什么新大陆。最后在惠普工作人员的帮助下,实现一键打印的功能,过程曲折离奇啊,记录如下:

打印机:HP Color LAserJet Pro M452 PCL6

android主板:4.4.4,已root

打印内容:PDF文档,可以将文字,图片,视图转成PDF文件。

静默打印其实就一句代码,使用的cp命令“cp 文件磁盘路径 /dev/usb/lp0”,比如“cp /mmt/sdcard/test.pdf /dev/usb/lp0

cp命令的含义就不解释了,mmt/sdcard/test.pdf 是要打印的pdf文件,/dev/usb/lp0是打印机在Android主板上显示的设备节点,由于使用的是惠普打印机,必须是这个节点,有的主板会获取到/dev/bus/usb/001之类的节点,usb下面的节点全是数字,比如001,002,获取设备Device信息也是打印机的相关信息,但是就是打印不了。必须生成/dev/usb/lp0这个节点才行,如果生成不了直接修改烧录内核源码,或者联系厂商修改。

假定设备能生成/dev/usb/lp0节点,使用命令的时候依旧出现了很多问题。

1、权限。

使用这个指令需要申请Root权限,也就是Android设备需要root才行

2、使用itextpdf生成pdf文档(官方api满足不了需求)

这里要注意引用的库版本,以及辅助库,否则报错不要太多!!!这里要注意引用的库版本,以及辅助库,否则报错不要太多!!!这里要注意引用的库版本,以及辅助库,否则报错不要太多!!!

implementation 'com.itextpdf:itextg:5.5.10'
implementation 'com.madgag:scprov-jdk15on:1.47.0.2'
implementation 'com.madgag:scpkix-jdk15on:1.47.0.2'

build里引用以上库便能正常生成pdf文档了。

3、生成的pdf文档,能打印内容,但是打印不了中文

需要给PDF文档嵌入支持中文的字体!什么给文档嵌入字体?第一次听到很懵逼有没有!!然后到itext官方去找相应的解决办法,这里解决了中文打印不出的问题https://itextpdf.com/en/resources/examples/itext-5/using-fonts

        Document document = new Document();//创建文档对象PdfWriter writer = null;String src= Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + "create_src.pdf";String pdf = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + "create_dest.pdf";try {writer = PdfWriter.getInstance(document, new FileOutputStream(src));writer.setPdfVersion(PdfWriter.VERSION_1_7);//设置版本document.open();Font font = FontFactory.getFont("assets/NotoSansCJKsc-Regular.otf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);//创建字体document.add(new Paragraph("创建PDF文档并打印!", font));document.add(new Paragraph("生成时间:" + mSimpleDateFormat.format(new Date(System.currentTimeMillis())), font));document.close();PdfUtil.write(src, dest);//将生产的pdf文件,加工处理成新的pdf文件PdfUtil.print(dest.getAbsolutePath());//打印加工后的pdf文件} catch (DocumentException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}
注意这个方法获取字体,FontFactory.getFont("字体名称/路径", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);用的字体是“NotoSansCJKsc-Regular.otf”,以上便能简单的打印含中文的pdf文档了。

4、打印等待时间过长

现在能打印了,但是点击打印之后,等待时间会超20-30s的时长,打印机会很快收到消息,但是差不多二三十秒后才开始响动,这个问题则是由PDF文件本身引起的,这就需要了解PDF的文档结构了https://blog.csdn.net/P876643136/article/details/79449060。

PDF文档文件头和文件尾,需要添加一些设置信息,打印机才能快速识别到当前pdf文档是否接收完成,立即打印。其中涉及到PJL相关的知识。

demo下载

github链接:https://github.com/wylIwwg/PrintSDKSample.git

Android使用惠普打印机,USB直连静默打印相关推荐

  1. 惠普打印机 HP M104W 连接无线路由器打印

    先说结果,折腾了1个多小时,终于能电脑无线打印了. 但是比有线慢一些,主要是点击打印后15秒打印机才做出反应,打印了5页纸用了25秒. M104W这款打印机官方只给出了wifi直连的使用方法,没说怎么 ...

  2. macOS下不支持双面打印功能的惠普打印机如何进行手动双面打印

    使用 HP 打印机在纸张的正反两面打印 使用打印驱动程序中的设置,在 HP InkJet 打印机或 LaserJet 打印机上设置双面打印作业. 双面打印 (Windows) 使用 HP 打印机软件在 ...

  3. hp打印机怎么连接电脑_hp打印机驱动怎么共享 惠普打印机如何安装【详解】

    打印机 在我们的生活中已经得到了广泛的普及,平时用到它的地方有很多,而且大大的提高了我们的工作效率.但对于打印机很多人都只是了解皮毛,更深层次的东西一概不知.打印机的安装是很重要的一步,下面我们就来看 ...

  4. 惠普打印机只打印一半_惠普打印机如何安装 惠普打印机加墨方法【介绍】

    对于多数上班族和学生党来说,平时办公和学习不仅仅离不开 电脑 ,与此同时还需要 打印机 起到辅助作用.目前市场上的打印机品牌较多,惠普就是其中知名度较高的一个牌子,拥有大批的消费群体.但是有些人在将打 ...

  5. 惠普打印机m226dn教程_WiFi当道 手把手教你完成手机无线打印

    [中关村在线办公打印频道原创]我们从一个地方到另一个新地方,利用率最多的一句话大概就是"这里有WiFi吗",可见"WiFi君"的重要性.那么公司的WiFi除了日 ...

  6. 惠普打印机墨盒更换教程_惠普打印机加墨教程:老司机教你

    01惠普打印机加墨教程 [中关村在线原创]惠普的打印机用户众多.那么墨盒用完了怎么办?很多人想到的是找个加墨教程.这里我们作为老司机就给各位带带路,来一个惠普打印机加墨教程. 惠普打印机加墨教程 惠普 ...

  7. hp服务器怎么安装xp系统,windowsxp系统安装惠普打印机软件的方法

    我们在日常办公中,都经常会使用到打印机工具.那么,windowsxp系统下该如何安装惠普打印机呢?会不会非常复杂?今天,系统城小编就以惠普MFP系列为例,给大家介绍下具体操作步骤. 具体如下: 1.首 ...

  8. 安装惠普打印机显示等待php,安装惠普打印机出现“新设备现已连接”一直不动怎么办?...

    问:安装惠普打印机驱动时一直停留在"新设备现已连接",等了很久就是无法进入下一步安装,怎么办?(如下图:) 答:本文以安装HP P1108驱动为例(同样适用于其它型号),跟大家分享 ...

  9. 计算机更新后打印机无法使用,Win10升级后惠普打印机无法打印的解决方法

    近来有一些用户反馈Win10系统升级之后,连接的一台惠普打印机无法打印了,出现类似的问题主要原因就是Win10升级后一些打印机相关软件没有迁移成功,打印时会出现HP ENVY e-All-in-One ...

  10. 20200512_惠普打印机功能地址保护错误

    20200512_惠普打印机功能地址保护错误 现象描述 通过WIFI连接HP4729打印机,打印功能正常,但是如果运行打印首选项进行默认设置修改时,会弹出错误提示[功能地址0x00007F----造成 ...

最新文章

  1. 解决RuntimeError: cuda runtime error (30) : unknown error at /pytorch/aten/src/THC/THCGeneral.cpp:70N
  2. 你的大脑里有AI吗?
  3. 一文弄懂用户画像以及如何召回用户
  4. 苹果鼓励美国员工赴中国出差 一天500美元奖金
  5. html track标签,HTML track标签
  6. mysql sql语句执行到一半会怎么样?
  7. 中级通信工程师证书有什么用
  8. 对ASP.NET程序员非常有用的85个工具
  9. 使用GoLang开发游戏服务器(一)
  10. xp信息服务器iis5.0,XP中安装iis5.0/IIS6.0的详细操作方法步骤(图文教程)
  11. yii2 使用gii生成mongo模型 控制器以及YII2 多MongoDB配置和使用
  12. java基础—综合练习
  13. C语言与java中函数传参比较
  14. 会声会影2023最新版功能介绍及使用教程
  15. 程序员需知的11个在线教程网站,建议收藏!
  16. 【电脑讲解】宽带连接错误711的两种解决方法
  17. Python程序加密
  18. 手写英文油漆字体字体_通过手写创建字体
  19. skia 之canvas
  20. 快看漫画如何构建好的用户画像平台?

热门文章

  1. Redis下载部署配置运行及修改登录地址、端口和密码
  2. window10_vs2015安装教程
  3. 【单片机基础篇】共阴级四位数码管
  4. SRIO IP的学习与应用
  5. c语言驾校信息管理系统,驾校综合信息管理系统
  6. JRebel安装、最新激活方式
  7. 区块链会议_2018杭州云栖大会区块链相关_20180919
  8. java冒泡排序(含冒泡排序代码)
  9. ①ESP8266-wifi模块使用方法
  10. 软件测试——开发模型、测试模型介绍