在 FPDF ( python 3.8 ) 中设置左边距时?

问题描述

我在 google 中找不到任何信息(搜索分数是到旧的 PHP-ers 网站),唯一的发现是此方法的文档很差https://pyfpdf.readthedocs.io/en/latest/reference/set_left_margin/index.html

我知道我应该在创建第一页之前设置_left_margin 但是...

####1 第一个使用-python 给通信

Traceback (most recent call last):
  File "zlecenieWykonaniaBadania.py",line 78,in <module>
    main()
  File "zlecenieWykonaniaBadania.py",line 64,in main
    pdf.set_left_margin(4.0)
 ##venv/lib/python3.8/site-packages/fpdf/fpdf.py",line 263,in set_left_margin
    if self.page > 0 and self.x < margin:
AttributeError: 'PDF' object has no attribute 'page'

在##############2 上给我

  File "zlecenieWykonaniaBadania.py",line 77,line 66,in main
    pdf.set_left_margin(4.0) 
  File ".../venv/lib/python3.8/site-packages/fpdf/fpdf.py",in set_left_margin
    if self.page > 0 and self.x < margin:
AttributeError: 'PDF' object has no attribute 'page'

在##############3 上给我

Traceback (most recent call last):
  File "zlecenieWykonaniaBadania.py",line 67,in main
    pdf.add_page()
/generatorPdfLims/venv/lib/python3.8/site-packages/fpdf/fpdf.py",line 358,in add_page
    if self.state == DocumentState.CLOSED:
AttributeError: 'PDF' object has no attribute 'state'

我什么时候可以改变?抱歉问了一个愚蠢的问题

import logging
import argparse
from fpdf import FPDF

class PDF(FPDF):

    def __init__(self):
        pass
    def header(self):
        zdjecie="rac.png"
        polozenieXzdj=8
        polozenieYzdj=8
        rozmiarZdjecia=33
        # logo (zdjecie,polozenie x,polozenie y,rozmiar)
        self.image(zdjecie,polozenieXzdj,polozenieYzdj,rozmiarZdjecia)
        # Arial bold 15
        self.set_font('Arial','B',12)
        # Move to the right
        self.cell(80)
        # Title
        self.cell(30,10,'Title',1,'C')
        # Line break
        self.ln(20)

    # Page footer
    def footer(self):
        # Position at 1.5 cm from bottom
        self.set_y(-15)
        # Arial italic 8
        self.set_font('Arial','I',8)
        # Page number
        self.cell(0,'Page ' + str(self.page_no()) + '/{nb}','C')

    #first page
    def firstPage(self):
        x=1000
        y=40

        self.ln(40)
        #self.set_left_margin(3)
        self.set_text_color(0,232,0)
        #cell(x,y,"tekst",wielkosc ramki(0 brak ramkii),nie wiem)
        self.cell(x,'ZLECENIE WYKONANIA BADANIA',1)
        self.ln(20)
        self.cell(x,1)


def main():
    def_params()
    # Instantiation of inherited class
    pdf = PDF()
    #pdf.set_left_margin(4.0) #####1
    pdf.alias_nb_pages(str(2))
    #pdf.set_left_margin(4.0) #####2
    pdf.add_page()
    pdf.set_left_margin(3.0)  #####3
    pdf.set_font('Times','',12)
    pdf.firstPage()
    #for i in range(1,41):
    #    pdf.cell(0,'Printing line number ' + str(i),1)

    pdf.output('tuto2.pdf','F')

if __name__ == "__main__":
    main()

解决方法

好吧,我只是傻

    # Instantiation of inherited class
     pdf = PDF()
     pdf.alias_nb_pages(str(2))
     pdf.add_page()
     pdf.set_font('Times','',12)
     pdf.set_left_margin(32)
     pdf.set_right_margin(32)
     pdf.firstPage()

按此方法顺序的代码,有效

请关闭问题