2010-07-28 6 views
6

Je travaille actuellement projet Java avec l'utilisation de pache apache. Maintenant, dans mon projet, je veux convertir le fichier doc en fichier pdf. La conversion a été effectuée avec succès, mais je ne reçois que du texte en pdf, pas de style de texte ou de couleur de texte. Mon fichier pdf ressemble à un noir & blanc. Alors que mon fichier doc est coloré et a un style de texte différent.Apache POI HWPF - problème dans convertir le fichier doc en pdf

Ceci est mon code,

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(); 
      } 
} 

s'il vous plaît aidez-moi.

Thnx à l'avance.

Répondre

4

Si vous regardez Apache Tika, il y a un bon exemple de lecture d'informations de style à partir d'un document HWPF. Le code dans Tika génère du HTML basé sur le contenu HWPF, mais vous devriez trouver quelque chose de très similaire qui fonctionne pour votre cas.

La classe Tika est https://svn.apache.org/repos/asf/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/WordExtractor.java

Une chose à noter sur les documents de mot est que tout dans une course de caractère a la même mise en forme appliquée. Un paragraphe est donc composé d'un ou de plusieurs parcours de personnage. Certains styles sont appliqués à un paragraphe, et d'autres parties sont effectuées sur les pistes. Selon le format qui vous intéresse, il peut donc s'agir du paragraphe ou de la course.

3

Si vous utilisez WordExtractor, vous obtiendrez uniquement du texte. Essayez d'utiliser la classe CharacterRun. Vous obtiendrez du style avec du texte. S'il vous plaît se référer à l'exemple de code.

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; 
     } 
    } 
} 
Questions connexes