Python-telegram-bot split pdf

1 500 руб. за проект
04 февраля 2023, 19:31 • 4 отклика • 32 просмотра
python-telegram-bot split pdf

Надо создать минимальный телеграм бот.

Пользователь отправляет боту файл пдф и получает в ответ этот файл разделённый одна страница на один файл.
Также боте пересылает получившиеся файлы в предопределённую группу в телеграмме по айди группы.
Поместили один пдф в бот -> бот вернул несколько пдф пользователю -> бот вернул несколько пдф в группу по айди.

Для бота используем библиотеку python-telegram-bot

Полезные ссылки:

https://python-telegram-bot.org/

https://docs.python.org/3/library/tempfile.html#tempfile.NamedTemporaryFile

https://docs-python.ru/packages/biblioteka-python-telegram-bot-python/fajlami-media-url-adresami/

Код

Разделение страниц для примера ( у исполнителя может быть иное решение):

Если с библиотекой PyPDF2 возникнут сложности надо поискать по ошибке, там до какой-то версии всё работает, потом нет. На гитхабе есть инфо.

from PyPDF2 import PdfWriter, PdfReader

inputpdf = PdfReader(open("pp_for_test.pdf", "rb"))

for i in range(inputpdf.numPages):

output = PdfWriter()

output.addPage(inputpdf.getPage(i))

with open('pp{}.pdf'.format(i), "wb") as outputStream:

output.write(outputStream)



Приблизительный код бота для примера ( у исполнителя может быть иное решение):

from telegram import message

from telegram.ext import Updater, MessageHandler, Filters, CallbackContext

import logging



logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',

level=logging.INFO)

logger = logging.getLogger(__name__)



def name_func(update, context):

file_id = message.Document.file_id

new_file = message.Document.get_file(file_id)

new_file.download()



def main() -> None:

TOKEN = ' '

updater = Updater(TOKEN)

dispatcher = updater.dispatcher

dispatcher.add_handler(MessageHandler(Filters.document.pdf, name_func))

updater.start_polling()

updater.idle()

if __name__ == "__main__":

main()
Файлы
Отзывы
Avatar r50 a6ce93fe35b158fd29ba0e8681c918c22117160e9586a56eee4ffbc20df9bda1
Заказчик
Усердный.
~ 1 год назад
R50 62d93812496e22b3998729dc3a26f129
Фрилансер
Очень понимающий заказчик. Все вопросы решаются быстро и с адекватным подходом, возникающие сложности обсуждаются и решаются. Сроки на исполнение работы разумные.

Приятно было работать!
~ 1 год назад