Друкарня від 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. Під час стоврення додатку ми навчилися додавати різні графічні елементи та задавати їм потрібне розтащування у вікні. Всім дякую за увагу!

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

  • Бронеплівка для вікон: коли вона доречна та як обрати рішення

    Як бронеплівка утримує уламки, де її встановлюють та чому перед монтажем важливо оцінити стан і конструкцію скління.

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

    Бронеплівка На Вікна
  • Шлейф сучасного смартфону та його призначення

    Шлейф - це тонка пластикова стрічка з ледь видимими доріжками і саме вона зʼєднує важливі компоненти мобільного, без яких він не запрацює. Власники пристроїв Xiaomi, які стикаються з потребою заміни цієї деталі, можуть підібрати відповідний варіант на сайті AKS.UA

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

    Шлейф Для Мобільного
  • Чохли для iPhone 15: повний гід по кольорах, матеріалах і виробниках

    Перед тим як вибрати чохли для iPhone 15, варто визначитися, що саме ви хочете отримати від аксесуара. Комусь потрібен тонкий прозорий корпус, інший покупець шукає посилений захист, а для когось вирішальним стане колір або підтримка MagSafe

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

    Чохли Для Iphone
  • Як побудована програма Meest China Academy

    Курс про товарний бізнес охоплює різні етапи роботи: від пошуку ідеї до перевірки товару, логістики та масштабування. Програма Meest China Academy містить 17 модулів, які послідовно розкривають ці теми без зведення всього навчання до однієї універсальної поради.

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

    Meest
  • Які технології використані в Айфон 17

    Айфон 17 поєднує OLED-дисплей із частотою до 120 Гц, чип A19, дві камери Fusion 48 Мп і швидке заряджання через USB-C. У COMFY можна купити Айфон 17 з накопичувачем на 256 або 512 ГБ, вибравши конфігурацію відповідно до обсягу фото, відео та застосунків

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

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

Прекрасний цифровий світ

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

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

  • Оновлення проєкту Magnifique numérique

    Відтепер Magnifique numérique — це не лише про статті з програмування, а й новини про IT та технології. Це означає, що відтепер контент стане різноманітнішим.

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

    Оновлення
  • Метод zfill() у Python

    У цій статті ми розберемо метод zfill() у Python на основі практичних прикладів його використання.

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

    It
  • Команда WHERE у SQL

    Сьогодні ми розглянемо команду WHERE та принцип роботи цієї команди.

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

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

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

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

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

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