Преобразование Freemarker в PDF - PullRequest
7 голосов
/ 15 апреля 2011

Я занимаюсь проектированием отчетов с использованием freemarker, у меня возникла проблема, когда мне нужен обработанный вывод в формате PDF.

Что я хочу сделать, так это передать шаблон fremarker HTML + CSS в движок freemarker и вывести обработанный HTML в виде PDF. Текущая проблема, с которой я столкнулся, заключается в том, как преобразовать обработанный бесплатный маркер в PDF

.
    try {
        Configuration cfg = new Configuration();
        Template tpl = cfg.getTemplate("example.ftl");
        OutputStreamWriter output = new OutputStreamWriter(System.out);

        Map testHashMap = new HashMap();
        testHashMap.put("test", "testValue");

        tpl.process(testHashMap, output);

    } catch (Exception e) {
        e.printStackTrace();
    }

При поиске в Интернете я не смог найти никакой информации по этой теме, но я узнал об инфраструктуре iText

try {
    DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
    Document doc = builder.parse(new StringBufferInputStream(buf.toString()));
    ITextRenderer renderer = new ITextRenderer();
    renderer.setDocument(doc, null);
    renderer.layout();
    OutputStream os = response.getOutputStream();
    renderer.createPDF(os);
    os.close();
} catch (Exception ex) {
    ex.printStackTrace();
}

Теперь проблема в том, как объединить эти два фрагмента кода для создания PDF-файла?

Вся помощь очень ценится

С уважением, MilindaD

1 Ответ

5 голосов
/ 15 апреля 2011

Я думаю, что было бы лучше использовать два разных конвейера и рассматривать их как два разных представления одной и той же модели.

Данные -> Трансформер Freemarker -> HTML

Данные -> iTexttransformer -> pdf

или вы можете использовать XSLT в html и использовать XSL-FO, как Apache FOP, но мне это кажется излишним.

...