Как преобразовать объект чтения pypdf в строку base64Python

Программы на Python
Ответить
Anonymous
 Как преобразовать объект чтения pypdf в строку base64

Сообщение Anonymous »

Я пытаюсь разработать на Python Flet простое приложение для отображения каждой страницы PDF-файла. Код импортирует библиотеку pypdf для управления PDF-файлами. Пользовательский интерфейс состоит из кнопки для загрузки первой страницы PDF-файла и перехода к следующей странице, а также из контейнера Flet, содержимым которого является изображение Flet. Изображение Flet принимает строку в кодировке Base64, которая, в свою очередь, должна соответствовать каждой странице PDF-файла.

Код: Выделить всё

import flet as ft
import pypdf

def main(page: ft.Page):
def btn_Click(e):
cont.content = ft.Image(src_base64 = reader.pages[0],
fit=ft.ImageFit.FILL,
)
page.update()

if btn.data < len(reader.pages):
btn.data +=1

reader = pypdf.PdfReader('Your Pdf filename.pdf')

cont = ft.Container(height = 0.8*page.height,
width = 0.4 * page.width,
border=ft.border.all(3, ft.colors.RED),)

btn = ft.IconButton(
icon=ft.icons.UPLOAD_FILE,
on_click=btn_Click,
icon_size=35,
data=0,)

page.add(ft.Column([cont, btn], horizontal_alignment="center"))
page.horizontal_alignment = "center"
page.scroll = ft.ScrollMode.AUTO
page.update()

ft.app(target=main, assets_dir="assets")
После нажатия кнопки я получаю следующую ошибку:

Код: Выделить всё

Error decoding base64: FormatException: Invalid character (at character 1)
{'/Contents': [IndirectObject(2286, 0, 1969514531216), IndirectObject(2287,...
^
Поискав в Интернете, я обнаружил, что это исключение уже произошло с Flutter, на основе которого является фреймворк Flet. Посмотрите эту ссылку, это и это. Было предложено применить такое преобразование:

Код: Выделить всё

base64.decode(sourceContent.replaceAll(RegExp(r'\s+'), ''))
Я не знаю, как применить это к моей переменной reader. Или, альтернативно, если pypdf содержит метод для выполнения этого преобразования.

Подробнее здесь: https://stackoverflow.com/questions/792 ... e64-string
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»