gpt4 book ai didi

reportlab - 使用XPreformatted的换行符引起的reportlab问题-打印了额外的问号

转载 作者:行者123 更新时间:2023-12-02 04:16:59 29 4
gpt4 key购买 nike

我正在使用XPreformatted打印一些预格式化的文本,我有一个
换行符的问题。

换行符正确翻译,但另外我得到一个
每行末尾都有“问号”。

这是我的输出:

first line?
second line?
some more text

我在django和mysql中使用数据库字段是一个简单的varchar
领域。

我在数据库中检查了它以及“e”之间的所有内容
“第一行第二行”中的“s”是换行符。用
换行符,是指我按时在数据库中输入的内容
“输入” ;-)

因此,对我来说,一方面新行是
正确地解释为新行,此外还有一个错误
问号。

希望在这里找到帮助
最好的祝福
汤姆

最佳答案

好的,我现在知道如何避免这种行为。我只是删除\ n之前的字符。它是字节字符13。因此,我创建了一个gready repair算法来删除该字符,并且pdf生成世界再次正常;-)

def repair_string_for_xpreformatted_use(value):
#remove element before \n
#it is an empty element interpreted from XPreformatted as a question mark
#i guess this element is coming from the mysql db. test it with postgres db!
#this is definitely a greedy repair algorithm

lb_index = value.find('\n')
start_index = 0
end_index = len(value)
value_rep = ""
while lb_index != -1:
lb_index = value.find('\n', 1)
byte_list = toBytes(value[lb_index-1])
if byte_list[0] == 13:
#13 is the strange byte character which should not be there. remove it.. bye bye number 13
value_rep += value[start_index:lb_index-1]
else:
#do not remove the character. we do not want to strip some user information ;-)
value_rep += value[start_index:lb_index]

value = value[lb_index:end_index]
if lb_index == (end_index -1) or lb_index == end_index:
lb_index = -1
end_index = len(value)
return value_rep

如何使用它:
from reportlab.platypus import XPreformatted
footerstyle = ParagraphStyle(name='footerstyle', leading=6, spaceBefore=0, spaceAfter=0, textColor=gray2, fontName='Calibri', fontSize=5, alignment=TA_RIGHT)
footer_text_rep = repair_string_for_xpreformatted_use(footer_text)
footer_text_pre = XPreformatted(smart_str(footer_text_rep), footerstyle)

关于reportlab - 使用XPreformatted的换行符引起的reportlab问题-打印了额外的问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2416210/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com