Как записать как возвращенный вывод, так и вывод на печать в FPDF? - PullRequest
2 голосов
/ 07 марта 2020

Я хочу записать оператор печати, а также возвращенный оператор из кода в файл PDF. Другими словами, я хочу записать точный вывод терминала в файл PDF. Может ли кто-нибудь помочь мне, как получить это?

import fpdf
def oops():
    print('hello')
    return('V')
def data():
    return oops()
pdf = fpdf.FPDF(format = 'A4')
pdf.add_page()
pdf.set_font("Arial")
pdf.cell(10, 10, data())
pdf.output("2.pdf")

Я хочу записать точный вывод терминала в файл PDF. Может ли кто-нибудь помочь мне, как получить это?

Ожидаемый вывод в файле PDF составляет

hello
V

1 Ответ

1 голос
/ 10 марта 2020

Я не знаком с созданием файлов fpdf или pdf, но вот код, который, я надеюсь, поможет вам в этом, используя функцию-обертку.

Вместо вызова print() вызовите функцию-оболочку print_and_append_to_return_list(), которая не только напечатает, но и добавит это значение к return_list. Любой элемент, который вы бы вернули, но не распечатал, например, «V» в вашем примере, был бы непосредственно добавлен к return_list с этой строкой кода return_list.append('V'). Вместо возврата 'V' вы бы return(return_list), который будет содержать все.

Звучит так, как только вы получите return_list, вы уже знаете, как извлечь данные из такого списка и вставить их в свой PDF файл.

Вот код:

return_list = []

def print_and_append_to_return_list(print_string):
    print(print_string)
    return_list.append(print_string)

def oops():
    print_and_append_to_return_list('hello')
    return_list.append('V')
    return(return_list)

data_list = oops()
for item in data_list:
    print(item)
...