Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 上标传递给reportlab drawString()方法的字符串中的符号_Python_Reportlab_Superscript - Fatal编程技术网

Python 上标传递给reportlab drawString()方法的字符串中的符号

Python 上标传递给reportlab drawString()方法的字符串中的符号,python,reportlab,superscript,Python,Reportlab,Superscript,当使用reportlab通过drawString()方法将字符串写入PDF时,是否有一种简单的方法在Python中为字符串的子字符串(例如'%'符号)上标 例如,打印一个字符串,如'37%',其中我希望'%'符号是上标 我目前的解决方法是使用两个单独的调用drawString()方法,并为每个方法指定单独的字体大小,使用有效模拟上标符号的坐标。是否有其他可行的解决方法将此限制为一次调用drawString()方法?您可以使用matplotlib.pyplot执行此操作: import matpl

当使用
reportlab
通过
drawString()
方法将字符串写入PDF时,是否有一种简单的方法在Python中为字符串的子字符串(例如
'%'
符号)上标

例如,打印一个字符串,如
'37%'
,其中我希望
'%'
符号是上标


我目前的解决方法是使用两个单独的调用
drawString()
方法,并为每个方法指定单独的字体大小,使用有效模拟上标符号的坐标。是否有其他可行的解决方法将此限制为一次调用
drawString()
方法?

您可以使用
matplotlib.pyplot
执行此操作:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

ax.set(title= r'This is an expression:  $37^{\%}$')

plt.show()

<>如果你在数学和公式上做了大量的工作,你可以考虑使用可以转化为PDF的胶乳。 我不认为使用drawString方法可以实现您的要求,但reportlab提供了另一种允许它的方法

这篇文章应该对您有很大帮助:

直接从文章中改编,我们得到了以下代码:

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:


与拉丝相比,这种方法的优点是不需要计算出放置
%
符号的坐标。

可能重复?什么意思?你在用终点站吗?终端不支持上标。您必须使用类似于
bearlibterminal
的东西。我将使用reportlab将字符串打印为PDF,并将字符串传递给drawString()method@RickAhlf那么,请编辑您的问题,将其包括在内。不过,这看起来不像是保存为字符串。在将字符串打印到reportlab生成的PDF时,我是否能够将其传递给drawString()方法?这是一个很棒的解决方案,完全按照我的需要工作!也感谢您提供的有用的链接文章。