2012-05-28 6 views
6

? Estoy tratando de crear la palabra documento utilizando HWPFDocument. Puedo crear el documento con alguna característica pero no puedo obtener algunas cosas. Mi problema es simple, pero no puedo descifrar algunas cosas. Quiero convertir este sencillo HTML en WordDoc creado:¿Hay alguna manera de mostrar saltos de línea, lista de pedidos con HWPFDocument

<div xmlns="http://www.w3.org/1999/xhtml" class="formatted_content"> 
     <strong>cloudHQ.tester.4</strong> – 
     this is the bold text 
     <br/> 
     this is italic text 
     <br/> 
     <ul> 
     <li>bullets 1</li> 
     <li>bullets 2</li> 
     <li>bullets 3</li> 
     </ul> 
     <br/> 
     <ol> 
       <li>Number1</li> 
       <li>Number2</li> 
       <li>Number3</li> 
     </ol> 
     <br/> 
     <pre>this is simple quote</pre> 
     <br> 
     this is simple quote 
</div> 

Aquí estoy capaz de convertir el texto en negrita y cursiva. Pero no puede averiguar cómo crear el

1) <ul><li>.... 
2) <ol><li>... 
3) break <br> 
4) <pre> 

etiquetas en el WordDoc.

¿Hay algún ejemplo para hacer esto, entonces por favor hágamelo saber Realmente aprecio el esfuerzo, gracias de antemano.

Editado:

librería incluida:

include_class "org.apache.poi.poifs.filesystem.POIFSFileSystem" 
    include_class "org.apache.poi.hwpf.usermodel.ParagraphProperties" 
    include_class "org.apache.poi.hwpf.usermodel.CharacterRun" 
    include_class "org.apache.poi.hwpf.usermodel.CharacterProperties" 

Y este es el código principal para convertir el HTML al doc como:

def convert_from_html_to_doc(html_file_name, comment_files) 

    puts("Script start.....") 
    puts("Parsing document comments start.....NEW") 

    default_file = "misc/poi_experiment/empty.doc" 
    fs = JavaPoi::POIFSFileSystem.new(JavaPoi::FileInputStream.new(default_file)) 

    # Horrible word Document Format 
    hwpfDocument = JavaPoi::HWPFDocument.new(fs) 

    # range is used for getting the range of the document except header and footer 
    range = hwpfDocument.getRange() 

    par1 = range.insertAfter(JavaPoi::ParagraphProperties.new(), 0) 
    par1.setSpacingAfter(200); 

    puts("Adding given html content to doc.") 
    main_html = Nokogiri::HTML(File.read(html_file_name)) 
    characterRun = par1.insertAfter(main_html.text) 
    # setting the font size 
    characterRun.setFontSize(2 * 12) 

    puts("Start procees on comment..... total : #{comment_files.size}") 
    comment_files.each do |cf| 

     file_path = "misc/poi_experiment/#{cf}" 
     puts("The comment file path : #{file_path}") 

     html = Nokogiri::HTML(File.read(file_path)).css('html') 
     puts(html) 

     par = characterRun.insertAfter(JavaPoi::ParagraphProperties.new(), 0) 
     par.setSpacingAfter(200); 

     #text = "<b><u>this is bold and underlined text</u></b>" 
     text = html.to_s.scan(/\D\d*/) 
     index = 0 
     currentCharacterRun , currentCharacterStyleList = [], [] 
     character_arr = text.to_s.scan(/\D\d*/) 

     character_or_tag, index = get_next_character_or_tag(character_arr, index) 

     while !character_or_tag.nil? 
     if character_or_tag.is_char? 
     currentCharacterRun << character_or_tag.get_char 
     end 
     if character_or_tag.is_start_tag? 
     currentCharacterRunText = currentCharacterRun.join 
     if currentCharacterRunText != "" 
      characterproperties = JavaPoi::CharacterProperties.new 
      characterproperties = emit_to_document_and_apply_style(characterproperties, currentCharacterStyleList) 
      characterRun = par.insertAfter(currentCharacterRunText,characterproperties) 
      currentCharacterRun = [] 
     end 
     currentCharacterStyleList << character_or_tag.get_tag 
     end 
     if character_or_tag.is_end_tag? 
     currentCharacterRunText = currentCharacterRun.join 
     if currentCharacterRunText != "" 
      characterproperties = JavaPoi::CharacterProperties.new 
      characterproperties = emit_to_document_and_apply_style(characterproperties, currentCharacterStyleList) 
      characterRun = par.insertAfter(currentCharacterRunText,characterproperties) 
      currentCharacterRun = [] 
     end 
     currentCharacterStyleList.reject! { |x| x == character_or_tag.get_tag.gsub("/","") } 
     end 

     character_or_tag, index = get_next_character_or_tag(character_arr, index) 
     end 
    end 

    hwpfDocument.write(JavaPoi::FileOutputStream.new("#{html_file_name}.doc", true)) 
    end 

Esperamos que esto ayude a entender.

+0

puede mostrar cómo se puede convertir html a doc? ¿O estás tratando de escribir tal convertidor? –

+0

Estoy tratando de convertir usando ApachePOI y jRuby. Por favor revisa mi sección de edición. – Vik

+0

Nikita: ¿Tiene alguna solución para esto? – Vik

Respuesta

2

Después de mucho intentarlo pensé para seguir adelante JOD

+1

Alfresco utiliza esa herramienta para generar miniaturas o una vista previa de la página gracias al servicio de OpenOffice (un servidor se ejecuta en segundo plano). Buena elección para solo propósito de conversión. Los POI apuntan a la construcción o modificación del documento primero. –

1

Esta sección del poi javadocs le puede ser útil. Por ejemplo, para crear una lista, creo que desea utilizar

http://poi.apache.org/apidocs/org/apache/poi/hwpf/usermodel/HWPFList.html

Esta clase se utiliza para crear una lista en un documento de Word. Se usa junto con registerList en HWPFDocument. En Word, las listas no son entidades de rango, lo que significa que no se puede agregar una al documento. Las listas solo actúan como propiedades para las entradas de la lista. Una vez que haya registrado una lista, puede agregar entradas de lista a un documento que forma parte de la lista. El único beneficio de esto que veo es que puede agregar una entrada de lista en cualquier parte del documento y continuar la numeración de la lista anterior.

Así que en java que podría hacer esto:

new HWPFList(boolean numbered, StyleSheet styleSheet) 

No soy un experto rubí así que dejaré la traducción de JRuby a usted.

Eso le da # 1 y # 2 en su lista, y # 3 y # 4 son versiones con estilo de Párrafo creo.

+0

Gracias por su respuesta. – Vik

Cuestiones relacionadas