如何使用 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")