1

前段时间,我将一个 PHP 脚本翻译成 python,但最近我遇到了一些问题。(这是一个生成选票的脚本)

编码:

完整代码在这里:https ://pastebin.com/ULAF1Nh5

打印投票选项(候选人姓名和政党)的部分在第 403 行附近:

    #Now we have the text, we calculate how tall it is
    current_option_height = getOptionHeight(current_option_text,left_padding,right_padding)
    #Write the option out
    pdf.set_left_margin(left_margin+left_padding+(current_column*column_width)+oval_column_width)
    pdf.set_xy((left_margin+(current_column*column_width)+left_padding)+oval_column_width,current_column_y+OVAL_HEIGHT*2)
    WriteHTML(current_option_text)
    print(current_option_text)

getOptionHeight 函数只返回给定文本的高度。WriteHTML 函数只是将 html 文本转换为 python 文本并将其写入 pdf :

def WriteHTML(html):
    #HTML parser
    html = html.replace('\n',' ')
    a = html.replace('<BR>','\n')
    a = a.replace('</B>','<B>')
    a = a.split('<B>')
    for i in a:
        if a.index(i)%2 == 0:
            #Normal
            pdf.set_font('Helvetica','',11.5)
            pdf.write(OPTION_LINE_HEIGHT,i)
        else:
            #Bold
            pdf.set_font('Helvetica','B',11.5)
            pdf.write(OPTION_LINE_HEIGHT,i)

问题: 起初,脚本有效。输入其中的第一个文本是:

President and Vice-President of the United States
Vote for 1 pair
<B>Joseph R. Biden<BR>and<BR>Kamala D. Harris</B><BR>Democratic
<B>Donald J. Trump<BR>and<BR>Michael R. Pence</B><BR>Republican
<B>Jo Jorgensen<BR>and<BR>Jeremy F. "Spike" Cohen</B><BR>Libertarian

(每个选项单独写)

这产生了这个(如预期的那样): 完美生成的选票部分

但是,一旦它画出选票的另一部分,它就会开始垂直书写文本: 甚至 2000 年棕榈滩县的选票也更好

为什么?我该如何解决?

4

0 回答 0