Как открыть файл pdf в ms word через python - PullRequest
0 голосов
/ 05 августа 2020

Я могу легко щелкнуть левой кнопкой мыши по текстовому файлу и затем сказать «Открыть с помощью слова». Ms word автоматически преобразует PDF-файл в формат docx без форматирования (мне не нужно форматирование). Я хочу автоматически открывать пакет файлов pdf и сохранять их в другой папке как тип docx (желательно через python). Есть предложения, как это сделать?

Я пробовал python библиотеки, такие как pypdf2, но они не получают все содержимое документа. В настоящее время мне нужно вручную открыть файл pdf в ms word, затем сохранить его, открыть и обработать с помощью python.

1 Ответ

1 голос
/ 05 августа 2020

Простым решением было бы использовать такую ​​систему os.system:

import os
os.system("'Path_to_your_word_exe' 'path_to_your_p df'")

В этом решении есть проблема с пробелами внутри пути, поэтому я рекомендую использовать вызов подпроцесса:

import subprocesss
subprocess.call([r'raw path to word', r'raw path to file'])

пример:

subprocess.call([r'C:\Program Files\Microsoft Office\root\Office16\WINWORD.exe', r'C:\Users\gopco\Downloads\SCYR.pdf'])

Чтобы автоматизировать работу для нескольких файлов в одном каталоге, используйте следующий код:

import win32com.client
import os

#start word
word = win32com.client.Dispatch("Word.Application")
#allow word to print error messages (if any)
word.visible = 1

pdfs_path = "./" # folder with pdfs
reqs_path = "./" # folder for saving docx files

for i, doc in enumerate(glob.iglob(pdfs_path+"*.pdf")):
    filename = doc.split('\\')[-1] #get just the file name
    in_file = os.path.abspath(doc) #absolute path
    print(in_file)
    wb = word.Documents.Open(in_file) #open the pdf in word
    out_file = os.path.abspath(reqs_path +filename[0:-4]+ ".docx".format(i)) #set the filename for saving the docx
    print("outfile\n",out_file)
    wb.SaveAs2(out_file, FileFormat=16) # file format for docx
    print("success...")
    wb.Close()

word.Quit()```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...