使用python合并发票

您所在的位置:网站首页 电子发票打印两张 使用python合并发票

使用python合并发票

2024-07-10 11:00| 来源: 网络整理| 查看: 265

需求背景:

1.在网上下载的电子发票,需要打印,然后一张一张打开之后,打印比较费劲,如果能把所有的电子发票,合并成一个pdf文件,那么一次打开并打印的操作就能完成所有的发票的打印了。 合并多个发票的pdf

2.打印出来的发票,通常是一张的A4大小,横着打印的话,发票就看起来很大。竖着打印的话,会浪费纸张,如果能把两张发票合并到一张纸上就好了。 两页合并为一夜 在看了PyMuPDF的示例代码之后,写了下面代码,完成了1和2的需求,其中在合并为一页的过程中,为例避免竖向的“发票商品明细”字太小,自动将其转变为横向的。 注释很烂……

from __future__ import print_function import fitz, sys import os NewDir=r"E:\File\2022-11\temp" #working director fnames=[] #to read files for i in os.scandir(NewDir): if (i.is_file() and i.name.endswith(".pdf")): fnames.append(i.name) src = fitz.open() for name in fnames: read_pdf = fitz.open(NewDir+'\\'+name) src.insert_pdf(read_pdf) doc = fitz.open() # empty output PDF width, height = fitz.paper_size("a4") # A4 portrait output page format r = fitz.Rect(0, 0, width, height) # 定义两个矩形 rx = r * 0.706651 r1 = fitz.Rect(0,0,r.width,rx.width) r2 = fitz.Rect(0,rx.width,r.width,r.height) # put them in a list r_tab = [r1, r2] # 现在将输入页面复制到输出 for spage in src: if spage.number % 2 == 0: # create new output page page = doc.new_page(-1, width = width, height = height) if spage.rect.width > spage.rect.height: # 将输入页插入正确的矩形 page.show_pdf_page(r_tab[spage.number % 2], # select output rect src, # input document spage.number, rotate=0) # input page number else: # 将输入页插入正确的矩形 page.show_pdf_page(r_tab[spage.number % 2], # select output rect src, # input document spage.number, rotate=90) # input page number # by all means, save new file using garbage collection and compression doc.save(NewDir+'\\'+"output.pdf", garbage = 4, deflate = True)

需要安装 fitz,PyMuPDF两个库,才能使用。 将需要合并的发票,放在一个空的文件夹之后,修改代码中的路径就可以了。

后续加了一个界面,方便使用: 在这里插入图片描述

核心的代码还是上面那部分,就不上代码了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3