2009-01-08 30 views
9

Tôi làm việc trên một công cụ dựa trên web, nơi chúng tôi cung cấp các bản in tùy chỉnh.Làm cách nào để tạo RTF từ Java?

Hiện tại, chúng tôi xây dựng một cấu trúc XML bằng Java, đưa nó vào XMLmind XSL-FO Converter cùng với XSL-FO tùy chỉnh, sau đó tạo ra một tài liệu RTF.

Điều này hoạt động tốt trên các bố cục đơn giản, nhưng có một số vấn đề mà tôi muốn kiểm soát tốt hơn hoặc nơi tôi không thể làm những gì tôi muốn. F.ex: các bảng ở đầu trang, chân trang (ví dụ: số trang), cột, có cài đặt cột riêng hoặc thông tin số trang khác nhau trên trang đầu tiên, v.v.

Bạn có biết lựa chọn thay thế nào tốt hơn hay không XMLmind hoặc cách chúng ta nhận được từ dữ liệu đến RTF, tức là, Java-> XML, XML + XSL-> RTF? (Giới hạn thực tế duy nhất đối với chúng tôi là JVM.)

+0

Cả hai Aspose.Words và iText đều hứa hẹn sau một cách nhanh chóng. Tôi có thể kiểm tra cả hai khi tôi đã có thời gian ... – Ingvald

+1

Cuối cùng, chúng tôi đã đi với Aspose, sử dụng mẫu, cho chúng tôi kiểm soát tốt hơn định dạng và phong cách – Ingvald

Trả lời

2

Nếu bạn có thể chi tiêu một số tiền, bạn có thể sử dụng Aspose.Words, một thư viện chuyên nghiệp để tạo tài liệu Word và RTF cho Java và .NET.

+1

Cảm ơn bạn đã tip - nó không phải là miễn phí. Sau khi tất cả, bạn phải chi tiền (tiền mặt hoặc thời gian) để kiếm tiền ... – Ingvald

4

Bạn đã xem thư viện iText chưa? Nó được chào hàng chủ yếu như một máy phát PDF, mặc dù nó có thể also generate RTF. Tôi đã không có nguyên nhân để sử dụng nó cá nhân, nhưng cảm giác chung tôi nhận được là nó là tốt, và giao diện trông toàn diện và dễ dàng để làm việc trong trừu tượng. Liệu nó có phù hợp với mô hình dữ liệu hiện tại của bạn hay không là một câu hỏi khác.

+0

Cảm ơn bạn đã tip - Tôi sẽ xem xét nó. – Ingvald

+2

đã dừng nó hỗ trợ rtf? Trên trang chủ của họ, tôi không thể tìm thấy bất cứ điều gì về RTF - chỉ có PDF! –

+2

ok, rtf đã được chuyển đến một dự án riêng biệt, xem: http://itextrtf.sourceforge.net/ –

8

Bạn có thể xem thư viện mới có tên jRTF. Nó cho phép bạn tạo các tài liệu RTF mới và điền các mẫu RTF.

+0

Cảm ơn! Thú vị, ngay cả khi nó có vẻ thiếu một vài điều mà tôi cần. (Tham khảo "Không được hỗ trợ" trong http://code.google.com/p/jrtf/ - xử lý bảng đẹp, gifs, kiểm soát kiểu/định dạng tốt) – Ingvald

0
import com.lowagie.text.*; 
import com.lowagie.text.html.simpleparser.HTMLWorker; 
import com.lowagie.text.html.simpleparser.StyleSheet; 
import com.lowagie.text.rtf.*; 

import java.io.*; 
import java.util.ArrayList; 

public class HTMLtoRTF { 
    public static void main(String[] args) throws DocumentException { 
     Document document = new Document(); 

     try { 
      Reader htmlreader = new BufferedReader((new InputStreamReader((new FileInputStream("C:\\Users\\asrikantan\\Desktop\\sample.htm"))))); 

      RtfWriter2 rtfWriter = RtfWriter2.getInstance(document, new FileOutputStream(("C:\\Users\\asrikantan\\Desktop\\sample12.rtf"))); 
      document.open(); 
      document.add(new Paragraph("Testing simple paragraph addition.")); 
      //ByteArrayOutputStream out = new ByteArrayOutputStream(); 

      StyleSheet styles = new StyleSheet(); 
      styles.loadTagStyle("body", "font", "Bitstream Vera Sans"); 
      ArrayList htmlParser = HTMLWorker.parseToList(htmlreader, styles); 
      //fetch HTML line by line 

      for (int htmlDatacntr = 0; htmlDatacntr < htmlParser.size(); htmlDatacntr++) { 
       Element htmlDataElement = (Element) htmlParser.get(htmlDatacntr); 
       document.add((htmlDataElement)); 
      } 
      htmlreader.close(); 
      document.close(); 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (Exception e) { 
      System.out.println(e); 
     } 
    } 
} 
+0

Câu trả lời của bạn có vẻ thú vị, quan tâm để thêm một số nhận xét? Nó làm việc như thế nào? Có lẽ một liên kết với một số dự án làm việc? – Yaroslav

+0

Điều này (http://stackoverflow.com/questions/13515210/difference-between-lowagie-and-itext) ít nhất anwser người hoặc lowagie là gì – mkdev

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