سؤال

وأعمل على أداة على شبكة الإنترنت حيث نقدم مطبوعات حسب الطلب.

ونحن في الوقت الراهن بناء بنية XML مع جافا، يطعمه إلى XSL-FO تحويل على طول مع تخصيص XSL-FO، التي تنتج ثم وثيقة RTF.

وهذا يعمل بشكل جيد على تخطيطات بسيطة، ولكن هناك بعض المناطق مشكلة حيث أود قدر أكبر من السيطرة، أو حيث لا أستطيع أن أفعل ما أريد على الإطلاق. F.ex: الجداول في الرأس، الهوامش (على سبيل المثال، أرقام الصفحات)، والأعمدة، وجود إعداد عمود منفصل أو مختلفة من المعلومات رقم الصفحة على الصفحة الأولى، الخ

هل أي منكم يعرف من بدائل أفضل، إما لXMLmind أو إلى الطريقة التي نحصل عليها من البيانات إلى RTF، أي Java-> XML، XML + XSL-> RTF؟ (القيد العملي الوحيد بالنسبة لنا هو JVM).

هل كانت مفيدة؟

المحلول

إذا كنت تستطيع انفاق بعض المال، يمكنك استخدام <لأ href = "http://www.aspose.com/categories/file-format-components/aspose.words-for-.net-and-java/ default.aspx "يختلط =" نوفولو noreferrer "> Aspose.Words ، مكتبة المهنية لخلق وورد وثائق RTF لجاوا و. NET.

نصائح أخرى

ويمكنك إلقاء نظرة على مكتبة جديدة تسمى jRTF . انها تسمح لك لإنشاء مستندات RTF جديدة وملء القوالب RTF.

هل كان لديك نظرة على iText المكتبة؟ انها توصف في المقام الأول باعتباره مولد PDF، على الرغم من أنه يمكن أيضا إنشاء RTF . لم تتح لي سبب استخدامه شخصيا، ولكن الشعور العام أحصل هو ان هذا امر جيد، واجهة تبدو شاملة وسهلة للعمل لفي المجرد. سواء كان من شأنها أن تناسب تماما مع نموذج البيانات الموجودة لديك سؤال آخر.

iText يدعم RTF.

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);
        }
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top