from pdf2docx import Converter
def convert_pdf_to_word(pdf_path, docx_path, font_path):
# 创建 pdf2docx.Converter 对象,用于进行 PDF 到 Word 文档的转换操作。
cv = Converter(pdf_path)
# 设置系统默认字体文件的路径
cv.font_path = font_path
# docx_path 转换后的文档路径 start end 用于指定转换的页面范围 为None 则转换整个pdf文件
cv.convert(docx_path, start=0, end=None)
# 关闭转换器
cv.close()
# pdf文件名
pdf_file = "2023_PDF.pdf"
# word文件名
word_file = "output.docx"
default_font = r"C:\Windows\Fonts\Candarai.ttf" # 替换为系统默认字体文件的路径
convert_pdf_to_word(pdf_file, word_file, default_font)
上述方法适用于 一般的pdf转换。像简历之类的pdf转换会报字体错误。
查看系统所有字体路径
import matplotlib.font_manager as fm
# 获取系统中可用的字体列表
font_list = fm.findSystemFonts()
# 打印字体列表
for font_path in font_list:
print(font_path)
查看指定字体路径
import os
from ctypes import windll, create_unicode_buffer
def find_arial_font_path():
# 获取 Arial 字体文件的完整路径
font_name = "Calibri"
buffer_size = 1024
font_buffer = create_unicode_buffer(buffer_size)
# 获取 Windows 系统目录路径
result = windll.kernel32.GetSystemWindowsDirectoryW(font_buffer, buffer_size)
if result == 0:
return None
windows_directory = font_buffer.value
font_file = os.path.join(windows_directory, "Fonts", font_name + ".ttf")
if os.path.isfile(font_file):
return font_file
else:
return None
# 查找 Calibri 字体的路径
arial_font_path = find_arial_font_path()
print(arial_font_path)
5403

被折叠的 条评论
为什么被折叠?



