Получить Text Wrap, используя многоклеточный в той же строке, используя fpdf - PullRequest
0 голосов
/ 13 февраля 2020

Попытка получить ячейки в одну строку после переноса текста, используя многоклеточную функцию в пакете pypdf.

from fpdf import FPDF
import pandas as pd


class Tables(FPDF):

    def table(self):
        try:
            self.add_page()
            self.set_font('Times', '', 10.0)
            epw = pdf.w - pdf.l_margin
            col_width = epw/5
            data1 = [{'ip': '192.168.0.1', 'name': 'cloud', 'used_percent': 100.0,'percent': 100.0,'value':6497693752875},
                     {'ip': '192.168.0.2', 'name': 'mitakaDZGFGASSCCGSTHAG', 'used_percent': 97.0, 'percent': 100.0, 'value':6497693752875597265917}]
            df = pd.DataFrame(data1)
            s = df['ip']
            v = df['name']
            c = df['used_percent']
            d = df['percent']
            e = df['value']
            data = [df,[s[0], v[0], c[0], d[0],e[0]], [s[1], v[1], c[1], d[1], e[1]]]
            th = pdf.font_size
            count = 0
            self.set_text_color(0, 0, 0)
            self.set_fill_color(255, 255, 255)
            for row in data:
                count += 1
                for datum in row:
                    if count == 1:
                        self.set_fill_color(70, 130, 180)
                        self.set_font('Times', '', 10)
                        self.cell(col_width, 2*th, str(datum), border=1, align='L', fill=1)
                    else:
                        self.set_font('Times', '', 11)
                        self.multi_cell(col_width, 2*th, str(datum), border=1, align='L', fill=0)
                self.ln(2 * th)
            self.ln(2* th)
        except Exception as e:
            print(f"Exception {e}")

pdf = Tables()
pdf.table()
pdf.output('fpdf_table.pdf', 'F')

Ожидаемый результат:

enter image description here

Фактический результат:

enter image description here

Буду признателен за любые предложения, чтобы получить ожидаемый результат.

Заранее спасибо за ваше время и усилия.

...