13

ReportLab で作成したレポートに単純な「ページ x/y」を追加しようとしています。この古い記事を見つけましたが、6 年後にはもっと簡単なものが出てきたのではないでしょうか? ^^; このレシピ
も 見つけましたが、使用すると、結果のPDFに画像がありません..

4

3 に答える 3

11

ActiveState から NumberedCanvas アプローチを実装できました。実行するのは非常に簡単で、既存のコードをほとんど変更しませんでした。私がしなければならなかったのは、その NumberedCanvas クラスを追加し、ドキュメントを作成するときに canvasmaker 属性を追加することだけでした。「x of y」が表示される場所の測定値も変更しました。

self.doc.build(pdf)

なりました

self.doc.build(pdf, canvasmaker=NumberedCanvas) 

docは BaseDocTemplate であり、pdfはフロー可能な要素のリストです。

于 2009-03-12T18:54:30.960 に答える
4

doc.multiBuild を使用

およびページヘッダーメソッド(「onLaterPages =」で定義):

global TOTALPAGES
if doc.page > TOTALPAGES:
    TOTALPAGES = doc.page
else:
    canvas.drawString(270 * mm, 5 * mm, "Seite %d/%d" % (doc.page,TOTALPAGES))
于 2011-10-13T18:32:55.823 に答える
1

あなたのためにいくつかのコードを掘り起こすだけで、これを使用します:

SimpleDocTemplate(...).build(self.story,
                             onFirstPage=self._on_page,
                             onLaterPages=self._on_page)

self._on_page次のような各ページに対して呼び出されるメソッドがあります。

def _on_page(self, canvas, doc):
    # ... do any additional page formatting here for each page
    print doc.page
于 2009-03-12T11:29:03.463 に答える