• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Сохранение фоток в pdf или md на python. Выход?

18.12.2024
1
0
BIT
11
У меня есть база данных, в которой хранятся данные по заказам, нужно создать pdf файл, где будут данные из бд по заказу. К примеру, сейчас это выглядит так, используя md. :
1734790296557.png

Проблема такого подхода в том, что фото не показываются, так как нужна прямая ссылка на фотку. Хотелось бы, чтобы как при pdf, файл был и с текстом и картинкой.

Что можете посоветовать?
 

f22

Codeby Academy
Gold Team
05.05.2019
1 947
228
BIT
1 810
Не совсем понял ваш вопрос.
что фото не показываются, так как нужна прямая ссылка на фотку.
а откуда берётся эта ссылка?

Самый простой код, который создаст pdf из текста, можно оформить так:
Python:
import lorem
import datetime
from fpdf import FPDF
import os


def save_as_pdf(text, filename):
    pdf = FPDF()
    pdf.add_page()
    pdf.set_font("Arial", size=12)
    pdf.multi_cell(0, 10, text)
    pdf.output(filename)



# Генерируем случайный текст
random_text = lorem.paragraph()
print("Сгенерированная строка:")
print(random_text)

current_time = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
filename = f"generated_text_{current_time}.pdf"

# Передаём в функцию записи текст и имя файла
save_as_pdf(random_text, filename)
print(f"Файл сохранён как PDF: {os.path.abspath(filename)}")

Нужны модули
pip install lorem fpdf

Картинку добавить можно таким образом
Python:
import lorem
import datetime
from fpdf import FPDF
import os
import requests


def download_image(url, save_path):
    response = requests.get(url)
    with open(save_path, "wb") as img_file:
        img_file.write(response.content)


def save_as_pdf(text, filename):
    pdf = FPDF()
    pdf.add_page()
    pdf.set_font("Arial", size=12)
    pdf.multi_cell(0, 10, text)

    image_url = "https://codeby.net/data/avatars/m/284/284960.jpg"
    image_path = "downloaded_image.jpg"
    download_image(image_url, image_path)

    pdf.image(image_path, x=10, y=pdf.get_y() + 10, w=50)

    pdf.output(filename)
    os.remove(image_path)


if __name__ == "__main__":
    random_text = lorem.paragraph()
    print("Сгенерированная строка:")
    print(random_text)

    current_time = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
    filename = f"generated_text_{current_time}.pdf"
    save_as_pdf(random_text, filename)
    print(f"Файл сохранён как PDF: {os.path.abspath(filename)}")
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!