使用'%'
方法通过reportlab
方法将该字符串写入PDF时,是否有一种简单的方法可以在Python中上标字符串的子字符串(例如drawString()
符号)? / p>
比方说,打印一个字符串,例如'37%'
,我希望'%'
符号为上标。
我当前的解决方法我想改为使用对drawString()
方法的两个单独调用,并为每个方法指定单独的字体大小,其坐标有效地模拟上标符号。还有其他可行的解决方法将此限制为drawString()
方法的一次调用吗?
答案 0 :(得分:1)
如果您最终在数学和公式上做了大量工作,则不妨考虑使用可转换为pdf的LaTex。
我不认为您的要求可以通过drawString方法实现,但是reportlab提供了另一种允许的方法。
本文应该对您有很大帮助:https://www.blog.pythonlibrary.org/2018/02/06/reportlab-101-the-textobject/
直接从本文中进行修改可以为我们提供以下代码:
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
def apply_scripting(textobject, text, rise):
textobject.setFont("Helvetica-Oblique", 8)
textobject.setRise(rise)
textobject.textOut(text)
textobject.setFont("Helvetica-Oblique", 12)
textobject.setRise(0)
def main():
canvas_obj = canvas.Canvas("textobj_rising.pdf",
pagesize=letter)
# Create textobject
textobject = canvas_obj.beginText()
textobject.setFont("Helvetica-Oblique", 12)
# Set text location (x, y)
textobject.setTextOrigin(10, 730)
textobject.textOut('37')
apply_scripting(textobject, '%', 4)
canvas_obj.drawText(textobject)
canvas_obj.save()
if __name__ == '__main__':
main()
哪个会创建这样的pdf文件:
相对于drawString,此方法的优点是您无需弄清楚放置%
符号的坐标。
答案 1 :(得分:0)
您可以使用matplotlib.pyplot
执行此操作:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.set(title= r'This is an expression: $37^{\%}$')
plt.show()