2010-07-28 12 views
6

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

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

POIFSFileSystem fs = null; 
Document document = new Document(); 

try { 
    System.out.println("Starting the test"); 
    fs = new POIFSFileSystem(new FileInputStream("/document/test2.doc")); 

    HWPFDocument doc = new HWPFDocument(fs); 
    WordExtractor we = new WordExtractor(doc); 

    OutputStream file = new FileOutputStream(new File("/document/test.pdf")); 

    PdfWriter writer = PdfWriter.getInstance(document, file); 

    Range range = doc.getRange(); 
    document.open(); 
    writer.setPageEmpty(true); 
    document.newPage(); 
    writer.setPageEmpty(true); 

    String[] paragraphs = we.getParagraphText(); 
    for (int i = 0; i < paragraphs.length; i++) { 

     org.apache.poi.hwpf.usermodel.Paragraph pr = range.getParagraph(i); 
     // CharacterRun run = pr.getCharacterRun(i); 
     // run.setBold(true); 
     // run.setCapitalized(true); 
     // run.setItalic(true); 
     paragraphs[i] = paragraphs[i].replaceAll("\\cM?\r?\n", ""); 
    System.out.println("Length:" + paragraphs[i].length()); 
    System.out.println("Paragraph" + i + ": " + paragraphs[i].toString()); 

    // add the paragraph to the document 
    document.add(new Paragraph(paragraphs[i])); 
    } 

    System.out.println("Document testing completed"); 
} catch (Exception e) { 
    System.out.println("Exception during test"); 
    e.printStackTrace(); 
} finally { 
       // close the document 
    document.close(); 
      } 
} 

कृपया मेरी मदद करो।

अग्रिम में Thnx।

उत्तर

4

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

टीका वर्ग शब्द दस्तावेजों के बारे में नोट करने के लिए https://svn.apache.org/repos/asf/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/WordExtractor.java

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

3

यदि आप WordExtractor का उपयोग करते हैं, तो आपको केवल टेक्स्ट ही मिलेगा। CharacterRun कक्षा का उपयोग करने का प्रयास करें। आपको पाठ के साथ शैली मिल जाएगी। कृपया निम्नलिखित नमूना कोड देखें।

Range range = doc.getRange(); 
for (int i = 0; i < range.numParagraphs(); i++) { 
    org.apache.poi.hwpf.usermodel.Paragraph poiPara = range.getParagraph(i); 
    int j = 0; 
    while (true) { 
     CharacterRun run = poiPara.getCharacterRun(j++); 
     System.out.println("Color "+run.getColor()); 
     System.out.println("Font size "+run.getFontSize()); 
     System.out.println("Font Name "+run.getFontName()); 
     System.out.println(run.isBold()+" "+run.isItalic()+" "+run.getUnderlineCode()); 
     System.out.println("Text is "+run.text()); 
     if (run.getEndOffset() == poiPara.getEndOffset()) { 
      break; 
     } 
    } 
} 
संबंधित मुद्दे