Друкарня від WE.UA

Створюємо програму для конвертації Word-файлів у PDF-формат за допомогою бібліотек docx2pdf та flet

Всіх вітаю! Сьогодні ми розглянемо бібліотеку docx2pdf, яка дає змогу конвертувати .docx файли у файли з розширенням .pdf. Також у рамках цієї статті, ми стовримо програму з графічним інтерфейсом на flet, яка буде конвертувати Word-файли у PDF-формат.

Підготовка

Встновлення docx2pdf

Windows:

pip install docx2pdf

MacOS:

pip3 install docx2pdf

У Linux ця бібліотека не буде працювати, бо вона вимагає встановленого Microsoft Word.

Встановлення flet

Windows:

pip install flet

MacOS:

pip3 install flet

Тепер всі необхідні бібліотеки були встановлені.

Огляд функціналу docx2pdf

Конвертація .docx у .pdf

Спершу створюємо Word-файл (я створив його у папці проєкту):

Створили word файл

За допомогою функції convert() ми можемо перетворити Word-файл файл у PDF-файл. Для цього нам треба лише викликати функцію, далі передати шлях до Word-файлу та майбутнього PDF-файл.

Ось приклад того, як перевторити наш Test.docx у PDF-файл:

import docx2pdf


docx2pdf.convert("Test.docx", "Test_converted.pdf")
print(f"The file is successfully converted into .pdf format.")
100%|██████████| 1/1 [00:07<00:00,  7.87s/it]
The file is successfully converted into .pdf format.

Ось, як бачимо, наш код успішно виконався. Але, де ж готовий PDF-файл? Якщо ми захочемо знайти його у папці нашого проєкту, то там його не буде. Насправді, програма успішно виконалася і PDF-файл створився, але він знаходиться у щляху користувача (C:\Users\User\Documents)

Якщо ж ми хочемо, щоб при стовренні він знаходився у папці проєкта, то треба зазначити шлях, де він повинен буде створитися.

Ось приклад, де ми записуємо шлях до нашого нового PDF-файлу:

import docx2pdf


pdf_file_path = "D:\\Hobbies\\Programming\\Python\\Channel posts\\WordPDFConversion\\Test_converted.pdf"

docx2pdf.convert("Test.docx", pdf_file_path)
print(f"The file is successfully converted into .pdf format.")
100%|██████████| 1/1 [00:07<00:00,  7.87s/it]
The file is successfully converted into .pdf format.

Тепер перевіримо папку з нашим проєктом у PyCharm:

Ось і PDF файл у правильній директорії

Якщо ви спробуєте його відкрити, то все у вас вдасться і файл буде функціонувати коректно.

Створення десктопного додатку для конвертації файлів

Створення графічного інтерфейсу

У цій частині статті ми створимо невелиий декстопний додаток, який був би гарним, сучасним й використовував для конвертування файлів саме бібліотеку docx2pdf.

Так як бібліотеку flet ми вже завантажили раніше, то слід перейти одразу до справи. Отже, спершу імпортуємо бібліотеку flet:

import flet as ft
import docx2pdf

Наступним кроком створимо функцію app(), яка буде наслідувати функціонал від класу Page бібліотеки flet:

def app(page: ft.Page):
    pass

Дана функція буде містити усі наші графічні елементи та функцію для кнопки.

Далі описуємо деякі загальні риси нашої програми, тобто визначаємо назву вікна, тему, розмір і т. д.

Ось загальні риси вікна нашої програми:

def app(page: ft.Page):
    page.title = "Word to PDF Convertor"
    page.theme_mode = ft.ThemeMode.DARK
    page.window.width = 700
    page.window.height = 600
    page.vertical_alignment = ft.MainAxisAlignment.CENTER
    page.horizontal_alignment = ft.CrossAxisAlignment.CENTER

Тут ми визначаємо назву вікна програми:

page.title = "Word to PDF Convertor"

Встановлюємо темну тему у додатку:

page.theme_mode = ft.ThemeMode.DARK

Встановлюємо ширину та висоту вікна:

page.window.width = 700
page.window.height = 600

Розташовуємо елементи у вікні по центру, як вертикально, так і горизонтально:

page.vertical_alignment = ft.MainAxisAlignment.CENTER
page.horizontal_alignment = ft.CrossAxisAlignment.CENTER

Тепер додаємо графічні елементи (заголовок, поля вводу, функцію для кнопки, кнопку тощо):

    welcome_text = ft.Text("Word to PDF Convertor",   font_family="Halvetica",size=25)

    word_file_way = ft.TextField(label="Word file directory", width=400)
    pdf_file_way = ft.TextField(label="PDF file directory", width=400)

    def convert_files(event):
        pass

    submit_button = ft.Button("Submit", on_click=convert_files)

Створюємо заголовок програми зі шрифтом Halvetica та розміром 25 пікселей:

welcome_text = ft.Text("Word to PDF Convertor", font_family="Halvetica",size=25)

Також створюємо поля вводу для зазначення шляху до обох файлів:

word_file_way = ft.TextField(label="Word file directory", width=400)
pdf_file_way = ft.TextField(label="PDF file directory", width=400)

Оголошуємо функцію для кнопки (вона обов’язково повинна приймати параметр event) та надаємо ввдені дані для конвертування функції convert() бібліотеки:

    def convert_files(event):
        docx2pdf.convert(word_file_way.value, pdf_file_way.value)

        word_file_way.value = ""
        pdf_file_way.value = ""
        page.update()

Після конвертування присвоюємо полям пустий рядок та обов’язково оновлюємо сторінку.

Оголошуємо функцію, яка буде закривати програму:

    def close_app(event):
        page.window.close()

Створюємо кнопку з назвою “Submit“ та прив’язкою до функції convert_files:

submit_button = ft.Button("Submit", on_click=convert_files)

Створюємо кнопку з назвою “Close“ та прив’язкою до функції close_app:

close_button = ft.Button("Close", on_click=close_app)

Розташовуємо кнопки "Submit" та "Close" в одному рядку та влаштовуємо їх по центру вікна:

button_row = ft.Row(
        [
            submit_button,
            close_button
        ], alignment=ft.MainAxisAlignment.CENTER
    )

Тут за допомогою параметра alignment ми центруємо елементи посередині рядка.

Додаємо усі попередньо створені елементи на вікно:

page.add(welcome_text, word_file_way, pdf_file_way, button_row)

Запускаємо програму:

ft.app(target=app)

Все, наш графічний інтерфейс готовий до запуску. Ось повний код графічного інтерфесу програми:

import flet as ft
import docx2pdf


def app(page: ft.Page):
    page.title = "Word to PDF Convertor"
    page.theme_mode = ft.ThemeMode.DARK
    page.window.width = 700
    page.window.height = 600
    page.vertical_alignment = ft.MainAxisAlignment.CENTER
    page.horizontal_alignment = ft.CrossAxisAlignment.CENTER

    welcome_text = ft.Text("Word to PDF Convertor", font_family="Halvetica",
                            size=25)
    word_file_way = ft.TextField(label="Word file directory", width=400)
    pdf_file_way = ft.TextField(label="PDF file directory", width=400)

    def convert_files(event):
        docx2pdf.convert(word_file_way.value, pdf_file_way.value)

        word_file_way.value = ""
        pdf_file_way.value = ""
        page.update()

    def close_app(event):
        page.window.close()

    submit_button = ft.Button("Submit", on_click=convert_files)
    close_button = ft.Button("Close", on_click=close_app)

    button_row = ft.Row(
        [
            submit_button,
            close_button
        ], alignment=ft.MainAxisAlignment.CENTER
    )

    page.add(welcome_text, word_file_way, pdf_file_way, button_row)

ft.app(target=app)

У результаті отримаємо таку програму:

Ось такий простий інтерфейс

Тепер пропоную протестувати роботу нашого додатку. Отже, вписуємо у поля вводу розташування .docx та .pdf файлів.

Ось скріншот:

Вводимо дані

Тепер після натискання на кнопку “Submit“ отримуємо PDF-файл у папці проєкту:

Все працює!

Як бачимо, файл дійсно конвертувався. Програма вдалася і ми створили те, що хотіли.

Висновок

У цій статті ми дізналися як перетворювати Word-файли у PDF-формат, як створювати сучасний графічний інтерфейс для декстопних додатків і як використовувати функції бібліотек docx2pdf та flet. Під час стоврення додатку ми навчилися додавати різні графічні елементи та задавати їм потрібне розтащування у вікні. Всім дякую за увагу!

Статті про вітчизняний бізнес та цікавих людей:

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Magnifique numérique
Magnifique numérique@nocturnal_reader

Нічний читач

56Довгочити
1.1KПерегляди
18Підписники
Підтримати
На Друкарні з 14 липня 2025

Більше від автора

  • Список різноманітних бібліотек у Python

    Всіх вітаю! Сьогодні хочу поділитися великим списком бібліотек у Python для різного призначення та потреб:https://github.com/vinta/awesome-pythonТут багато цікавих бібліотек зібрано за сферами їхньго призначення.

    Теми цього довгочиту:

    It
  • Roadmap — ваш путівник до поставлених цілей.

    Сайт Roadmap вміщує у собі багато путівників до великої кількості професій та сфер, у яких доволі чітко описано, що саме потрібно для повноцінного вивчення того чи іншого предмету зацікавленості.

    Теми цього довгочиту:

    It
  • Клас itemgetter() у модулі operator

    Всіх вітаю! У даній статті ми продовжимо тему спеціальних властивостей словників у Python. На цей раз ми поговоримо про модуль operator та його клас itemgetter(), яка дозволяє працювати зі списками та словниками у Python.

    Теми цього довгочиту:

    Програмування

Це також може зацікавити:

  • λanguage: Неформальний опис мови

    Автор пояснює, як написати парсер, інтерпретатор, компілятор, та інші складові власної мови програмування. Описується синтаксис мови, особливості реалізації функцій, умовних конструкцій та інших елементів мови.

    Теми цього довгочиту:

    Js
  • General Meeting 2024 від Kharkiv IT Cluster

    На вас чекає зустріч зі 150 провідними гравцями українського IT-світу та обговорення головних досягнень спільноти.

    Теми цього довгочиту:

    It

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Це також може зацікавити:

  • λanguage: Неформальний опис мови

    Автор пояснює, як написати парсер, інтерпретатор, компілятор, та інші складові власної мови програмування. Описується синтаксис мови, особливості реалізації функцій, умовних конструкцій та інших елементів мови.

    Теми цього довгочиту:

    Js
  • General Meeting 2024 від Kharkiv IT Cluster

    На вас чекає зустріч зі 150 провідними гравцями українського IT-світу та обговорення головних досягнень спільноти.

    Теми цього довгочиту:

    It