2011-01-25 21 views
10

我使用reportlab生成一些pdf文件。我有一個重複的部分。它包含一個標題和一個表:如何在reportlab中對對象進行分組,以便它們在新頁面中保持一致

  Story.append(Paragraph(header_string, styleH)) 
      Story.append(table) 

我怎麼能集團與表中的第(乳膠我把它們放進相同的環境),這樣,在一個頁面制動,段落和表格的情況下,待在一起?目前該段落有時會浮動在一頁的末尾,表格從下一頁的頂部開始。

回答

5

這是我發現通過ReportLab的源代碼去溶液:

paragraph = Paragraph(header_string, styleH) 
paragraph.keepWithNext = True 
Story.append(paragraph) 
Story.append(table) 
+0

我喜歡使用`故事[-1] .keepWithNext = TRUE;因爲它使代碼短和更清潔的,並且可以很容易地添加並且無需更改變量名稱即可移除。因爲可以在循環中設置`story [-1] .keepWithNext = True`,然後在循環之後設置`story [-1] .keepWithNext = False`來斷開循環中添加的內容從任何下一個添加。 – jenniwren 2016-03-14 23:27:29

8

你可以試試把它們放在一起在KeepTogether流動的,就像這樣:

Story.append(KeepTogether([Paragraph(header_string, styleH), table]) 

但是要知道,去年我檢查,落實不完美,仍會分手項目過於頻繁。我知道它保持一個流動性一起,否則將分裂,就像如果你說的不錯:

Story.append(KeepTogether(Paragraph(header_string, styleH)) 

那麼這一段不會得到分流,除非它是不可能的,但並非如此。

如果KeepTogether不爲你工作,我建議創建一個自定義Flowable與段落和表格內,然後佈局過程中要確保您的自定義Flowable子不允許自己被分裂。

相關問題