当前位置:首页 > 话题广场 > 攻略专题 > 游戏问答

怎么打印滴滴发票?我来告诉你答案Python X律师工作效率②:文件打印不用愁

律师平日来往律所、公检法、客服处,总免不了发生一点交通费。

虽然各类APP都可以开具电子发票,但实际报销时一般仍需要打印成纸质文件。如果拖到月底一次性报销,也要花费不少工作量。作为一名“爱偷懒”的律师,上次和大家分享了利用编程实现网上调档时“一键打包下载”,具体可参见《律师如何利用简易编程避免重复劳作》一文,这次我们来说说怎么用Python实现批量自动化打印,以滴滴打车为例。

一、登录邮箱,下载邮件附件

在滴滴出行APP中,可以对已完成的订单申请开票,并将电子发票发送至邮箱,发件人为“<didifapiao@mailga;”,附件为“滴滴电子发票.pdf”。对于每一张单独开具的发票,都会收到一封邮件。

网上关于读取、下载邮件的轮子有很多,就不再重复造了,直接照抄一个也能用,主要涉及到python自带的email和poplib库。

此处有两点需要注意:

1.由于是通过POP3协议获取邮箱内容的,所以自己的邮箱需要先开通POP3服务,以及使用授权码作为登录密码。

2.POP3协议收取服务器中的邮件时,会在服务器端删除所收取的信件。所以还要视情况对个人邮箱设置“禁止收件软件删信”、“保留备份”等,以免误删信件。

二、下载PDF文件后进行打印

所有附件的名称都叫“滴滴电子发票.pdf”,为了避免文件名重复、文件覆盖等问题,我们选择“下载发票-打印发票-删除文件”这样循环操作的方式。

Win32api库提供了使用python语句调用Windows API的功能,其中ShellExecute语句可以用来执行windows程序,比如打开文件-open,打印文件-print等。所以这里的ShellExecute语句就相当于“在指定路径(桌面)对文件(滴滴电子发票.pdf)执行打印”操作,在执行语句的过程中就不用鼠标键盘了,方便自动化。

需要注意的是,语句执行时会跳出Acrobat窗口(这台电脑上安装了Adobe Acrobat Pro来阅读PDF文件),但不会自动关闭,所以还需要通过os.system-taskkill关闭Acrobat进程。

三、满足纸质大小、送纸纸盒等特殊要求

一开始,我们用A4纸把电子发票打印出来即可,法务秘书会统一裁剪并粘贴在报销申请表上。后来,财务人员购买了专用的发票纸张(120mm*210mm),固定放在“手送纸盘”内。因此打印时还需要满足纸质大小、送纸纸盒等特殊需求,遇到了许多实际问题。

1.自定义纸张大小和送纸纸盒

第一种办法是直接更改打印机的首选项,把尺寸、纸盘调整为需要的选项。

不过这样一来,打印其他材料时还需要把打印设置更改回A4纸、自动选择纸盘等。考虑到打印发票的需求不是那么频繁,所以还是不动首选项了。可以通过python在需要打印发票时,才去自定义打印设置。打印完毕后,再将首选项调整回初始状态。

Win32api其中的win32print模块可以获取并修改打印机的属性。首先获取打印机的默认属性:

得到PaperSize=9,DefaultSource=15,也就是说A4纸大小对应的编号是9,自动选择纸盘的编号是15。接下来手动把打印机首选项修改为120mm*210mm纸张大小、手送纸盘。重新获取打印机属性后,PaperSize=200,DefaultSource=4。

这样一来,用win32方法,就可以在打印之前设置好特定的属性,而在打印完毕后恢复默认设置了。

2.打印时的缩放问题

本来以为调好纸张大小和纸盘便大功告成,但是按照上述程序打印出来的发票却是下面这种“缺胳膊少腿”的样子:

研究了一番,发现是“页面缩放方式”的问题。PDF文件打印时默认的缩放方式是“无”,而非“适合可打印的区域”,无法进行自动缩放。当PDF页面大于打印纸时,就会被截掉一部分内容。

由于我们打印文件时使用win32a语句,在打印时除了事先设定好的属性以外,是没有办法做其他调整的(win32print调整打印机的Scale参数不知为何没有实际作用),所以要想想有没有别的方法。

(1)首先想到的是把PDF文件转换为图片格式,如.png/.jpg等,看看图片打印时的默认缩放方式是怎么样的。安装pdf2image库,把PDF转换为png格式,打印试试。

显然,默认的“适应边框打印”又不是我们想要的,看来默认缩放方式老是跟我们过不去。关于这个问题还有网友向微软反映,问怎么取消默认勾选,得到的回复是“很抱歉”。

(2)格式转换不行,那只有从PDF本身入手了,直接调整“滴滴电子发票.pdf”的页面大小。安装PyPDF2库,对于PageObject对象有个scale方法,长宽均缩放到80%,再生成新的PDF文件。

哈哈,这次终于成功了!

2020年,笔者共报销滴滴出行发票141张。虽然用程序打印也没节省太多时间,不过对于设置打印机属性、调整文件大小的研究颇有乐趣,掌握了原理后就能应付各种特殊要求,把批量打印推广到很多其他的办公场景,比如二维码、宣传册、标书等等。当然,笔者对于python提升办公效率的理解和运用还是很初级的,欢迎各位读者交流指正。

文:邵洋

本文为星瀚原创,如需转载请先联系。

1.《怎么打印滴滴发票?我来告诉你答案Python X律师工作效率②:文件打印不用愁》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《怎么打印滴滴发票?我来告诉你答案Python X律师工作效率②:文件打印不用愁》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/3164067.html

上一篇

菜鸟裹裹怎么取消驿站代收功能 关闭代收设置方法

怎么打印滴滴发票吗?总结很全面速看!滴滴,还没到轰然倒塌的时候?

怎么打印滴滴发票吗?总结很全面速看!滴滴,还没到轰然倒塌的时候?

怎么打印滴滴发票吗相关介绍,1 事情一落千丈,很多人义愤填膺。至少大家都表现出很生气的样子。 甚至有人说,要滴滴打印发票。然后,卸载。 实际上,估计也有人开始这样做了。 但是呢,必然也有人,没有这样做。比如,没车、也开不来车的人...

怎么打印滴滴发票?我来告诉你答案滴滴出行怎么开电子票流程 滴滴app开行程单操作方法

  • 怎么打印滴滴发票?我来告诉你答案滴滴出行怎么开电子票流程 滴滴app开行程单操作方法
  • 怎么打印滴滴发票?我来告诉你答案滴滴出行怎么开电子票流程 滴滴app开行程单操作方法
  • 怎么打印滴滴发票?我来告诉你答案滴滴出行怎么开电子票流程 滴滴app开行程单操作方法

怎么打印滴滴发票吗?终于找到答案了从一张电子发票看滴滴的财税创新

  • 怎么打印滴滴发票吗?终于找到答案了从一张电子发票看滴滴的财税创新
  • 怎么打印滴滴发票吗?终于找到答案了从一张电子发票看滴滴的财税创新
  • 怎么打印滴滴发票吗?终于找到答案了从一张电子发票看滴滴的财税创新

怎么打印滴滴发票?终于找到答案了滴滴出行怎么打印电子发票?网上开电子发票流程

  • 怎么打印滴滴发票?终于找到答案了滴滴出行怎么打印电子发票?网上开电子发票流程
  • 怎么打印滴滴发票?终于找到答案了滴滴出行怎么打印电子发票?网上开电子发票流程
  • 怎么打印滴滴发票?终于找到答案了滴滴出行怎么打印电子发票?网上开电子发票流程
怎么打印滴滴发票吗?我来告诉你答案滴滴专车也能打印正规出租车票 系出租司机丢失

怎么打印滴滴发票吗?我来告诉你答案滴滴专车也能打印正规出租车票 系出租司机丢失

怎么打印滴滴发票吗相关介绍,西部网络新闻(陕西广播公司《第一新闻》记者李东芳)出租车发票作为乘客报销凭证,只有正式的出租车司机,但两天前记者从滴滴软件打车的过程中得知,滴滴专用的车司机也可以在现场打印收据。这是怎么回事? 4月1...