如何使用 PyFPDF 制作内联粗体文本?
How to make inline bold text using PyFPDF?
from fpdf import FPDF
pdf1 = FPDF
pdf1.multi_cell(0, 5, 'This is my disclaimer. THESE WORDS NEED TO BE BOLD. These words do not need to be bold.', 0, 0, 'L')
pdf1.output("sample.pdf")
我将 fpdf 用于 php 并且有同样的需求。
但正如 Olivier 在评论中提到的那样,这是不可能的。所以我写了一个快速的解决方法,我在下面写了一个粗略的 python 实现。
可能不是最漂亮的解决方案,但它可能会为您服务。
from fpdf import FPDF
class FPDF_bold_multicell(FPDF):
def write_multicell_with_styles(self,max_width, cell_height, text_list):
startx = self.get_x()
self.set_font('Arial', '', 16)
#loop through differenct sections in different styles
for text_part in text_list:
#check and set style
try:
current_style = text_part['style']
self.set_font('Arial', current_style, 16)
except KeyError:
self.set_font('Arial', '', 16)
#loop through words and write them down
space_width = self.get_string_width(' ')
for word in text_part['text'].split(' '):
current_pos = self.get_x()
word_width = self.get_string_width(word)
#check for newline
if (current_pos + word_width) > (startx + max_width):
#return
self.set_y(self.get_y() + cell_height)
self.set_x(startx)
pdf1.cell(word_width, 5, word)
#add a space
self.set_x(self.get_x() + space_width)
pdf1 = FPDF_bold_multicell()
pdf1.add_page()
text_list = [{'text':'This is my disclaimer.'},
{'style':'B','text':'THESE WORDS NEED TO BE BOLD.'},
{'text':'These words do not need to be bold.'},]
pdf1.write_multicell_with_styles(50, 5, text_list)
pdf1.output("sample.pdf")
from fpdf import FPDF
pdf1 = FPDF
pdf1.multi_cell(0, 5, 'This is my disclaimer. THESE WORDS NEED TO BE BOLD. These words do not need to be bold.', 0, 0, 'L')
pdf1.output("sample.pdf")
我将 fpdf 用于 php 并且有同样的需求。 但正如 Olivier 在评论中提到的那样,这是不可能的。所以我写了一个快速的解决方法,我在下面写了一个粗略的 python 实现。 可能不是最漂亮的解决方案,但它可能会为您服务。
from fpdf import FPDF
class FPDF_bold_multicell(FPDF):
def write_multicell_with_styles(self,max_width, cell_height, text_list):
startx = self.get_x()
self.set_font('Arial', '', 16)
#loop through differenct sections in different styles
for text_part in text_list:
#check and set style
try:
current_style = text_part['style']
self.set_font('Arial', current_style, 16)
except KeyError:
self.set_font('Arial', '', 16)
#loop through words and write them down
space_width = self.get_string_width(' ')
for word in text_part['text'].split(' '):
current_pos = self.get_x()
word_width = self.get_string_width(word)
#check for newline
if (current_pos + word_width) > (startx + max_width):
#return
self.set_y(self.get_y() + cell_height)
self.set_x(startx)
pdf1.cell(word_width, 5, word)
#add a space
self.set_x(self.get_x() + space_width)
pdf1 = FPDF_bold_multicell()
pdf1.add_page()
text_list = [{'text':'This is my disclaimer.'},
{'style':'B','text':'THESE WORDS NEED TO BE BOLD.'},
{'text':'These words do not need to be bold.'},]
pdf1.write_multicell_with_styles(50, 5, text_list)
pdf1.output("sample.pdf")