2012-01-18 20 views
6

के साथ जावा का उपयोग कर शब्द दस्तावेज़ पर बुलेट सूची बनाएं, मुझे अपाचे पीओआई एपीआई के साथ जावा के माध्यम से उत्पन्न इंडेंट और कस्टम बुलेट के साथ शब्द दस्तावेज़ में बुलेट सूची की आवश्यकता है। मैंने खोज की है और मैं इसे Word दस्तावेज़ के लिए नहीं ढूंढ सकता। यह टेक्स्ट-बॉक्स का उपयोग कर पावरपॉइंट स्लाइड के लिए उपलब्ध है। लेकिन मैं टेक्स्ट-बॉक्स का उपयोग नहीं करना चाहता हूं। कृपया मुझे इसे प्राप्त करने की संभावनाएं बताएं। किसी भी मदद की बहुत सराहना की। धन्यवाद! सम्मान के साथ, अरुण गणेश। पीअपाचे पीओआई एपीआई

उत्तर

1

POI के HWPF एक अपरिपक्व एपीआई है - नेतृत्व डेवलपर एक नौकरी कि एक गैर प्रकटीकरण समझौते पर हस्ताक्षर करने अपरिहार्य पेशकश की गई थी और वह लिए मजबूर किया गया यह में काम कर परित्याग - और यह इसका इस्तेमाल करने के लिए संभव नहीं हो सकता है पर अपनी इच्छित फाइलें उत्पन्न करें।

(POI के XWPF का उपयोग कर) continuation of the post

2

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

`org.w3c.dom.Node bkmk = bookmark.getctBookmark).getDomNode();` 

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

<w:p> 
    <w:pPr> 
    <w:pStyle w:val="style0" /> 
    <w:numPr> 
     <w:ilvl w:val="1" /> 
     <w:numId w:val="2" /> 
    </w:numPr> 
    <w:tabs> 
     <w:tab w:leader="none" w:pos="1807" w:val="left" /> 
    </w:tabs> 
    <w:spacing w:after="0" w:before="120" /> 
    <w:ind w:end="907" w:hanging="360" w:start="907" /> 
    <w:jc w:val="both" /> 
    </w:pPr> 
    <w:bookmarkStart w:id="1" w:name="GIVES" /> 
    <w:r> 
    <w:t>To be inserted Next Bullet</w:t> 
    </w:r> 
    <w:bookmarkEnd w:id="1" /> 
    <w:r> 
    <w:rPr> 
     <w:rFonts w:eastAsia="Times New Roman" /> 
     <w:color w:val="000000" /> 
     <w:lang w:eastAsia="en-US" /> 
    </w:rPr> 
    </w:r> 
</w:p> 

कुंजी टैग कर रहे हैं और और मैं टैग की एक्सएमएल अर्थ के साथ सुपर परिचित नहीं हूँ, लेकिन आप किसी भी docx अनज़िप और (बेशक, साफ साथ प्रारूपित के बाद) document.xml देखो अगर आप संख्याओं के साथ और बिना पैराग्राफ के बीच अंतर देख सकते हैं।

तो, आपके टैग के क्लोन होने के बाद, आप नोड के साथ नोड को पार करने के लिए नोड ट्रैफिक को प्राप्त और प्रतिस्थापित कर सकते हैं, या आप नोड को खोजने के लिए xpath का उपयोग कर सकते हैं (w: r/w : टी)। आप स्थापना के लिए एक NamespaceContext है और यह w समझने के लिए उचित कोड दें: उपसर्ग

 NodeList nl; 
     XPath xp = XPathFactory.newInstance().newXPath(); 
     NamespaceContext nsContext = new NamespaceContext(){ 
      @Override public String getNamespaceURI(String prefix) { 
       if (prefix.equals("w")) { 
        return "http://schemas.openxmlformats.org/wordprocessingml/2006/main"; 
       } 
       return null; 
       } 

       @Override public String getPrefix(String namespaceURI) { 
       return null; 
       } 

       @Override public Iterator<?> getPrefixes(String namespaceURI) { 
       return Collections.emptyList() 
        .iterator(); 
       } 
      }; 
     xp.setNamespaceContext(nsContext); 
     nl = (NodeList) xp.evaluate("w:r/w:t", copy, XPathConstants.NODESET); 

अब, nodeList, setNodeValue ("हैलो दुनिया") बढ़ावा देते हैं। क्लोनिंग और करने के बाद आप यह कर सकते हैं: paragraph.getParentNode().insertBefore(bkmk, paragraph);

जितना चाहें उतने बुलेट पॉइंट प्राप्त करने के लिए। आप

करते हैं
`paragraph.getParentNode().append(bkmk)` 

अपने नए बुलेट बिंदु दस्तावेज़ के अंत में हो जाएगा!

तो, आपको सम्मिलित करना होगा इससे पहले (यह केवल एकमात्र डोम नोड मैनिपुलेशन संलग्न करने के अलावा उपलब्ध है)। यह आपको अंत में अपने मूल खाली बुलेट बिंदु के साथ, इसमें बुकमार्क के साथ छोड़ देता है। आपको पैराग्राफ.getParentNode() के साथ बुकमार्क को हटाने की आवश्यकता है। RemoveChild (अनुच्छेद);

फिर अपनी फ़ाइल को पीओआई के साथ सहेजें।

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

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