Не знаю, как у вас, а у меня на работе иногда возникала проблема в конвертировании файлов из формата docx в формат pdf, чтобы в последующем разместить эти файлы на сайте. А файлов, иногда, бывало довольно много, потому, требовалось каждый открыть и сохранить в нужный формат. В какой-то момент времени мне это немного надоело и я стал искать способ, как бы автоматизировать данный процесс. И выход нашелся. Я написал небольшой скрипт на python, который конвертировал файлы в pdf автоматом. То есть, выполнял работу за меня.
В общем, это небольшой пост, посвящённый автоматизации )
Что потребуется?
Для работы скрипта нужно установить модуль docx2pdf. Потому, отрываем терминал и выполняем команду:
Пишем функцию конвертации
Для того, чтобы конвертировать файл из формата Microsoft Word в PDF, достаточно одной небольшой функции. На входе она будет принимать директорию с файлами docx и конвертировать их по очереди. Впрочем, для того, чтобы исключить попадание конвертеру файлов, расширение которых отлично от docx, сделаем небольшое условие, которое будет проверять файл на необходимое нам расширение. Если расширение другое, то файл будет пропущен, а скрипт продолжит свое выполнение, а не упадет в обмороке.
Вот сама функция, которая нам требуется:
Сканируем директорию и получаем список файлов. Дальше проверяем, есть ли папка, в которую надо будет складывать конвертированные файлы. Если такой папки нет – она будет создана. Ну, а потом перебираем в цикле список со сканированными файлами, проверяем их расширение и если расширение docx, формируем новое имя файла, попутно заменяя все точки в имени на «_». Это нужно для того, чтобы скрипт корректно сохранял файл. Если в имени файла попадается точка, то расширение файла сразу же отбрасывается. Ну и дальше конвертеру передается путь к файлу и имя файла для конвертирования, и путь к файлу, и имя файла для сохранения.
Пример работы скрипта
Ниже можно посмотреть результат работы скрипта:
Как можно заметить, в папке находится один файл в формате doc. Он пропускается, таким образом, из 23 файлов конвертированы только 22.
Вот в принципе и все. Надо отметить, что модуль docx2pdf, как следует из его названия не работает с файлами doc. А потому их, перед тем, как конвертировать нужно так же пересохранить в нужном формате. И тут выход так же нашелся. Но, об этом в следующий раз.
А сейчас, вот полный код скрипта:
Надеюсь, что данный скрипт будет кому-то полезен в работе. Спасибо за внимание
В общем, это небольшой пост, посвящённый автоматизации )
Что потребуется?
Для работы скрипта нужно установить модуль docx2pdf. Потому, отрываем терминал и выполняем команду:
pip install docx2pdf
Пишем функцию конвертации
Для того, чтобы конвертировать файл из формата Microsoft Word в PDF, достаточно одной небольшой функции. На входе она будет принимать директорию с файлами docx и конвертировать их по очереди. Впрочем, для того, чтобы исключить попадание конвертеру файлов, расширение которых отлично от docx, сделаем небольшое условие, которое будет проверять файл на необходимое нам расширение. Если расширение другое, то файл будет пропущен, а скрипт продолжит свое выполнение, а не упадет в обмороке.
Вот сама функция, которая нам требуется:
Python:
def file_convert_docx_pdf(dirs):
file_in_dir = os.listdir(dirs)
if not os.path.isdir(f'{dirs}\\convert_pdf'):
os.mkdir(f'{dirs}\\convert_pdf')
for file in file_in_dir:
if file.endswith('.docx'):
file_k = f'{file.split(".")[0].replace(".", "_")}.pdf'
convert(f'{dirs}\\{file}', f'{dirs}\\convert_pdf\\{file_k}')
else:
continue
Сканируем директорию и получаем список файлов. Дальше проверяем, есть ли папка, в которую надо будет складывать конвертированные файлы. Если такой папки нет – она будет создана. Ну, а потом перебираем в цикле список со сканированными файлами, проверяем их расширение и если расширение docx, формируем новое имя файла, попутно заменяя все точки в имени на «_». Это нужно для того, чтобы скрипт корректно сохранял файл. Если в имени файла попадается точка, то расширение файла сразу же отбрасывается. Ну и дальше конвертеру передается путь к файлу и имя файла для конвертирования, и путь к файлу, и имя файла для сохранения.
Пример работы скрипта
Ниже можно посмотреть результат работы скрипта:
Как можно заметить, в папке находится один файл в формате doc. Он пропускается, таким образом, из 23 файлов конвертированы только 22.
Вот в принципе и все. Надо отметить, что модуль docx2pdf, как следует из его названия не работает с файлами doc. А потому их, перед тем, как конвертировать нужно так же пересохранить в нужном формате. И тут выход так же нашелся. Но, об этом в следующий раз.
А сейчас, вот полный код скрипта:
Python:
import os
from docx2pdf import convert
def file_convert_docx_pdf(dirs):
file_in_dir = os.listdir(dirs)
if not os.path.isdir(f'{dirs}\\convert_pdf'):
os.mkdir(f'{dirs}\\convert_pdf')
for file in file_in_dir:
if file.endswith('.docx'):
file_k = f'{file.split(".")[0].replace(".", "_")}.pdf'
convert(f'{dirs}\\{file}', f'{dirs}\\convert_pdf\\{file_k}')
else:
continue
def main():
dirs = input('Введите папку для сканирования: >> ')
file_convert_docx_pdf(dirs)
print(f'\n[+] - Конвертация завершена...')
if __name__ == "__main__":
main()
Надеюсь, что данный скрипт будет кому-то полезен в работе. Спасибо за внимание
Последнее редактирование модератором: