赞
踩
1、word文件转换成pdf文件
要将word文件转换成pdf文件,可以使用Python的pywin32
库结合Microsoft Office软件来实现。
方法一:
import win32com.client as win32
def word_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)
在代码中,首先导入了win32com.client
模块,并使用EnsureDispatch
方法来创建一个Word应用程序的对象。然后使用Documents.Open
方法打开输入的Word文件。
通过调用SaveAs
方法,并将FileFormat
参数设置为17,可以将Word文件保存为PDF格式。最后,使用Close
方法关闭打开的文档,并使用Quit
方法关闭Word应用程序。
请注意,此代码需要安装pywin32
库和Microsoft Office软件才能正常运行。
方法二:
此方法适用于linux和Windows环境,方法一只适用于Windows环境
# word转Pdf def word_change_pdf(word_file_path): """ 将word文件转换成pdf文件 :param word_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' in os_system: # LibreOffice本地位置D:/Download/LibreOffice/program/soffice.exe command = ['D:/Download/LibreOffice/program/soffice.exe', '--convert-to', 'pdf', '--outdir', out_dir, word_file_path] else: # LibreOffice在虚拟机的位置:/usr/bin/libreoffice7.6 command = ['/opt/libreoffice7.6/program/soffice.bin', '--convert-to', 'pdf', '--outdir', out_dir, word_file_path] subprocess.Popen(command).communicate() return pdf_path
2、pdf转换成图片
使用Python可以使用PyPDF2库将PDF文件转换为图片文件。
方法1:
import os import PyPDF2 from pdf2image import convert_from_path # 将PDF文件转换为图片 def pdf_to_image(input_path, output_path): # 打开PDF文件 with open(input_path, "rb") as file: pdf = PyPDF2.PdfReader(file) # 遍历PDF的每一页 for i in range(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)
请注意,在运行此代码之前,您需要安装PyPDF2
库和pdf2image
库。您可以使用以下命令安装这两个库:
pip install PyPDF2 pdf2image
同时,还需要安装poppler
工具,以在Python中处理PDF文件:
poppler
:https://blog.alivate.com.au/poppler-windows/poppler
:sudo apt-get install -y poppler-utils
此代码将把每一页PDF文件转换为单独的JPEG图像文件,并将它们保存在指定的输出文件夹中。
方法2:
import fitz def pdf_change_png(pdf_file_path): """ 将pdf转换成图片 :param pdf_file_path: pdf文件地址 """ jpg_name = pdf_file_path.replace("pdf", "jpg") # 另存为pdf文件 try: pdf_doc = fitz.open(pdf_file_path) for pg in range(pdf_doc.page_count): page = pdf_doc[pg] rotate = int(0) # 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。 # 此处若是不做设置,默认图片大小为:792X612, dpi=96 zoom_x = 1.33333333 # (1.33333333-->1056x816) (2-->1584x1224) zoom_y = 1.33333333 mat = fitz.Matrix(zoom_x, zoom_y).prerotate(rotate) pix = page.get_pixmap(matrix=mat, alpha=False) pix.save(jpg_name) # 将图片写入指定的文件夹内 except IOError: raise ('pdf转png失败', pdf_file_path)
3、将图片进行抠图处理
将图片进行抠图处理
def extract_picture(local_path, exchange_picture_path, qm_type): """ 将上传的图片进行抠图, :param local_path: 本地上传的文件地址 :param exchange_picture_path: 抠出的图片地址 :param qm_type: 1为扣签名图,2为扣指纹图;注:签名图为白底黑字,指纹图为白底红字,若是其他的颜色请改变item的判断值 """ img = Image.open(local_path) img = img.convert('RGBA') data = img.getdata() new_data = [] if qm_type == 1: # 签名的抠图 for item in data: # 签名信息 if item[0] <= 60 and item[1] <= 60 and item[2] <= 60: new_data.append(item) else: new_data.append((255, 255, 255, 0)) elif qm_type == 2: # 指纹的抠图 for item in data: # 指纹信息 if item[0] >= 120 and item[1] <= 100 and item[2] <= 100: new_data.append(item) else: new_data.append((255, 255, 255, 0)) else: return img.putdata(new_data) img.save(exchange_picture_path, format='PNG')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。