你的代碼的問題是,canvas.stringWidth(self, text, fontName, fontSize)
返回給定字符串的寬度沒有包裝它。所以旋轉畫布不會減小寬度,因爲字符串仍然是相同的長度。
爲了證明這一點,讓我們看看下面的例子:
def rotated_text_length(c, string):
text_len = c.stringWidth(string, "Helvetica", 10)
print "Normal text: ", text_len
c.rotate(90)
text_len = c.stringWidth(string, "Helvetica", 10)
print "Rotated text: ", text_len
c = canvas.Canvas("hello.pdf")
rotated_text_length(c, "This is a very silly example"*100)
rotated_text_length(c, "This is a very silly example"*50)
如果字符串寬度將包裹我們會得到相同長度的兩個旋轉的句子,但輸出如下:
Normal text: 11891.0
Rotated text: 11891.0
Normal text: 5945.5
Rotated text: 5945.5
這表明返回的寬度只取決於字符串的長度(當然還有字體)。所以沒有包裝的應用基礎上,ReportLab的參考這是有道理的:
def stringWidth(self, text, fontName=None, fontSize=None):
得到一個字符串的寬度在給定的字體和大小
我明白這一點,但如果我們想寫旋轉的文本假設45度,然後可用的空間來寫是超過平面寫....我的邏輯是使用rotate_length = stringWidth/cos(旋轉角度) –
在這種情況下,你可能會檢查此鏈接https:/ /groups.google.com/forum/#!topic/reportlab-users/jn0F1PI8R2g – B8vrede
Thanx for鏈接......這很有用 –