2011-04-05 11 views
10

मैं सेल हेडसेट के बीच में अपने हेडसेट सेल टेक्स्ट को लंबवत करने की कोशिश कर रहा हूं।iText: पीडीएफटेबल सेल लंबवत संरेखण

यह मेरा कोड है:

PdfPCell c1 = new PdfPCell(cerate_phrase("" ,regular_bold)); 
    c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
    c1.setVerticalAlignment(Element.ALIGN_MIDDLE); 
    c1.setBackgroundColor(BaseColor.LIGHT_GRAY); 
    table_.addCell(c1); 

लेकिन यह काम नहीं करता .. setHorizontalAlignment केन्द्रित है लेकिन नहीं है setVerticalAlignment।

क्या मैं कुछ गलत कर रहा हूं? मैं इसे बीच में कैसे बना सकता हूं?

किसी भी मदद की मंजूरी दे दी जाएगी।

+0

कई बार इस प्रश्न से पूछा गया है (और उत्तर दिया गया है)। पीडीएफसेल वर्टिकल संरेखण के लिए खोजें। –

+0

@ मार्क स्टोरर: मुझे यह प्रश्न मिला: iText - लंबवत संरेखण समग्र मोड में काम नहीं कर रहा है - लेकिन यह मेरे लिए काम नहीं करता है। कोई विचार? – user590586

+0

@MarkStorer क्या आप डुप्लिक से लिंक कर सकते हैं? मेरी खोज ने कुछ भी नहीं बदला। – djeikyb

उत्तर

18

Lowagie के अनुसार:

PdfPCell cell = new PdfPCell(new Phrase("blah Blah blah"); 
cell.setVerticalAlignment(Element.ALIGN_MIDDLE); 

यह हमेशा एक तकनीकी अर्थ में सही है, लेकिन कभी कभी बुरा लग रहा है।

केंद्र के लिए, ऑब्जेक्ट के चारों ओर एक बॉक्स खींचें, इसके मध्य को ढूंढें, और इसे अपने आसपास के ऑब्जेक्ट के केंद्र से संरेखित करें।

iText इस प्रकार वाक्यांश का केंद्र पाता है, और इसे संरेखित करता है। लेकिन मानव आंखें कभी-कभी टेक्स्ट के बड़े हिस्से पर ध्यान केंद्रित करती हैं, बेसलाइन और टोपी ऊंचाई के बीच फ़ॉन्ट के हिस्सों का कहना है। तो यह अच्छा दिखने के लिए, आपको उससे संबंधित केंद्र की आवश्यकता है।

Phrase content = new Phrase("Blah blah blah", Font); 

Float fontSize = content.getFont().getSize(); 
Float capHeight = content.getFont().getBaseFont().getFontDescriptor(BaseFont.CAPHEIGHT, fontSize); 

Float padding = 5f;  

PdfPCell cell = new PdfPCell(content); 
cell.setPadding(padding); 
cell.setPaddingTop(capHeight - fontSize + padding); 

ध्यान दें कि पीडीएफपीसेल विधि सेट वर्टिकल एलाइनमेंट (..) का उपयोग नहीं किया जाता है।

ऐसा लगता है कि यह एक बहु-पंक्ति वाक्यांश के लिए आवश्यक नहीं होगा, लेकिन ऐसा करता है।

Typography Line Terms

समस्या स्पष्ट हो सकता है अगर नीली लपटें चारों ओर बातें बाउंडिंग बॉक्स दिखा सकता है (मन, आप iText बाउंडिंग बॉक्स आकर्षित करने के लिए बता सकते हैं, यह/बंद स्विच पर एक जादुई से सिर्फ अधिक काम है)।

यह समाधान email from Paulo Soares से अनुकूलित किया गया है।

+0

विचार अच्छा है, लेकिन यह पूरी तरह से काम नहीं करता है .. मुझे नहीं लगता कि फ्लोट "पैडिंग" को "5f" –

+2

पर तय किया जाना चाहिए: 'setPaddingBottom (2 * (fontSize-capHeight)); ' और आप 'setVerticalAlignment (Element.ALIGN_MIDDLE) को कॉल करते हैं; ' –

+0

@djeikyb सुपर आपने अपना समय बचाया..अपने जवाब के लिए +1 वोट धन्यवाद। –

6

जोड़े cell.setUseAscender(true)c1.setVerticalAlignment(Element.ALIGN_MIDDLE); से पहले मैं तुम्हारे साथ एक ही समस्या है, जब ऐड कोड ऊपर मैं यह काम कर सकते हैं, उम्मीद है कि इस समस्या का समाधान कर सकते हैं अपने, धन्यवाद।

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