2009-03-12 11 views
13

के साथ पेज गिनती दिखा रहा है मैं रिपोर्टलाब के साथ की गई एक रिपोर्ट में एक सरल "पृष्ठ x का वाई" जोड़ने की कोशिश कर रहा हूं .. मुझे this old post मिला, लेकिन शायद छह साल बाद कुछ और सरल हो गया? ^^;
मैं this recipe भी पाया, लेकिन जब मैं इसका इस्तेमाल, जिसके परिणामस्वरूप पीडीएफ छवियों याद आ रही है ..ReportLab

+1

मैं इस एक ही मुद्दा था। यहां सक्रिय कार्य से नुस्खा है जो संख्याबद्ध कन्ववास का उपयोग करता है जो वास्तव में काम करता है: http://code.activestate.com/recipes/576832/ – Esteban

उत्तर

11

मैं सक्रियस्टेट से क्रमांकित कनवस दृष्टिकोण को लागू करने में सक्षम था। यह करना बहुत आसान था और मेरे अधिकांश मौजूदा कोड को नहीं बदला। मुझे बस इतना करना था कि क्रमांकित कैनवास वर्ग जोड़ें और मेरे डॉक्टर का निर्माण करते समय कैनवस्कर विशेषता जोड़ें। मैं भी जहां "y के एक्स" प्रदर्शित किया गया था की माप बदल दिया है:

self.doc.build(pdf) 

बन

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

डॉक एक BaseDocTemplate है और पीडीएफ flowable तत्वों की सूची है।

+0

क्या छवियां सामान्य रूप से उस दृष्टिकोण के साथ दिखाई देती हैं? – Joril

+0

मेरे पास पीडीएफ पर बिना किसी समस्या के चित्र प्रदर्शित छवियां हैं। यदि आपको छवियों में कोई समस्या हो रही है, तो क्या आप एक नया प्रश्न विस्तृत या शुरू कर सकते हैं? – adam

+0

ऐसा लगता है कि यह तकनीक इंट्रा-दस्तावेज़ लिंक तोड़ती है। जब मैंने इसका इस्तेमाल किया, दस्तावेज़ के एक हिस्से से दूसरे भाग में सभी लिंक अपने वास्तविक लक्ष्यों पर जाने के बजाय पहले पृष्ठ के नीचे भागने के लिए नेविगेट करना शुरू कर दिया। – CoreDumpError

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 
+0

हां लेकिन मुश्किल हिस्सा यह है कि "वाई" भाग को कैसे समझें :) यानी, पृष्ठों की कुल संख्या – Joril

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)) 
+0

यह केवल तभी काम करता है यदि आपके पास एकाधिक पास हैं – jake77

संबंधित मुद्दे