2010-01-23 19 views
11

मैं पीडीएफ रिपोर्ट पर एक टेबल प्रिंट करने के लिए रिपोर्ट लैब लाइब्रेरी का उपयोग कर रहा हूं। मैं जानना चाहता हूं कि सेल की सामग्री के स्वचालित लपेटने के लिए तालिका को कॉन्फ़िगर करना संभव है या नहीं।रिपोर्ट लैब पर वर्ड रैप पीडीएफ टेबल

उदाहरण के लिए, मेरे पास एक टेक्स्ट है जो कॉलम के अंदर किसी सेल पर फिट नहीं होता है। मैं चाहता हूं कि तालिका कॉलम चौड़ाई पर फिट करने के लिए स्वचालित रूप से कक्षों की सामग्री को समायोजित करने के लिए लपेटें। क्या यह संभव है?

उत्तर

13

आप किसी तालिका तत्व में कोई प्रवाह योग्य डाल सकते हैं। संभवतः सभी टेबल तत्वों को प्रवाह के रूप में रखना अच्छा अभ्यास है, इसलिए उन्हें एक ही स्टाइल किया जा सकता है। आपके मामले के लिए आपको सबसे अधिक अनुच्छेद प्रवाह योग्य की आवश्यकता होगी। जैसे।

styles = getSampleStyleSheet() 
text = Paragraph("long line", 
       styles['Normal']) 

आप किसी तालिका में फ़ीड किए गए डेटा में 'टेक्स्ट' डाल सकते हैं और यह स्वचालित रूप से लपेट जाएगा।

+0

मैं अब यह परीक्षण और यह वास्तव में शब्द से काम करता है, रैपिंग। धन्यवाद दोस्त! –

+0

मुझे इसका उपयोग करने में समस्या है .. यदि डेटा लंबा है और फिट करने के लिए दूसरी पंक्ति लेती है तो मेरा दूसरा सेल डेटा भी दूसरी पंक्ति से शुरू होता है और इन कोशिकाओं के लिए पहली पंक्ति खाली रहती है। क्या आप इससे मेरी सहायता कर सकते हैं? –

2

मेरे समाधान, स्ट्रिंग में बल न्यू लाइन:

def __chopLine(line, maxline): 

    cant = len(line)/maxline 
    cant += 1 
    strline = "" 
    index = maxline 
    for i in range(1,cant): 
     index = maxline * i 
     strline += "%s\n" %(line[(index-maxline):index]) 
    strline += "%s\n" %(line[index:]) 
    return strline 
2

शब्द के * पूरे कोड लपेट

from reportlab.pdfgen import canvas 
from reportlab.lib.pagesizes import A4 
from reportlab.lib.styles import getSampleStyleSheet 
from reportlab.platypus import Paragraph, Table, TableStyle 
from reportlab.lib.enums import TA_JUSTIFY, TA_LEFT, TA_CENTER 
from reportlab.lib import colors 

# bodytext style used for wrapping data on flowables 
styles = getSampleStyleSheet() 
styleN = styles["BodyText"] 
#used alignment if required 
styleN.alignment = TA_LEFT 

styleBH = styles["Normal"] 
styleBH.alignment = TA_CENTER 


hdescrpcion = Paragraph('''<b>descrpcion</b>''', styleBH) 
hpartida = Paragraph('''<b>partida</b>''', styleBH) 


descrpcion = Paragraph('long long long long long long long long long long long long long long long long long long long long line ', styleN) 
partida = Paragraph('1', styleN) 

data= [[hdescrpcion, hpartida], 
     [partida ,descrpcion]] 

table = Table(data) 

table.setStyle(TableStyle([ 
         ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black), 
         ('BOX', (0,0), (-1,-1), 0.25, colors.black), 
         ])) 

c = canvas.Canvas("a.pdf", pagesize=A4) 
table.wrapOn(c, 50, 50) 
table.drawOn(c, 100,600) 
c.save() 
+1

स्टैक ओवर फ्लो में आपका स्वागत है, इसके लिए मेरा दूसरा सेल डेटा प्रारंभ करने के लिए दूसरी पंक्ति में स्थानांतरित नहीं हो रहा है। कृपया कोड के बारे में कुछ स्पष्टीकरण प्रदान करें। और पढ़ें [** एफएक्यू **] (http://stackoverflow.com/faq) –

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