上标传递给 reportlab drawString() 方法的字符串中的符号
Superscript a symbol in a string passed to reportlab drawString() method
当使用 reportlab
通过 drawString()
方法?
例如,打印一个字符串,如 '37%'
,我希望 '%'
符号是上标。
我想我目前的解决方法是使用对 drawString()
方法的两个单独调用,并为每个方法指定单独的字体大小,并使用有效模拟上标符号的坐标。是否有任何其他可行的解决方法将此限制为 drawString()
方法的一次调用?
您可以使用 matplotlib.pyplot
来执行此操作:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.set(title= r'This is an expression: ^{\%}$')
plt.show()
如果您最终需要大量使用数学和公式,您不妨考虑使用可以转换为 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 两次相比,此方法的优势在于您无需计算放置 %
符号的坐标。
当使用 reportlab
通过 drawString()
方法?
例如,打印一个字符串,如 '37%'
,我希望 '%'
符号是上标。
我想我目前的解决方法是使用对 drawString()
方法的两个单独调用,并为每个方法指定单独的字体大小,并使用有效模拟上标符号的坐标。是否有任何其他可行的解决方法将此限制为 drawString()
方法的一次调用?
您可以使用 matplotlib.pyplot
来执行此操作:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.set(title= r'This is an expression: ^{\%}$')
plt.show()
如果您最终需要大量使用数学和公式,您不妨考虑使用可以转换为 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 两次相比,此方法的优势在于您无需计算放置 %
符号的坐标。