PDF导出为图片并生成WORD
大家好,我消失了太久,不知道大家还记不记得我.前段时间有人提了个很奇怪的要求:他们要投标,投标方需要word形式的标书,标书内又要有公司内部几百号人的从业证书,现在标书写好了,每个人自己的从业证书各自扫描了PDF文件。现在需要把这些PDF文件合并,并且插入到word中。
1、pdf合并
大家直接参考之前的文档就可以了
2、导出图片并放入word
首先需要安装三个包
python_docx
pywin32
然后就是代码了
import fitz,osfrom docx import Documentfrom docx.shared import Inchesdef pyMuPDF_fitz(pdfPath): pdfDoc = fitz.open(pdfPath) name = str(pdfPath.split('/')[-1])[:-4] document = Document() for pg in range(pdfDoc.pageCount): page = pdfDoc[pg] rotate = int(0) zoom_x = 1.33333333 zoom_y = 1.33333333 mat = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate) pix = page.getPixmap(matrix=mat, alpha=False) pix.writePNG('0.png')#将图片写入 document.add_picture('0.png', width=Inches(6)) document.save('%s.docx'% name) pyMuPDF_fitz('pdf地址')
为了使用更方便我优化了一下代码:主要就是做了个界面,实现用户可以直接选择pdf文件,在同目录下会直接生成word文档,然后打包成了一个exe文件,让用户可以不装python实现操作。
__author__ = 'zhangqi'
import fitz,os
from docx import Document
from tkinter import *
from tkinter import filedialog
import tkinter
from docx.shared import Inches
def openfile():
global path
path = filedialog.askopenfilename( filetypes=[('所有支持的类型', '*.pdf'), ('All Files', '*')])
text2.set(path)
def pyMuPDF_fitz(pdfPath):
pdfDoc = fitz.open(pdfPath)
name = str(pdfPath.split('/')[-1])[:-4]
document = Document()
for pg in range(pdfDoc.pageCount):
page = pdfDoc[pg]
rotate = int(0)
zoom_x = 1.33333333
zoom_y = 1.33333333
mat = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
pix = page.getPixmap(matrix=mat, alpha=False)
pix.writePNG('0.png')#将图片写入
document.add_picture('0.png', width=Inches(6))
document.save('%s.docx'% name)
def ok():
p=str(path)
yp = str('/'.join(p.split('/')[:-1]))
os.chdir(yp)
pyMuPDF_fitz(path)
z = root.destroy()
root = tkinter.Tk()
root.title('内容选择')
root.geometry('300x100+500+300')
text2 = StringVar()
t2 = Entry(root, textvariable = text2)
text2.set(' ')
btn1 = tkinter.Button(root,text='选择需转换的PDF文件', command=openfile)
btn2 = tkinter.Button(root,text='确定', command=ok)
btn1.pack()
t2.pack()
btn2.pack()
root.mainloop()
使用效果:
今天内容就到这里了,大家随缘再见!~