使用ReportLab处理一个有趣的Python项目,一次创建几十个PDF。 ReportLab要求您选择绘制字符串的位置。
在我生成的PDF文件中,我最多可以向接收者收取六项服务费用。如果接收客户端没有请求或接收这些服务,即(service == 0 / null),那么我将附带的布尔值设置为false,并继续测试其余的服务。我需要测试几个布尔值,以确定绘制服务字符串的位置。
在这个过程结束时,我最终得到一个由6个整数组成的字符串,例如001001(F,F,T,F,F,T)。在这组布尔值的情况下,我会在位置1和2处绘制字符串3和6,而不是留下空白区域。我将提供一个小视觉来帮助理解这个问题。 (例如Booleans 011011)
c.drawstring(locationX1,LocationY1, "Service2")
c.drawstring(locationX1,LocationY1, "Service3")
c.drawstring(locationX1,LocationY1, "Service5")
c.drawstring(locationX1,LocationY1, "Service6")
{produces
Service2
Service3
Service5
Service6}
{rather than
Service2
Service3
Service5
Service6}
目前在我的程序中,为了测试所有这些布尔字符,我有一个包含这些布尔字符串的所有64种可能组合的字典(000000-111111) 即。
"010011" : print20,
"010100" : print21,
"010101" : print22,
"010110" : print23,
"010111" : print24,
"011000" : print25,
为每个可能的结果编写的函数,例如
#BitRep=111011
def print60():
c.setFont('Deja', 12, leading=None)
c.drawString(100, YdrawLocationSVC1, "Service 1 ")
c.drawString(250, YdrawLocationSVC1, str(service1))
c.drawString(100, YdrawLocationSVC2, "Service 2 ")
c.drawString(250, YdrawLocationSVC2, str(service2))
c.drawString(100, YdrawLocationSVC3, "Service 3 ")
c.drawString(250, YdrawLocationSVC3, str(service3))
c.drawString(100, YdrawLocationSVC4, "Service 5 ")
c.drawString(250, YdrawLocationSVC4, str(service5))
c.drawString(100, YdrawLocationSVC5, "Service 6 ")
c.drawString(250, YdrawLocationSVC5, str(service6))
总而言之,感谢您抽出时间阅读所有这些内容,以及任何有任何想法我都希望听到它的人。到目前为止,我要添加的最后一件事是我最喜欢的解决方案,虽然它不能很好地适应我的问题,但我想更多地探索这个选项。我觉得答案在于转移,但我仍然是编程方面的新手,并且不确定如何最好地实现。非常感谢您的意见。
(@ maik-s的一部分回答我以前的帖子。
state = bool6 << 5
state = state ^ (bool5 << 4)
state = state ^ (bool4 << 3)
state = state ^ (bool3 << 2)
state = state ^ (bool2 << 1)
state = state ^ (bool1)
)
我被要求发布代码,其中空字符串留在我的输出PDF中。在这里。
对于n in Line:
Service1=n[1]
Service2=n[2]
Service3=n[3]
Service4=n[4]
Service5=n[5]
Service6=n[6]
(X , Y )
c.drawString(72, 120, str(Service1))
c.drawString(72, 105, str(Service2))
c.drawString(72, 90, str(Service3))
c.drawString(72, 75, str(Service4))
c.drawString(72, 60, str(Service5))
c.drawString(72, 45, str(Service6))
此代码的问题在于,如果n [5]为=“”,则会绘制一个空白字符串。