2009-01-08 8 views
9

저는 맞춤 인쇄물을 제공하는 웹 기반 도구에서 작업합니다.Java에서 RTF를 어떻게 생성합니까?

현재 Java로 XML 구조를 만들고 사용자 지정 XSL-FO와 함께 XMLmind XSL-FO Converter에 피드를 제공하고 RTF 문서를 생성합니다.

이것은 간단한 레이아웃에서는 잘 작동하지만, 더 큰 컨트롤을 원하거나 내가 원하는 것을 할 수없는 문제 영역이 있습니다. F.ex : 첫 페이지에 머리말, 꼬리말 (예 : 페이지 번호), 열, 별도의 열 설정 또는 다른 페이지 번호 정보가있는 표.

더 나은 대안을 알고 계신 분도 계실 것입니다. XMLmind 또는 데이터에서 RTF, 즉 Java-> XML, XML + XSL-> RTF를 얻는 방법? (실제적인 제한은 JVM뿐입니다.)

+0

Aspose.Words와 iText는 모두 빠른 시일 내에 유망 해 보입니다. 나는 시간이있을 때 둘 다 테스트 할 수 있습니다 ... – Ingvald

+1

결국 우리는 Aspose와 함께 템플릿을 사용하여 형식과 스타일을 잘 제어 할 수있었습니다. – Ingvald

답변

2

돈을 쓸 여력이 있다면 Aspose.Words을 사용할 수 있습니다.이 라이브러리는 Java 및 .NET 용 Word 및 RTF 문서를 만드는 전문 라이브러리입니다.

+1

팁 주셔서 감사합니다 - 무료 일 필요는 없습니다. 결국, 당신은 돈을 벌기 위해 돈 (현금 또는 시간)을 소비해야합니다 ... – Ingvald

1

iText은 RTF를 지원합니다.

4

iText 라이브러리를 보았습니까? 주로 PDF 생성기로 널리 알려져 있지만, also generate RTF 일 수 있습니다. 나는 그것을 개인적으로 사용하지 못했지만 일반적으로 느끼는 좋은 점은 인터페이스가 종합적으로 보이고 추상적으로 작업하기 쉽다는 것입니다. 기존 데이터 모델과 잘 어울리는 지 여부는 또 하나의 질문입니다.

+0

팁 주셔서 감사합니다. – Ingvald

+2

itext가 rtf를 (를) 지원하지 않으셨습니까? 그들의 홈페이지에서 나는 RTF에 대해서 아무것도 발견 할 수 없다 - 단지 PDF! –

+2

좋아요, rtf는 별도의 프로젝트로 옮겨졌습니다. http://itextrtf.sourceforge.net/ –

8

jRTF이라는 새 라이브러리를 살펴볼 수 있습니다. 새로운 RTF 문서를 만들고 RTF 템플릿을 채울 수 있습니다.

+0

고마워! 비록 내가 필요로하는 것이 부족한 것 같아도 흥미 롭다. (Ref "지원되지 않는 기능"(http://code.google.com/p/jrtf/) - 멋진 테이블 처리, GIF, 좋은 스타일/형식 제어) – 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

답변이 재미있어 보이지만 몇 가지 의견을 추가해주십시오. 어떻게 작동합니까? 어쩌면 몇 가지 작업 프로젝트와 연결될 수 있습니까? – Yaroslav

+0

이것은 (http://stackoverflow.com/questions/13515210/difference-between-lowagie-and-itext) 적어도 anwser 누구 또는 무엇 저급 – mkdev

관련 문제