FPDF неправильно set_xy и get_string_width - PullRequest
0 голосов
/ 04 мая 2018

Следующий код должен создать PDF с использованием FPDF:

font_size = 8

pdf = FPDF(unit = 'mm')
pdf.set_font("Arial", "", font_size)

full_w, full_h = 150, 70

txt = "Text"

txt_w = pdf.get_string_width(txt)
txt_h = font_size * 0.352778 # convert pt to mm

pdf.add_page('P', format=(full_w, full_h))

pdf.set_xy(0, 50)
pdf.cell(txt_w, txt_h, txt, align='R', border = 1)

pdf.output(fname)

Как ни странно, это приводит к следующему PDF:

screenshot of the resulting pdf

Есть две проблемы:

  1. Я размещаю текст на расстоянии 50 мм от верха на листе высотой 70 мм. Так почему же он появляется не на 50 мм, а на второй странице?

  2. Также кажется, что txt_w и txt_h не рассчитаны правильно, чтобы точно получить геометрический размер строки. Как я могу получить это более точно?

1 Ответ

0 голосов
/ 04 мая 2018

Текст отображается на второй странице из-за автоматического разрыва страницы с полем 2 см. Просто отключите его с помощью pdf.set_auto_page_break(False).

...