2010-07-28 12 views
6

Şu anda apache poi kullanımıyla Java projesinde çalışıyorum. Artık projemde doc dosyasını pdf dosyasına dönüştürmek istiyorum. Dönüştürme başarılı bir şekilde yapıldı, ancak pdf olarak sadece metin biçiminde veya metin renginde değil. Pdf dosyam, siyah bir & beyaz gibi görünüyor. Dokümanım renkli ve farklı bir metin stiline sahipken. Apache POI HWPF - doc dosyasını pdf'ye dönüştürme sorunu

Bu

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

bana yardım edin, benim kodudur. Önceden Thnx için

.

cevap

4

Apache Tika'ya bakarsanız, bir HWPF belgesinden bazı stil bilgilerini okumak için iyi bir örnek vardır. Tika'daki kod, HWPF içeriğine göre HTML üretir, ancak sizin durumunuz için çok benzer işler bulmalısınız.

Tika sınıfı herhangi bir karakter Run her şeyi kendisine uygulanan aynı biçimlendirmeyi olmasıdır kelime belgeler hakkında not etmek https://svn.apache.org/repos/asf/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/WordExtractor.java

bir şey olduğunu. Bir Paragraf bu nedenle bir veya daha fazla Karakter Koşusu'ndan oluşur. Bazı stiller bir Paragrafa uygulanır ve diğer parçalar çalışmalarda yapılır. Hangi biçimlendirmenin sizin ilginizi çektiğine bağlı olarak, bu nedenle paragrafta veya çalışmada olabilir.

3

WordExtractor'ı kullanırsanız, yalnızca metin alırsınız. CharacterRun sınıfını kullanmayı deneyin. Metin ile birlikte stil alacaksınız. Lütfen Örnek koduna bakın.

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; 
     } 
    } 
} 
İlgili konular