参考了好多资料和文章,然后各种无目的的尝试和实验,成功。希望可以帮到在办公室繁重办公的各位。
import PyPDF2, xlrd,io,os
import win32ui
from PyPDF2 import PdfFileReader, PdfFileWriter
from PIL import Image
import tkinter as tk
from tkinter import filedialog
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfgen import canvas
from reportlab.pdfbase.ttfonts import TTFont
fspec="Excel 2003(*.xls)|*.xls"
dlg = win32ui.CreateFileDialog(1,None, "请选择索引excel表", 1, fspec, None)
'''
请将文件路径放在xls文件第1个表的A列,将从第2行开始
将将要录入的代码放在B列
pdf文件与图片文件是分次处理,故不能统一编码,卡脖子的技术瓶颈已经在改代码中解决,可自行重构代码打到效果
'''
root=tk.Tk()
root.withdraw()
dlg.SetOFNInitialDir('d:/') # 设置打开文件对话框中的初始显示目录
dlg.DoModal() # 显示文件对话框
filename = dlg.GetPathName() # 获取选择的文件名称
outDir=filedialog.askdirectory() # 获取选择的保存
outDir.replace("/","\\") # 格式化文件路径
print(outDir) # print输出路径
wb=xlrd.open_workbook(filename) # 打开索引表
sheet1 =wb.sheets()[0] # 获取索引表的第一个表格
path=sheet1.col(0) # 读取表格第一列的内容:合同文件路径
xulie=sheet1.col(1) # 读取表格第二列的内容:文件编号
'print(path)'
print("=======================================================")
'print(xulie)'
FontSize=16 # 设置字体大小
pdfmetrics.registerFont(TTFont('华光综艺_CNKI', 'HGZY_CNKI.TTF')) # 注册中文字体包
for i in range(1,sheet1.nrows-1): # 遍历表格里的合同文件
file = os.path.splitext(path[i].value) # 获取文件名中的信息
filename, type = file
print("Got-PDF-Path = %s"%path[i].value)
print("Got-PDF-Index = %s"%xulie