Hướng dẫn fpdf multi_cell example python - fpdf multi_cell ví dụ python

fpdf.multi_cell[w: float, h: float, txt: str, border = 0, 
                align: str = 'J', fill: bool = False]

Sự mô tả

Phương pháp này cho phép in văn bản với ngắt dòng. Chúng có thể tự động [ngay khi văn bản đến đúng biên giới của ô] hoặc rõ ràng [thông qua ký tự

data1 = list[csv.reader[csvfile]]
print[data1] ##[[row1],[row2],[row3],[row4]] 
## row1, row2, etc are the rows from csv

for row in data1:
    for x,y in enumerate[row]:
        if [x == 0] or [x == 1]: ## dynamically change the column width with certain conditions
            pdf.cell[2.0, 0.15, str[y], align = 'C', border=1] ## width = 2.0
        else:
            pdf.cell[0.60, 0.15, str[y], align = 'L', border=1] ## width = 0.60
2]. Càng nhiều ô khi cần thiết là đầu ra, một bên dưới cái kia. Văn bản có thể được căn chỉnh, trung tâm hoặc hợp lý. Các khối tế bào có thể được đóng khung và nền được sơn.

Thông số

w:

Chiều rộng của các ô. Nếu 0, chúng mở rộng đến lề phải của trang.

h:

Chiều cao của các tế bào.

txt:

Chuỗi để in.

border:

Cho biết nếu đường viền phải được vẽ xung quanh khối ô. Giá trị có thể là một số:

  • 0: Không có biên giới
  • 1: Khung

hoặc một chuỗi chứa một số hoặc tất cả các ký tự sau [theo bất kỳ thứ tự nào]:

  • data1 = list[csv.reader[csvfile]]
    print[data1] ##[[row1],[row2],[row3],[row4]] 
    ## row1, row2, etc are the rows from csv
    
    for row in data1:
        for x,y in enumerate[row]:
            if [x == 0] or [x == 1]: ## dynamically change the column width with certain conditions
                pdf.cell[2.0, 0.15, str[y], align = 'C', border=1] ## width = 2.0
            else:
                pdf.cell[0.60, 0.15, str[y], align = 'L', border=1] ## width = 0.60
    
    3: Trái
  • data1 = list[csv.reader[csvfile]]
    print[data1] ##[[row1],[row2],[row3],[row4]] 
    ## row1, row2, etc are the rows from csv
    
    for row in data1:
        for x,y in enumerate[row]:
            if [x == 0] or [x == 1]: ## dynamically change the column width with certain conditions
                pdf.cell[2.0, 0.15, str[y], align = 'C', border=1] ## width = 2.0
            else:
                pdf.cell[0.60, 0.15, str[y], align = 'L', border=1] ## width = 0.60
    
    4: Top
  • data1 = list[csv.reader[csvfile]]
    print[data1] ##[[row1],[row2],[row3],[row4]] 
    ## row1, row2, etc are the rows from csv
    
    for row in data1:
        for x,y in enumerate[row]:
            if [x == 0] or [x == 1]: ## dynamically change the column width with certain conditions
                pdf.cell[2.0, 0.15, str[y], align = 'C', border=1] ## width = 2.0
            else:
                pdf.cell[0.60, 0.15, str[y], align = 'L', border=1] ## width = 0.60
    
    5: Phải
  • data1 = list[csv.reader[csvfile]]
    print[data1] ##[[row1],[row2],[row3],[row4]] 
    ## row1, row2, etc are the rows from csv
    
    for row in data1:
        for x,y in enumerate[row]:
            if [x == 0] or [x == 1]: ## dynamically change the column width with certain conditions
                pdf.cell[2.0, 0.15, str[y], align = 'C', border=1] ## width = 2.0
            else:
                pdf.cell[0.60, 0.15, str[y], align = 'L', border=1] ## width = 0.60
    
    6: dưới cùng

Giá trị mặc định: 0.

align:

Đặt căn chỉnh văn bản. Các giá trị có thể là:

  • data1 = list[csv.reader[csvfile]]
    print[data1] ##[[row1],[row2],[row3],[row4]] 
    ## row1, row2, etc are the rows from csv
    
    for row in data1:
        for x,y in enumerate[row]:
            if [x == 0] or [x == 1]: ## dynamically change the column width with certain conditions
                pdf.cell[2.0, 0.15, str[y], align = 'C', border=1] ## width = 2.0
            else:
                pdf.cell[0.60, 0.15, str[y], align = 'L', border=1] ## width = 0.60
    
    3: Căn chỉnh trái
  • data1 = list[csv.reader[csvfile]]
    print[data1] ##[[row1],[row2],[row3],[row4]] 
    ## row1, row2, etc are the rows from csv
    
    for row in data1:
        for x,y in enumerate[row]:
            if [x == 0] or [x == 1]: ## dynamically change the column width with certain conditions
                pdf.cell[2.0, 0.15, str[y], align = 'C', border=1] ## width = 2.0
            else:
                pdf.cell[0.60, 0.15, str[y], align = 'L', border=1] ## width = 0.60
    
    8: Trung tâm
  • data1 = list[csv.reader[csvfile]]
    print[data1] ##[[row1],[row2],[row3],[row4]] 
    ## row1, row2, etc are the rows from csv
    
    for row in data1:
        for x,y in enumerate[row]:
            if [x == 0] or [x == 1]: ## dynamically change the column width with certain conditions
                pdf.cell[2.0, 0.15, str[y], align = 'C', border=1] ## width = 2.0
            else:
                pdf.cell[0.60, 0.15, str[y], align = 'L', border=1] ## width = 0.60
    
    5: Căn chỉnh đúng
  • from fpdf import FPDF
    
    pdf = FPDF[]
    pdf.add_page[]
    pdf.set_font["helvetica", "B", 16]
    pdf.cell[40, 10, "Hello World!"]
    pdf.output["tuto1.pdf"]
    
    0: Biện minh [giá trị mặc định]

lấp đầy

Cho biết nếu nền tế bào phải được sơn [

from fpdf import FPDF

pdf = FPDF[]
pdf.add_page[]
pdf.set_font["helvetica", "B", 16]
pdf.cell[40, 10, "Hello World!"]
pdf.output["tuto1.pdf"]
1] hoặc trong suốt [
from fpdf import FPDF

pdf = FPDF[]
pdf.add_page[]
pdf.set_font["helvetica", "B", 16]
pdf.cell[40, 10, "Hello World!"]
pdf.output["tuto1.pdf"]
2]. Giá trị mặc định: Sai.

Xem thêm

set_doc_option, set_font, set_draw_color, set_fill_color, set_text_color, set_line_width, cell, write, set_auto_page_break.

from fpdf import FPDF

pdf = FPDF[]
pdf.add_page[]
pdf.set_font["helvetica", "B", 16]
pdf.cell[40, 10, "Hello World!"]
pdf.output["tuto1.pdf"]
3

Sự mô tả

Phương pháp này cho phép in văn bản với ngắt dòng. Chúng có thể tự động [ngay khi văn bản đến đúng biên giới của ô] hoặc rõ ràng [thông qua ký tự \ n]. Càng nhiều ô khi cần thiết là đầu ra, một bên dưới cái kia. Văn bản có thể được căn chỉnh, trung tâm hoặc hợp lý. Các khối tế bào có thể được đóng khung và nền được sơn.
Văn bản có thể được căn chỉnh, trung tâm hoặc hợp lý. Các khối tế bào có thể được đóng khung và nền được sơn.

Thông số

from fpdf import FPDF

pdf = FPDF[]
pdf.add_page[]
pdf.set_font["helvetica", "B", 16]
pdf.cell[40, 10, "Hello World!"]
pdf.output["tuto1.pdf"]
4 Chiều rộng của các ô. Nếu
from fpdf import FPDF

pdf = FPDF[]
pdf.add_page[]
pdf.set_font["helvetica", "B", 16]
pdf.cell[40, 10, "Hello World!"]
pdf.output["tuto1.pdf"]
5, chúng mở rộng đến lề phải của trang.
from fpdf import FPDF

pdf = FPDF[]
pdf.add_page[]
pdf.set_font["helvetica", "B", 16]
pdf.cell[40, 10, "Hello World!"]
pdf.output["tuto1.pdf"]
6 Chiều cao của các tế bào.
from fpdf import FPDF

pdf = FPDF[]
pdf.add_page[]
pdf.set_font["helvetica", "B", 16]
pdf.cell[40, 10, "Hello World!"]
pdf.output["tuto1.pdf"]
7 Chuỗi để in.
from fpdf import FPDF

pdf = FPDF[]
pdf.add_page[]
pdf.set_font["helvetica", "B", 16]
pdf.cell[40, 10, "Hello World!"]
pdf.output["tuto1.pdf"]
8 cho biết các đường viền phải được vẽ xung quanh khối ô. Giá trị có thể là một số:
  • from fpdf import FPDF
    
    pdf = FPDF[]
    pdf.add_page[]
    pdf.set_font["helvetica", "B", 16]
    pdf.cell[40, 10, "Hello World!"]
    pdf.output["tuto1.pdf"]
    
    5: Không có biên giới
  • pdf = FPDF[orientation="P", unit="mm", format="A4"]
    
    0: Khung
hoặc một chuỗi chứa một số hoặc tất cả các ký tự sau [theo bất kỳ thứ tự nào]:
  • data1 = list[csv.reader[csvfile]]
    print[data1] ##[[row1],[row2],[row3],[row4]] 
    ## row1, row2, etc are the rows from csv
    
    for row in data1:
        for x,y in enumerate[row]:
            if [x == 0] or [x == 1]: ## dynamically change the column width with certain conditions
                pdf.cell[2.0, 0.15, str[y], align = 'C', border=1] ## width = 2.0
            else:
                pdf.cell[0.60, 0.15, str[y], align = 'L', border=1] ## width = 0.60
    
    3: Trái
  • data1 = list[csv.reader[csvfile]]
    print[data1] ##[[row1],[row2],[row3],[row4]] 
    ## row1, row2, etc are the rows from csv
    
    for row in data1:
        for x,y in enumerate[row]:
            if [x == 0] or [x == 1]: ## dynamically change the column width with certain conditions
                pdf.cell[2.0, 0.15, str[y], align = 'C', border=1] ## width = 2.0
            else:
                pdf.cell[0.60, 0.15, str[y], align = 'L', border=1] ## width = 0.60
    
    4: Top
  • data1 = list[csv.reader[csvfile]]
    print[data1] ##[[row1],[row2],[row3],[row4]] 
    ## row1, row2, etc are the rows from csv
    
    for row in data1:
        for x,y in enumerate[row]:
            if [x == 0] or [x == 1]: ## dynamically change the column width with certain conditions
                pdf.cell[2.0, 0.15, str[y], align = 'C', border=1] ## width = 2.0
            else:
                pdf.cell[0.60, 0.15, str[y], align = 'L', border=1] ## width = 0.60
    
    5: Phải
  • data1 = list[csv.reader[csvfile]]
    print[data1] ##[[row1],[row2],[row3],[row4]] 
    ## row1, row2, etc are the rows from csv
    
    for row in data1:
        for x,y in enumerate[row]:
            if [x == 0] or [x == 1]: ## dynamically change the column width with certain conditions
                pdf.cell[2.0, 0.15, str[y], align = 'C', border=1] ## width = 2.0
            else:
                pdf.cell[0.60, 0.15, str[y], align = 'L', border=1] ## width = 0.60
    
    6: dưới cùng
Giá trị mặc định:
from fpdf import FPDF

pdf = FPDF[]
pdf.add_page[]
pdf.set_font["helvetica", "B", 16]
pdf.cell[40, 10, "Hello World!"]
pdf.output["tuto1.pdf"]
5.
pdf = FPDF[orientation="P", unit="mm", format="A4"]
6 Đặt căn chỉnh văn bản. Các giá trị có thể là:
  • data1 = list[csv.reader[csvfile]]
    print[data1] ##[[row1],[row2],[row3],[row4]] 
    ## row1, row2, etc are the rows from csv
    
    for row in data1:
        for x,y in enumerate[row]:
            if [x == 0] or [x == 1]: ## dynamically change the column width with certain conditions
                pdf.cell[2.0, 0.15, str[y], align = 'C', border=1] ## width = 2.0
            else:
                pdf.cell[0.60, 0.15, str[y], align = 'L', border=1] ## width = 0.60
    
    3: Căn chỉnh trái
  • data1 = list[csv.reader[csvfile]]
    print[data1] ##[[row1],[row2],[row3],[row4]] 
    ## row1, row2, etc are the rows from csv
    
    for row in data1:
        for x,y in enumerate[row]:
            if [x == 0] or [x == 1]: ## dynamically change the column width with certain conditions
                pdf.cell[2.0, 0.15, str[y], align = 'C', border=1] ## width = 2.0
            else:
                pdf.cell[0.60, 0.15, str[y], align = 'L', border=1] ## width = 0.60
    
    8: Trung tâm
  • data1 = list[csv.reader[csvfile]]
    print[data1] ##[[row1],[row2],[row3],[row4]] 
    ## row1, row2, etc are the rows from csv
    
    for row in data1:
        for x,y in enumerate[row]:
            if [x == 0] or [x == 1]: ## dynamically change the column width with certain conditions
                pdf.cell[2.0, 0.15, str[y], align = 'C', border=1] ## width = 2.0
            else:
                pdf.cell[0.60, 0.15, str[y], align = 'L', border=1] ## width = 0.60
    
    5: Căn chỉnh đúng
  • from fpdf import FPDF
    
    pdf = FPDF[]
    pdf.add_page[]
    pdf.set_font["helvetica", "B", 16]
    pdf.cell[40, 10, "Hello World!"]
    pdf.output["tuto1.pdf"]
    
    0: Biện minh [giá trị mặc định]
pdf.set_font['helvetica', 'B', 16]
1 chỉ ra nếu nền tế bào phải được sơn [
pdf.set_font['helvetica', 'B', 16]
2] hoặc trong suốt [
pdf.set_font['helvetica', 'B', 16]
3]. Giá trị mặc định:
pdf.set_font['helvetica', 'B', 16]
3.

Xem thêm

Setfont, setDrawColor, setFillColor, setTextColor, setLineWidth, cell, write, setAutopageBreak

Lưu ý: Đây là một cách tiếp cận khác cho vấn đề trên

Đối với yêu cầu của tôi, tôi cần một số cột để có chiều rộng cột cao hơn và một số cột có chiều rộng thấp hơn. Đã sửa lỗi chiều rộng cột cho tất cả các cột đang làm cho bảng của tôi đi ra khỏi lề PDF. Multi Cell kết thúc văn bản và tăng chiều cao cột cho một số cột nhất định chứ không phải mọi cột. Vì vậy, cách tiếp cận của tôi là sử dụng hàm liệt kê và tự động điều chỉnh chiều rộng cột theo các nhu cầu như hình dưới đây.

data1 = list[csv.reader[csvfile]]
print[data1] ##[[row1],[row2],[row3],[row4]] 
## row1, row2, etc are the rows from csv

for row in data1:
    for x,y in enumerate[row]:
        if [x == 0] or [x == 1]: ## dynamically change the column width with certain conditions
            pdf.cell[2.0, 0.15, str[y], align = 'C', border=1] ## width = 2.0
        else:
            pdf.cell[0.60, 0.15, str[y], align = 'L', border=1] ## width = 0.60

Hi vọng điêu nay co ich.

Phương pháp Tài liệu đầy đủ:

pdf.set_font['helvetica', 'B', 16]
5 API Doc

  • Hướng dẫn
    • Tuto 1 - Ví dụ tối thiểu
    • Tuto 2 - Tiêu đề, chân trang, ngắt trang và hình ảnh
    • Tuto 3 - Phá vỡ dòng và màu sắc
    • Tuto 4 - Multi Cột
    • Tuto 5 - Tạo bảng
    • Tuto 6 - Tạo liên kết và phong cách văn bản trộn

Tuto 1 - Ví dụ tối thiểu

Hãy bắt đầu với ví dụ kinh điển:

from fpdf import FPDF

pdf = FPDF[]
pdf.add_page[]
pdf.set_font["helvetica", "B", 16]
pdf.cell[40, 10, "Hello World!"]
pdf.output["tuto1.pdf"]

Kết quả là PDF

Sau khi bao gồm tệp thư viện, chúng tôi tạo một đối tượng

pdf.set_font['helvetica', 'B', 16]
6. Chất xây dựng FPDF được sử dụng ở đây với các giá trị mặc định: các trang nằm trong chân dung A4 và đơn vị đo là milimet. Nó có thể đã được chỉ định rõ ràng với:

pdf = FPDF[orientation="P", unit="mm", format="A4"]

Có thể đặt PDF ở chế độ cảnh quan [

data1 = list[csv.reader[csvfile]]
print[data1] ##[[row1],[row2],[row3],[row4]] 
## row1, row2, etc are the rows from csv

for row in data1:
    for x,y in enumerate[row]:
        if [x == 0] or [x == 1]: ## dynamically change the column width with certain conditions
            pdf.cell[2.0, 0.15, str[y], align = 'C', border=1] ## width = 2.0
        else:
            pdf.cell[0.60, 0.15, str[y], align = 'L', border=1] ## width = 0.60
3] hoặc sử dụng các định dạng trang khác [chẳng hạn như
pdf.set_font['helvetica', 'B', 16]
8 và
pdf.set_font['helvetica', 'B', 16]
9] và đo các đơn vị [
pdf.cell[40, 10, 'Hello World!', 1]
0,
pdf.cell[40, 10, 'Hello World!', 1]
1,
pdf.cell[40, 10, 'Hello World!', 1]
2].

Hiện tại không có trang nào, vì vậy chúng tôi phải thêm một trang với add_page. Nguồn gốc nằm ở góc trên bên trái và vị trí hiện tại theo mặc định được đặt ở mức 1 cm từ biên giới; Các lề có thể được thay đổi với set_margins.

Trước khi chúng ta có thể in văn bản, bắt buộc phải chọn một phông chữ với set_font, nếu không, tài liệu sẽ không hợp lệ. Chúng tôi chọn Helvetica đậm 16:

pdf.set_font['helvetica', 'B', 16]

Chúng tôi có thể đã chỉ định chữ in nghiêng với

pdf.cell[40, 10, 'Hello World!', 1]
3, được gạch chân bằng
pdf.cell[40, 10, 'Hello World!', 1]
4 hoặc phông chữ thông thường với một chuỗi trống [hoặc bất kỳ kết hợp nào]. Lưu ý rằng kích thước phông chữ được đưa ra theo điểm, không phải milimet [hoặc đơn vị người dùng khác]; Đó là ngoại lệ duy nhất. Các phông chữ tích hợp khác là
pdf.cell[40, 10, 'Hello World!', 1]
5,
pdf.cell[40, 10, 'Hello World!', 1]
6,
pdf.cell[40, 10, 'Hello World!', 1]
7 và
pdf.cell[40, 10, 'Hello World!', 1]
8.

Bây giờ chúng ta có thể in một ô với ô. Một ô là một khu vực hình chữ nhật, có thể đóng khung, chứa một số văn bản. Nó được hiển thị ở vị trí hiện tại. Chúng tôi chỉ định kích thước của nó, văn bản của nó [giữa hoặc căn chỉnh], nếu nên rút ra biên giới và nơi vị trí hiện tại di chuyển theo nó [bên phải, bên dưới hoặc đến đầu dòng tiếp theo]. Để thêm một khung, chúng tôi sẽ làm điều này:

pdf.cell[40, 10, 'Hello World!', 1]

Để thêm một ô mới bên cạnh nó với văn bản tập trung và chuyển sang dòng tiếp theo, chúng tôi sẽ làm:

pdf.cell[60, 10, 'Powered by FPDF.', new_x="LMARGIN", new_y="NEXT", align='C']

Ghi chú: Việc phá vỡ dòng cũng có thể được thực hiện với LN. Phương pháp này cho phép chỉ định ngoài chiều cao của giờ nghỉ.: the line break can also be done with ln. This method allows to specify in addition the height of the break.

Cuối cùng, tài liệu được đóng và lưu dưới đường dẫn tệp được cung cấp bằng cách sử dụng đầu ra. Không có bất kỳ tham số nào được cung cấp,

pdf.cell[40, 10, 'Hello World!', 1]
9 trả về bộ đệm PDF
pdf.cell[60, 10, 'Powered by FPDF.', new_x="LMARGIN", new_y="NEXT", align='C']
0.

Tuto 2 - Tiêu đề, Footer, Break Page và Image¶

Dưới đây là một ví dụ hai trang với tiêu đề, chân trang và logo:

from fpdf import FPDF


class PDF[FPDF]:
    def header[self]:
        # Rendering logo:
        self.image["../docs/fpdf2-logo.png", 10, 8, 33]
        # Setting font: helvetica bold 15
        self.set_font["helvetica", "B", 15]
        # Moving cursor to the right:
        self.cell[80]
        # Printing title:
        self.cell[30, 10, "Title", border=1, align="C"]
        # Performing a line break:
        self.ln[20]

    def footer[self]:
        # Position cursor at 1.5 cm from bottom:
        self.set_y[-15]
        # Setting font: helvetica italic 8
        self.set_font["helvetica", "I", 8]
        # Printing page number:
        self.cell[0, 10, f"Page {self.page_no[]}/{{nb}}", align="C"]


# Instantiation of inherited class
pdf = PDF[]
pdf.add_page[]
pdf.set_font["Times", size=12]
for i in range[1, 41]:
    pdf.cell[0, 10, f"Printing line number {i}", new_x="LMARGIN", new_y="NEXT"]
pdf.output["new-tuto2.pdf"]

Kết quả là PDF

Sau khi bao gồm tệp thư viện, chúng tôi tạo một đối tượng

pdf.set_font['helvetica', 'B', 16]
6. Chất xây dựng FPDF được sử dụng ở đây với các giá trị mặc định: các trang nằm trong chân dung A4 và đơn vị đo là milimet. Nó có thể đã được chỉ định rõ ràng với:

Có thể đặt PDF ở chế độ cảnh quan [

data1 = list[csv.reader[csvfile]]
print[data1] ##[[row1],[row2],[row3],[row4]] 
## row1, row2, etc are the rows from csv

for row in data1:
    for x,y in enumerate[row]:
        if [x == 0] or [x == 1]: ## dynamically change the column width with certain conditions
            pdf.cell[2.0, 0.15, str[y], align = 'C', border=1] ## width = 2.0
        else:
            pdf.cell[0.60, 0.15, str[y], align = 'L', border=1] ## width = 0.60
3] hoặc sử dụng các định dạng trang khác [chẳng hạn như
pdf.set_font['helvetica', 'B', 16]
8 và
pdf.set_font['helvetica', 'B', 16]
9] và đo các đơn vị [
pdf.cell[40, 10, 'Hello World!', 1]
0,
pdf.cell[40, 10, 'Hello World!', 1]
1,
pdf.cell[40, 10, 'Hello World!', 1]
2].

Hiện tại không có trang nào, vì vậy chúng tôi phải thêm một trang với add_page. Nguồn gốc nằm ở góc trên bên trái và vị trí hiện tại theo mặc định được đặt ở mức 1 cm từ biên giới; Các lề có thể được thay đổi với set_margins.

Trước khi chúng ta có thể in văn bản, bắt buộc phải chọn một phông chữ với set_font, nếu không, tài liệu sẽ không hợp lệ. Chúng tôi chọn Helvetica đậm 16:

Chúng tôi có thể đã chỉ định chữ in nghiêng với
pdf.cell[40, 10, 'Hello World!', 1]
3, được gạch chân bằng
pdf.cell[40, 10, 'Hello World!', 1]
4 hoặc phông chữ thông thường với một chuỗi trống [hoặc bất kỳ kết hợp nào]. Lưu ý rằng kích thước phông chữ được đưa ra theo điểm, không phải milimet [hoặc đơn vị người dùng khác]; Đó là ngoại lệ duy nhất. Các phông chữ tích hợp khác là
pdf.cell[40, 10, 'Hello World!', 1]
5,
pdf.cell[40, 10, 'Hello World!', 1]
6,
pdf.cell[40, 10, 'Hello World!', 1]
7 và
pdf.cell[40, 10, 'Hello World!', 1]
8.

Bây giờ chúng ta có thể in một ô với ô. Một ô là một khu vực hình chữ nhật, có thể đóng khung, chứa một số văn bản. Nó được hiển thị ở vị trí hiện tại. Chúng tôi chỉ định kích thước của nó, văn bản của nó [giữa hoặc căn chỉnh], nếu nên rút ra biên giới và nơi vị trí hiện tại di chuyển theo nó [bên phải, bên dưới hoặc đến đầu dòng tiếp theo]. Để thêm một khung, chúng tôi sẽ làm điều này:

from fpdf import FPDF


class PDF[FPDF]:
    def header[self]:
        # Setting font: helvetica bold 15
        self.set_font["helvetica", "B", 15]
        # Calculating width of title and setting cursor position:
        width = self.get_string_width[self.title] + 6
        self.set_x[[210 - width] / 2]
        # Setting colors for frame, background and text:
        self.set_draw_color[0, 80, 180]
        self.set_fill_color[230, 230, 0]
        self.set_text_color[220, 50, 50]
        # Setting thickness of the frame [1 mm]
        self.set_line_width[1]
        # Printing title:
        self.cell[
            width,
            9,
            self.title,
            border=1,
            new_x="LMARGIN",
            new_y="NEXT",
            align="C",
            fill=True,
        ]
        # Performing a line break:
        self.ln[10]

    def footer[self]:
        # Setting position at 1.5 cm from bottom:
        self.set_y[-15]
        # Setting font: helvetica italic 8
        self.set_font["helvetica", "I", 8]
        # Setting text color to gray:
        self.set_text_color[128]
        # Printing page number
        self.cell[0, 10, f"Page {self.page_no[]}", align="C"]

    def chapter_title[self, num, label]:
        # Setting font: helvetica 12
        self.set_font["helvetica", "", 12]
        # Setting background color
        self.set_fill_color[200, 220, 255]
        # Printing chapter name:
        self.cell[
            0,
            6,
            f"Chapter {num} : {label}",
            new_x="LMARGIN",
            new_y="NEXT",
            align="L",
            fill=True,
        ]
        # Performing a line break:
        self.ln[4]

    def chapter_body[self, filepath]:
        # Reading text file:
        with open[filepath, "rb"] as fh:
            txt = fh.read[].decode["latin-1"]
        # Setting font: Times 12
        self.set_font["Times", size=12]
        # Printing justified text:
        self.multi_cell[0, 5, txt]
        # Performing a line break:
        self.ln[]
        # Final mention in italics:
        self.set_font[style="I"]
        self.cell[0, 5, "[end of excerpt]"]

    def print_chapter[self, num, title, filepath]:
        self.add_page[]
        self.chapter_title[num, title]
        self.chapter_body[filepath]


pdf = PDF[]
pdf.set_title["20000 Leagues Under the Seas"]
pdf.set_author["Jules Verne"]
pdf.print_chapter[1, "A RUNAWAY REEF", "20k_c1.txt"]
pdf.print_chapter[2, "THE PROS AND CONS", "20k_c1.txt"]
pdf.output["tuto3.pdf"]

Kết quả là PDF

Sau khi bao gồm tệp thư viện, chúng tôi tạo một đối tượng

pdf.set_font['helvetica', 'B', 16]
6. Chất xây dựng FPDF được sử dụng ở đây với các giá trị mặc định: các trang nằm trong chân dung A4 và đơn vị đo là milimet. Nó có thể đã được chỉ định rõ ràng với:

Có thể đặt PDF ở chế độ cảnh quan [

data1 = list[csv.reader[csvfile]]
print[data1] ##[[row1],[row2],[row3],[row4]] 
## row1, row2, etc are the rows from csv

for row in data1:
    for x,y in enumerate[row]:
        if [x == 0] or [x == 1]: ## dynamically change the column width with certain conditions
            pdf.cell[2.0, 0.15, str[y], align = 'C', border=1] ## width = 2.0
        else:
            pdf.cell[0.60, 0.15, str[y], align = 'L', border=1] ## width = 0.60
3] hoặc sử dụng các định dạng trang khác [chẳng hạn như
pdf.set_font['helvetica', 'B', 16]
8 và
pdf.set_font['helvetica', 'B', 16]
9] và đo các đơn vị [
pdf.cell[40, 10, 'Hello World!', 1]
0,
pdf.cell[40, 10, 'Hello World!', 1]
1,
pdf.cell[40, 10, 'Hello World!', 1]
2].

Hiện tại không có trang nào, vì vậy chúng tôi phải thêm một trang với add_page. Nguồn gốc nằm ở góc trên bên trái và vị trí hiện tại theo mặc định được đặt ở mức 1 cm từ biên giới; Các lề có thể được thay đổi với set_margins.

Hai thuộc tính tài liệu được xác định: tiêu đề [set_title] và tác giả [set_Author]. Thuộc tính có thể được xem bằng hai phương tiện. Đầu tiên là mở tài liệu trực tiếp với Acrobat Reader, chuyển đến menu Tệp và chọn tùy chọn Thuộc tính tài liệu. Thứ hai, cũng có sẵn từ trình cắm, là nhấp chuột phải và chọn Thuộc tính tài liệu.

Tuto 4 - Multi Cột

Ví dụ này là một biến thể của cái trước, cho thấy cách đặt văn bản trên nhiều cột.

from fpdf import FPDF


class PDF[FPDF]:
    def __init__[self]:
        super[].__init__[]
        self.col = 0  # Current column
        self.y0 = 0  # Ordinate of column start

    def header[self]:
        self.set_font["helvetica", "B", 15]
        width = self.get_string_width[self.title] + 6
        self.set_x[[210 - width] / 2]
        self.set_draw_color[0, 80, 180]
        self.set_fill_color[230, 230, 0]
        self.set_text_color[220, 50, 50]
        self.set_line_width[1]
        self.cell[
            width,
            9,
            self.title,
            border=1,
            new_x="LMARGIN",
            new_y="NEXT",
            align="C",
            fill=True,
        ]
        self.ln[10]
        # Saving ordinate position:
        self.y0 = self.get_y[]

    def footer[self]:
        self.set_y[-15]
        self.set_font["helvetica", "I", 8]
        self.set_text_color[128]
        self.cell[0, 10, f"Page {self.page_no[]}", align="C"]

    def set_col[self, col]:
        # Set column position:
        self.col = col
        x = 10 + col * 65
        self.set_left_margin[x]
        self.set_x[x]

    @property
    def accept_page_break[self]:
        if self.col 

Bài Viết Liên Quan

Chủ Đề