2012-05-28 19 views
6

Tôi đang cố gắng tạo tài liệu từ bằng cách sử dụng HWPFDocument. Tôi có thể tạo tài liệu với một số tính năng nhưng không thể nhận được vài thứ. Vấn đề của tôi rất đơn giản nhưng tôi không thể tìm ra vài điều. Tôi muốn chuyển đổi HTML đơn giản này vào worddoc tạo:Có cách nào để hiển thị ngắt dòng, danh sách đơn đặt hàng có sử dụng 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> 

Ở đây tôi có thể chuyển đổi văn bản in đậm và in nghiêng. Nhưng không thể tìm ra cách tạo ra các thẻ

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

vào WordDoc.

Có bất kỳ ví dụ nào để thực hiện việc này không, vui lòng cho tôi biết Tôi thực sự đánh giá cao những nỗ lực, cảm ơn trước.

được sửa đổi:

bao gồm thư viện:

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" 

Và đây là mã chính để chuyển đổi html để doc như:

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 

Hy vọng điều này sẽ giúp để hiểu bạn.

+0

bạn có thể chỉ cho làm thế nào để bạn chuyển đổi html để doc? Hoặc bạn đang cố gắng để viết chuyển đổi như vậy? –

+0

Tôi đang cố chuyển đổi bằng ApachePOI và jRuby. Vui lòng kiểm tra phần chỉnh sửa của tôi. – Vik

+0

Nikita: Bạn có giải pháp nào cho việc này không? – Vik

Trả lời

2

Sau rất nhiều thử tôi nghĩ để di chuyển trên JOD chuyển đổi

+1

Công cụ này được Alfresco sử dụng để tạo hình thu nhỏ hoặc xem trước trang nhờ dịch vụ OpenOffice (máy chủ đang chạy ở chế độ nền). Lựa chọn tốt cho mục đích chuyển đổi duy nhất. POI nhắm mục tiêu xây dựng hoặc sửa đổi tài liệu trước. –

1

Phần này của poi javadocs có thể sẽ hữu ích cho bạn. Ví dụ, để tạo một danh sách, tôi nghĩ rằng bạn muốn sử dụng

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

Lớp này được sử dụng để tạo ra một danh sách trong một tài liệu Word. Nó được sử dụng kết hợp với registerList trong HWPFDocument. Trong Word, các danh sách không phải là các thực thể thay đổi, nghĩa là bạn không thể thêm một thực thể vào tài liệu. Danh sách chỉ hoạt động như các thuộc tính cho các mục danh sách. Khi bạn đăng ký một danh sách, bạn có thể thêm các mục danh sách vào một tài liệu là một phần của danh sách. Lợi ích duy nhất của điều này mà tôi thấy, là bạn có thể thêm một mục danh sách bất cứ nơi nào trong tài liệu và tiếp tục đánh số từ danh sách trước đó.

Vì vậy, trong java bạn sẽ làm điều này:

new HWPFList(boolean numbered, StyleSheet styleSheet) 

Tôi không phải là một chuyên gia ruby ​​vì vậy tôi sẽ rời khỏi dịch để JRuby cho bạn.

Điều đó cung cấp cho bạn # 1 và # 2 trong danh sách của bạn và # 3 và # 4 là các phiên bản theo kiểu Đoạn mà tôi nghĩ.

+0

Cảm ơn bạn đã trả lời. – Vik

Các vấn đề liên quan