1.PDF转Word
PDF转成Word主要使用了Spire.PDF包。Spire.PDF是一款专业的PDF组件,它提供了丰富的功能来创建、编辑、操作和阅读PDF文件。
1.1 Spire.PDF常用功能
Spire.PDF是一个强大的PDF处理库,能帮助我们轻松地从PDF文件中提取文字和图片信息。
安装:
pip install spire
- 从PDF文件提取文字信息
要提取PDF文件的文字信息,需要使用Spire.PDF插件中的Text对象。需要加载一个PDF文件,并创建一个Text对象。Text对象的extract方法可以用来提取PDF文件中的文字信息
from spire.pdf import File, Text
# 打开PDF文件
pdf_file = File.load('test.pdf')
# 创建Text对象并提取文字信息
text = Text()
text.extract(pdf_file)
print(text.getText())
- 从PDF文件提取图片信息
使用Spire.PDF插件来提取PDF文件中的图片信息。需要使用Spire.PDF插件中的Image对象。加载一个PDF文件,并创建一个Image对象。然后,我们可以使用Image对象的extract方法来提取PDF文件中的图片信息。
from spire.pdf import File, Image
# 打开PDF文件
pdf_file = File.load('test.pdf')
# 创建Image对象并提取图片信息
image = Image()
image.extract(pdf_file)
for i in range(image.getCount()):
print(image.getFormat(i))
- 选择特定的页面来提取信息
可以使用Spire.PDF插件中的其他对象(如Page对象)来选择特定的页面来提取信息,或者对提取的信息进行更复杂的处理.
from spire.pdf import File, Text, Page
# 打开PDF文件并获取第一页
pdf_file = File.load('test.pdf')
page = pdf_file.getPage(0)
# 提取第一页的文字和图片信息
text = Text()
text.extract(page)
print(text.getText())
image = Image()
image.extract(page)
for i in range(image.getCount()):
print(image.getFormat(i))
1.2 PDF转word代码
import os
# 导入包
from spire.pdf import PdfDocument
from spire.pdf import FileFormat
def pdf_to_word(pdf_path,out_path):
# 确保输出路径存在,不存在就创建
if not os.path.exists(out_path):
os.makedirs(out_path)
pdf_list=os.listdir(pdf_path)
for pdffile in pdf_list:
if pdffile.endswith(".pdf"):
pdf_dir=os.path.join(pdf_path, pdffile)
filename=pdffile.split('.')[0]
out_save=os.path.join(out_path, filename+'.docx')
# 创建PdfDocument类的实例
pdf = PdfDocument()
# 载入PDF文件
pdf.LoadFromFile(pdf_dir)
# 将PDF文件直接转换为Docx文件并保存
pdf.SaveToFile(out_save, FileFormat.DOCX)
# 关闭实例
pdf.Close()
print("已完成{}转成word".format(pdffile))
else:
pass
if __name__=="__main__":
pdf_folder = r'E:\PDF\'
txt_save = 'E:\\toword'
pdf_to_word(pdf_folder,txt_save)
2. PDF转TXT
需要安装Python当中的PyMuPDF库。PyMuPDF是一个用于处理PDF文件的Python库,它提供了丰富的功能来操作、分析和转换PDF文档。
2.1 PyMuPDF常用功能
安装:
pip install PyMuPDF
- 打开 PDF 文件
import fitz
pdf_path = 'example.pdf'
pdf_doc = fitz.open(pdf_path)
- 读取页面
page_count = pdf_doc.page_count
print(f"页面总数:{page_count}")
# 读取第一页
page = pdf_doc[0]
- 提取文本
text = page.get_text()
print(text)
- 提取图像
images = page.get_images()
for i, image in enumerate(images):
xref = image[0]
base_image = pdf_doc.extract_image(xref)
image_path = f"image_{i}.png"
base_image.save(image_path, "png")
- 添加新文本
pdf_document = fitz.open(pdf_path)
# 获取第一页
page = pdf_document[0]
# 绘制文本
page.insert_text((100, 100), "Hello, PyMuPDF!", fontsize=12, color=(0, 0, 1))
- 插入图片
chart_image = fitz.Pixmap('chart.png')
# 获取图片尺寸和位置
chart_width = chart_image.width
chart_height = chart_image.height
# chart_rect = fitz.Rect(x0, y0, x1, y1) x0,y0 左上点 x1,y1 右下点
chart_rect = fitz.Rect(100, 270, 500, 500)
# 在页面上绘制图片
page.insert_image(chart_rect, pixmap=chart_image)
# 保存修改
pdf_document.save("chart.pdf")
# 关闭文件
pdf_document.close()
- 创建新的 PDF 文件
new_pdf = fitz.open()
# 创建一个新的页面
new_page = new_pdf.new_page()
# 添加文本
new_page.insert_text((100, 100), "Hello, PyMuPDF!")
# 保存为新的 PDF 文件
new_pdf.save("new_file.pdf")
# 关闭 PDF 文档
new_pdf.close()
2.2 PDF转TXT代码
import fitz
import os
def pdf_to_txt(pdf_folder, out_folder):
# 确保指定的文件夹存在
if not os.path.exists(out_folder):
os.makedirs(out_folder)
if not os.path.exists(pdf_folder):
print("指定的文件夹不存在。")
else:
# 遍历PDF文件夹中的所有PDF文件
for pdf_filename in os.listdir(pdf_folder):
if pdf_filename.endswith('.pdf'):
pdf_path = os.path.join(pdf_folder, pdf_filename)
# 打开PDF文件
pdf_document = fitz.open(pdf_path)
# 获取PDF中的所有页面并将它们合并为一个字符串
pdf_text = ""
for page_num in range(pdf_document.page_count):
page = pdf_document.load_page(page_num)
pdf_text += page.get_text()
# 创建一个TXT文件并将PDF内容写入其中
txt_filename = os.path.splitext(pdf_filename)[0] + '.txt'
txt_path = os.path.join(out_folder, txt_filename)
with open(txt_path, 'w', encoding='utf-8') as txt_file:
txt_file.write(pdf_text)
pdf_document.close()
# 重新打开TXT文件,将编码更改为UTF-8
with open(txt_path, 'r', encoding='utf-8') as txt_file:
content = txt_file.read()
with open(txt_path, 'w', encoding='utf-8') as txt_file:
txt_file.write(content)
print("PDF文件已成功转换为TXT文件!")
if __name__=="__main__":
pdf_folder = r'E:\\PDF'
out_folder = 'E:\\totxt'
pdf_to_txt(pdf_folder, out_folder)
3. Word 转TXT
Word(.docx)转TXT, 需要使用Python中的python-docx库。python-docx是一个Python库,用于创建、修改Microsoft Word(.docx)文件。这个库使得Python开发者能够方便地在Python环境中操作Word文档,包括添加、删除、修改文档中的文本、段落、表格、图片等内容。
3.1 python-docx常用功能
安装:
pip install python-docx
- 创建或打开一个文档对象
from docx import Document
# 创建一个新的空白文档对象
document = Document()
# 打开已有文档
document = Document('模板.docx')
- 插入标题
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
# 添加一个二级标题
head = document.add_heading(level=2)
# 标题居中
head.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
# 标题的内容
run = head.add_run('输入标题文字')
# 字体
run.font.name = 'Times New Roman'
- 插入一个段落
from docx.shared import Pt
# 先获得段落对象
p = document.add_paragraph()
# 首行缩进20磅
p.paragraph_format.first_line_indent = Pt(20)
# 设置段落格式
fmt = p.paragraph_format
# 设置行间距
fmt.line_spacing = 1.5
# 一个段落可以有多个run对象,主要考虑同一段落的文字可能有多种样式
run = p.add_run('段落内容1')
- 插入页眉
from docx.shared import Cm
section = document.sections[0]
header = section.header
paragraph = header.paragraphs[0]
# 也可以直接插入文字
run = paragraph.add_run()
# 这里是插入logo图片
run.add_picture("logo.png", height=Cm(0.91))
- 插入图片
# 指定图片文件目录,指定插入后图片所占尺寸(会根据原始尺寸和指定尺寸自动缩放)
document.add_picture('xx.png', width=Pt(500), height=Pt(400))
3.2 Word转txt代码
import os
from docx import Document
def word_to_txt(docx_folder, txt_save):
# 确保指定的文件夹存在
if not os.path.exists(txt_save):
os.makedirs(txt_save)
if not os.path.exists(docx_folder):
print("指定的文件夹不存在。")
else:
# 遍历Word文档文件夹中的所有Word文档
# i=0
for docx_filename in os.listdir(docx_folder):
if docx_filename.endswith('.docx'):
# i+=1
# if i>1:
# break
print("正在处理的word文档{}".format(docx_filename))
docx_path = os.path.join(docx_folder, docx_filename)
txt_filename = os.path.splitext(docx_filename)[0] + '.txt'
txt_path = os.path.join(txt_save, txt_filename)
# 打开Word文档
doc = Document(docx_path)
# 创建一个TXT文件并将Word文档内容写入其中
with open(txt_path, 'w', encoding='utf-8') as txt_file:
for paragraph in doc.paragraphs:
txt_file.write(paragraph.text + '\n')
print("Word文档已成功转换为UTF-8编码的TXT文件。")
if __name__=="__main__":
docx_folder = 'E:\\Word'
txt_save = 'E:\\TXT'
word_to_txt(docx_folder, txt_save)