ReportLab: Wie richten Sie ein textobject?
Habe ich Folgendes ReportLab-code:
t = c.beginText()
t.setFont('Arial', 25)
t.setCharSpace(3)
t.setTextOrigin(159,782)
t.textLine("Some string")
c.drawText(t)
Was ich erreichen will ist: 3 (Pixel?) Platz zwischen den einzelnen Zeichen (setCharSpace
), und richten Sie die resultierende Zeichenfolge in der Mitte der einen gewissen Bereich in der Seite
Dem textobject ist der einzige Weg, soweit ich herausgefunden, dass ich kann geben Sie ein Leerzeichen zwischen den Zeichen.
Irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Grunde müssen Sie nur berechnen Sie die Breite der Zeichenfolge, die Breite der Bereich, wo Sie wollen, um es, und du bist fertig.
Verwenden Canvas.stringWidth an, um die Breite einer bestimmten Zeichenfolge (mit schriftart und-Größe) belegt. Es dauert nicht char-Abstand berücksichtigt, aber ich habe einige tests, die nahelegt, dass kann man beheben.
Alle es tut, ist die Verwendung der original -
stringWidth
zum berechnen der Breite der Zeichenfolge, und fügen Sie die zusätzlichen Leerzeichen zwischen den Zeichen. Nun, ich bin nicht erfahren mit Typografie, also ich bin mir nicht sicher, ob schriftart-Funktionen wie kerning kann machen diese unbrauchbar.Wenn Sie passen Sie Ihre x Herkunft wie diese, die Ihren Text zentriert.
Kleinen test-script, das ich verwendet http://pastebin.com/PQxzi1Kf (code ist keine Schönheit, aber es funktioniert).
Reportlab ist eine Methode,
drawCentredString
(zentriert für britische Schreibweise). Dies zentriert den text an der gegebenen x-Koordinate.http://www.reportlab.com/apis/reportlab/2.4/pdfgen.html
Versuchen:
<para alignment="center">
Aus: http://two.pairlist.net/pipermail/reportlab-users/2006-June/005092.html