同城头条  >  技术分享  >  [原创工具] 单面扫描正反面文件后合并
[原创工具] 单面扫描正反面文件后合并
2022年02月16日 08:56   浏览:32   来源:小报道

鉴于有人回复说合成的PDF打开报错,我测试了下都是不正确的使用导致的。于是我更新了下代码并附上新版下载地址。

 复制代码 隐藏代码
import osimport ntpathimport sysimport PyPDF2class File:    def __init__(self, path: str):        if not ntpath.exists(path):             print('文件不存在')             raise FileNotFoundError         self.abspath = ntpath.abspath(path)         self.filetype = ntpath.splitext(self.abspath)[1]         self.filename = ntpath.splitext(ntpath.basename(self.abspath))[0]         self.dirpath = ntpath.dirname(self.abspath) + '\\'def merge(file1, file2):    a = File(file1)     b = File(file2)     if a.filetype != '.pdf' or b.filetype != '.pdf':         print('文件类型错误')         os.system('pause')         exit(1)     f1 = open(a.abspath, 'rb')     f2 = open(b.abspath, 'rb')     reader1 = PyPDF2.PdfFileReader(f1)     reader2 = PyPDF2.PdfFileReader(f2)     writer = PyPDF2.PdfFileWriter()     if reader1.numPages != reader2.numPages:         print('页数不相等')         os.system('pause')         exit(2)     for i in range(reader1.numPages):         writer.addPage(reader1.getPage(i))         writer.addPage(reader2.getPage(-(i + 1)))     newf = open(a.dirpath + a.filename + '+' + b.filename + '.pdf', "wb")     writer.write(newf)     f1.close()     f2.close()     newf.close()def print_help():    help_str = '''     帮助:     把要合并的文件选中拖到软件图标上打开即可。     软件用途:适用于 单面扫描仪 扫描 双面文件 产生的 两个PDF文件 的合并。     详细帮助:     假设,文件为3页的双面文件,使用单面扫描仪扫描出来的两个PDF文件分别为A.PDF和B.PDF。     其中A文件中的页数为1、3、5。B文件中的页数为6、4、2.     把A、B两个文件同时选中,拖动到本程序图标上即可,显示“用正反面扫描合并打开”时松开鼠标。     '''    print(help_str)     os.system('pause')def main():    args: list = sys.argv[1:]     i = len(args)     if i >= 2 and i % 2 == 0:         args.sort()         for j in range(0, i, 2):             merge(args[j], args[j + 1])     else:         print_help()     exit(0)if __name__ == '__main__':     main()

下载地址

起因

上次有一份很多页的正反面文件需要扫描,但是公司打印机只支持单面扫描,所以就自己研究了这个小工具。

原理

假设一个文件有3张纸6页,A1 A2 B1 B2 C1 C2
使用打印机单面进纸器扫描正面,第一个文件包含页数分别为A1 B1 C1
然后把文件反过来扫描背面,此时文档顺序是反的。所以第二个文件包含的页数为 C2 B2 A2
用python处理PDF实现合并。

 复制代码 隐藏代码
import PyPDF2 fileName1 = "f1.pdf"fileName2 = "f2.pdf"newFileName = "new.pdf"with open(fileName1, 'rb') as f1, open(fileName2, 'rb') as f2, open(newFileName, "wb") as newf:     reader1 = PyPDF2.PdfFileReader(f1)     reader2 = PyPDF2.PdfFileReader(f2)     writer = PyPDF2.PdfFileWriter()     if reader1.numPages != reader2.numPages:         print('页数不相等')         exit(1)     for i in range(reader1.numPages):         writer.addPage(reader1.getPage(i))         writer.addPage(reader2.getPage(-(i + 1)))     writer.write(newf)

后续

今天有个同事有十几份正反面文件要扫描,为了降低使用门槛,我更新了代码并且用pyinstaller进行了封装

 复制代码 隐藏代码
import osimport ntpathimport sysimport PyPDF2def merge(file1, file2):    if not (file1.endswith(".pdf") and file2.endswith(".pdf")):         print('文件类型错误')         raise FileExistsError     if not (ntpath.exists(file1) and ntpath.exists(file2)):         print('文件不存在')         raise FileNotFoundError     with open(file1, 'rb') as f1, \             open(file2, 'rb') as f2, \             open(ntpath.dirname(file1) + "\\" + ntpath.splitext(ntpath.basename(file1))[0] + "+" + ntpath.splitext(                 ntpath.basename(file2))[0] + ".pdf",                  "wb") as newf:         reader1 = PyPDF2.PdfFileReader(f1)         reader2 = PyPDF2.PdfFileReader(f2)         writer = PyPDF2.PdfFileWriter()         if reader1.numPages != reader2.numPages:             print('页数不相等')             raise FileExistsError         for i in range(reader1.numPages):             writer.addPage(reader1.getPage(i))             writer.addPage(reader2.getPage(-(i + 1)))         writer.write(newf)def print_help():    help_str = ''' 帮助信息: 可双击打开后手动输入路径 也可以把要合并的文件路径以参数形式传入(数量必须为偶数) 合并是以文件名排序的 '''    print(help_str)def main():    args: list = sys.argv[1:]     args.sort()     if len(args) == 0:         file_a = input('第一个文件')         file_b = input('第二个文件')         merge(file_a, file_b)     elif len(args) == 1:         print_help()         # if args[0] in ['-h', '--help', '/?']:        #     print_help()        # else:        #     print_help()    elif len(args) % 2 == 0:         for i in range(0, len(args), 2):             merge(args[i], args[i + 1])         print('合并完成')     else:         print_help()     os.system('pause')if __name__ == '__main__':     main()

效果


头条号
小报道
介绍
报道大小信息,宣传正能量!
推荐头条
Keywords" 仪陇网、仪陇生活网、专注仪陇本地信息真实传递_仪陇网d-sj.cn/学法减分好助理答题神器一扫就出答案、学法减分好助理扫一扫知道答案app、学法减分好助理考试题库、学法减分好助理20道题模拟考试、学法减分好助理可以减多少分?、学法减分好助理拍照搜题 秒出答案免费、学法减分好助理拍照搜题、学法减分好助理拍照搜题 秒出答案、学法减分好助理可以申请几次?、学法减分好助理题库最新版、仪陇生活网、仪陇生活网招聘、仪陇招聘驾驶员、仪陇新政有哪些厂还在招工、仪陇人才网、仪陇在线、仪陇新政最新急招聘58同城、仪陇新政哪有做兼职的、仪陇县招聘信息最新招聘仪陇生活网招聘、仪陇招聘网最新招聘信息、仪陇生活网二手房、仪陇生活网最新消息、仪陇生活网门面转让、仪陇生活网住房出租最新消息、仪陇生活网发布了信息如何取消、四川仪陇生活网、仪陇人才招聘信息生活网、仪陇生活网、仪陇生活网招聘、仪陇招聘网最新招聘信息、仪陇生活网最新消息、仪陇生活网门面转让、仪陇生活网二手房、仪陇生活网住房出租最新消息、仪陇生活网最新招聘暑假工、四川仪陇生活网、仪陇手机生活网、仪陇招聘网最新招聘信息、仪陇招聘驾驶员、仪陇县租房信息、仪陇新政招聘网最新招聘、仪陇找工作、仪陇最新招聘、仪陇生活网招聘、仪陇人才网、仪陇招聘信息招聘仪陇招聘信息信息、仪陇招聘c1驾照、仪陇房价、四川仪陇县房价多少钱一平方米、仪陇县房价现在是多少、仪陇房产网、仪陇新政房价多少钱一平米、仪陇新政房价、仪陇房价为什么这么高、仪陇房价多少钱一平方、仪陇房价如何走、仪陇房价为什么这么高2019、仪陇新闻网、仪陇新闻网头条、仪陇新闻最新消息今天、仪陇新闻网今日新闻、仪陇新闻直播、仪陇新闻网丁强、仪陇新闻网直播视频、仪陇新闻视频、仪陇新闻综合频道直播、仪陇广告公司、仪陇广告语、仪陇金山广告、仪陇驾校、仪陇驾校报名费用、仪陇驾校C1多少费用、仪陇驾校88队哪个教练好、仪陇驾校在什么地方、仪陇驾校科目一考试、仪陇驾校学费、仪陇驾校科一早上笫一堂几点、仪陇驾校蒲、仪陇坤安驾校、仪陇工厂招聘、仪陇工厂有拿回家干的活吗?、仪陇新政工厂招聘、仪陇新政招聘信息工厂、仪陇家电维修、仪陇家电回收、仪陇家电清洗、仪陇电脑维修哪家好、仪陇电脑城在哪里、仪陇电脑销售在什么地方、仪陇电脑回收、仪陇电脑培训、仪陇电脑商家、壹家电脑维修、仪陇二手家具市场、仪陇家具城、仪陇家具厂、仪陇家具维修师傅、仪陇家具定制、仪陇家具厂网上程、仪陇家具市场、仪陇家具城在哪里、仪陇二手家具回收、南充仪陇二手家具市场、四川仪陇房产信息网、仪陇马鞍房价、广西桂林房价、仪陇一中录取分数线2021、仪陇翰林锦府、仪陇金城二手房的房价、仪陇房价为什么这么高、仪陇新政租房最新消息、仪陇县金城镇房价下跌、仪陇县招聘信息最新招聘、仪陇房产网、仪陇河西工业区招聘、仪陇门面出租、四川仪陇黑老大周超、仪陇县金城镇二手房最新消息、仪陇新政本地招聘启事、四川仪陇新镇最新招聘、仪陇县找工作生活网、如何自学电脑维修、娄星区关家垴附近电脑维修、恒达行家维修培训怎么样、珠海唐家电脑维修、台式机维修去哪家好、笔记本维修哪家好、仪陇电脑维修哪家好、电脑维修公司哪家好、秀洲区电脑维修哪家好、仪陇新政本地招聘启事、仪陇县金城镇二手房最新消息、仪陇招聘网最新招聘信息、仪陇新政有哪些厂还在招工、仪陇县河西工业区招工、南部人才网、四川仪陇黑老大周超、仪陇新政哪有做兼职的、四川仪陇新镇最新招聘、长津湖电影、长津湖电影时间多长、长津湖电影完整版免费观看、长津湖电影观后感、长津湖电影完整版免费观看HD、长津湖电影完整版免费观看2021、长津湖电影完整版免费观看网站、长津湖电影观后感500字、长津湖电影票多少钱一张、长津湖电影票购买、长津湖成影史历史片票房冠军、长津湖电影完整版免费观看、长津湖3个冰雕连仅2人生还、长津湖战役、长津湖2021免费完整版观看、长津湖票房破30亿、长津湖作文、长津湖观后感、长津湖手抄报、长津湖观后感10篇、刷手机下拉示选上海百首网络、刷手机下拉述约上海百首网络、刷手机下拉安选上海百首网络、刷手机下拉尚选上海百首网络、刷手机下拉安信上海百首网络、苹果手机下拉菜单、华为手机不能下拉、手机下拉功能在哪里设置、手机下拉设置在哪里设置、手机不能下拉通知栏、仪陇天气、仪陇房产网新楼盘、仪陇县楼盘房价最新消息、仪陇县、仪陇天气预报15天、仪陇县房价、仪陇招聘网最新招聘信息、仪陇属于四川哪个市、仪陇县金城镇、仪陇网、仪陇房产网新楼盘、仪陇县招聘网、仪陇网上在逃人员、仪陇网吧多久开业、仪陇网约车平台、仪陇网红地、仪陇网吧、仪陇网吧开门了吗、仪陇网络电视台、仪陇生活网、仪陇生活网招聘、仪陇生活网最新招聘信息、仪陇生活网最新消息、仪陇生活网门面转让、仪陇生活网二手房、仪陇生活网发布了信息如何取消、四川仪陇生活网、仪陇手机生活网、仪陇人才招聘信息生活网、仪陇丁家大院、仪陇森家环保、仪陇县房价、仪陇二手房、仪陇二手房出售信息、仪陇房产查询系统、仪陇房子出售、仪陇房子能不能买、仪陇房子贵、仪陇房子还会拆迁、仪陇房子出租、仪陇首座房子好不好、仪陇房产网新楼盘、仪陇房产网、仪陇房产备案查询、仪陇房产信息网、仪陇房产查询系统、仪陇房产管理局官网、仪陇房产交易网、仪陇房产价格、仪陇房产中介、仪陇房产局、仪陇河西工业区有些什么厂、仪陇县河西工业区招工、仪陇河西工业园2020招聘、仪陇河西电子厂招聘信息、仪陇河西招聘驾驶员、仪陇河西大华宝公学、仪陇河西工业区有哪些制衣厂、仪陇河西工业园、仪陇河西工业区电子厂、仪陇河西工业区灯泡厂、薇仪陇之家、薇仪陇生活网新政房价、仪陇新政房价、仪陇新政二手房出售、仪陇新政楼盘、仪陇在线、仪陇生活网、仪陇生活网是大家了解仪陇的资讯窗口,同时也是仪陇人的网上家园,为大家提供免费查询发布仪陇便民生活信息,是仪陇地区综合信息门户网站!

Copyright ©2021 仪陇家园同城网--版权所有   蜀ICP备2022002889号-1