Друкарня від 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:

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

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

  • Як обрати конструктор сайтів для товарного бізнесу

    Дізнайтесь, як обрати конструктор сайтів для товарного бізнесу. Практичні поради: готові шаблони, модульність, інтеграції, аналітика, безкоштовний тариф та масштабування для ефективного запуску та контролю заявок.

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

    Конструктор Сайтів
  • Як модні бренди формують культуру та впливають на глобальні fashion-тренди

    Модні бренди часто стають символами ідентичності. Вони впливають на вибір способу життя не тільки в одязі — розкішні годинники, парфуми, товари для дому та враження підкріплюють культурні наративи успіху, смаку та вишуканості.

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

    Мода
  • Створити блог на Друкарні - швидко, легко та безкоштовно

    Друкарня - це зручне та безкоштовне середовище для ведення власного блогу. В даній статті ми розповідаємо про основні переваги та функціональні можливості для того, щоб зацікавити нових авторів створити власний блог на Друкарні. Будь ласка, поширте цю інформацію.

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

    Друкарня
  • Чому Google Merchant Center може заблокувати обліковий запис?

    Одним з найбільш ефективних каналів продажів є система Google Merchant Center. Правда, акаунт в ній може бути несподівано заблокований, якщо при його налаштуванні були порушені правила системи. У статті розглянемо підводні камені і дамо відповідь як уникнути блокування

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

    Google Merchant Center
  • Бухгалтерський супровід ФОП: сучасний підхід до обліку

    Завдяки розвитку інформаційних технологій, впровадженню сучасних рішень і сервісів процес ведення бухобліку бізнесу став значно простішим і зручним. З іншого боку, ті ж технології додали бухгалтерам роботи – з обліком онлайн-продажів і надходжень у валюті, CRM-системами та ін.

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

    Бухгалтерський Облік Фоп
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Mystique Lord
Mystique Lord@nocturnal_reader we.ua/nocturnal_reader

Нічний читач

49Довгочити
539Прочитання
15Підписники
Підтримати
На Друкарні з 14 липня

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

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

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

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

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