找回密码
 会员注册
查看: 37|回复: 0

python将word文件转换成pdf文件,pdf转图片、将图片抠图

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
72245
发表于 2024-9-7 16:41:07 | 显示全部楼层 |阅读模式
1、word文件转换成pdf文件要将word文件转换成pdf文件,可以使用Python的pywin32库结合MicrosoftOffice软件来实现。方法一:importwin32com.clientaswin32defword_to_pdf(input_file,output_file):word=win32.gencache.EnsureDispatch('Word.Application')doc=word.Documents.Open(input_file)doc.SaveAs(output_file,FileFormat=17)doc.Close()word.Quit()#示例使用input_file='input.docx'output_file='output.pdf'word_to_pdf(input_file,output_file)12345678910111213在代码中,首先导入了win32com.client模块,并使用EnsureDispatch方法来创建一个Word应用程序的对象。然后使用Documents.Open方法打开输入的Word文件。通过调用SaveAs方法,并将FileFormat参数设置为17,可以将Word文件保存为PDF格式。最后,使用Close方法关闭打开的文档,并使用Quit方法关闭Word应用程序。请注意,此代码需要安装pywin32库和MicrosoftOffice软件才能正常运行。方法二:此方法适用于linux和Windows环境,方法一只适用于Windows环境#word转Pdfdefword_change_pdf(word_file_path):"""将word文件转换成pdf文件:paramword_file_path:word文件地址:return:返回转成的pdf地址信息"""suffix=os.path.basename(word_file_path).split('.')[1]#另存为pdf文件pdf_path=word_file_path.replace(suffix,"pdf")out_dir=pdf_path.rsplit('/',1)[0]+'/'if'window'inos_system:#LibreOffice本地位置D:/Download/LibreOffice/program/soffice.execommand=['D:/Download/LibreOffice/program/soffice.exe','--convert-to','pdf','--outdir',out_dir,word_file_path]else:#LibreOffice在虚拟机的位置:/usr/bin/libreoffice7.6command=['/opt/libreoffice7.6/program/soffice.bin','--convert-to','pdf','--outdir',out_dir,word_file_path]subprocess.Popen(command).communicate()returnpdf_path123456789101112131415161718192021222324'运行运行2、pdf转换成图片使用Python可以使用PyPDF2库将PDF文件转换为图片文件。方法1:importosimportPyPDF2frompdf2imageimportconvert_from_path#将PDF文件转换为图片defpdf_to_image(input_path,output_path):#打开PDF文件withopen(input_path,"rb")asfile:pdf=PyPDF2.PdfReader(file)#遍历PDF的每一页foriinrange(len(pdf.pages)):#将页面转换为图像images=convert_from_path(input_path,first_page=i+1,last_page=i+1)#保存图像文件image_path=os.path.join(output_path,"page{}.jpg".format(i+1))images[0].save(image_path,"JPEG")#指定PDF文件和输出文件夹input_file="path/to/input.pdf"output_folder="path/to/output"#调用函数进行转换pdf_to_image(input_file,output_folder)12345678910111213141516171819202122232425请注意,在运行此代码之前,您需要安装PyPDF2库和pdf2image库。您可以使用以下命令安装这两个库:pipinstallPyPDF2pdf2image1同时,还需要安装poppler工具,以在Python中处理PDF文件:Windows用户可以从以下链接下载并安装poppler:https://blog.alivate.com.au/poppler-windows/Linux用户可以使用以下命令安装poppler:sudoapt-getinstall-ypoppler-utils1此代码将把每一页PDF文件转换为单独的JPEG图像文件,并将它们保存在指定的输出文件夹中。方法2:importfitzdefpdf_change_png(pdf_file_path):"""将pdf转换成图片:parampdf_file_path:pdf文件地址"""jpg_name=pdf_file_path.replace("pdf","jpg")#另存为pdf文件try:pdf_doc=fitz.open(pdf_file_path)forpginrange(pdf_doc.page_count):page=pdf_doc[pg]rotate=int(0)#每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。#此处若是不做设置,默认图片大小为:792X612,dpi=96zoom_x=1.33333333#(1.33333333-->1056x816)(2-->1584x1224)zoom_y=1.33333333mat=fitz.Matrix(zoom_x,zoom_y).prerotate(rotate)pix=page.get_pixmap(matrix=mat,alpha=False)pix.save(jpg_name)#将图片写入指定的文件夹内exceptIOError:raise('pdf转png失败',pdf_file_path)1234567891011121314151617181920212223242526273、将图片进行抠图处理将图片进行抠图处理defextract_picture(local_path,exchange_picture_path,qm_type):"""将上传的图片进行抠图,:paramlocal_path:本地上传的文件地址:paramexchange_picture_path:抠出的图片地址:paramqm_type:1为扣签名图,2为扣指纹图;注:签名图为白底黑字,指纹图为白底红字,若是其他的颜色请改变item的判断值"""img=Image.open(local_path)img=img.convert('RGBA')data=img.getdata()new_data=[]ifqm_type==1:#签名的抠图foritemindata:#签名信息ifitem[0]=120anditem[1]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-11 06:09 , Processed in 0.438226 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表