3

リスト フィールドを含む既存の ODT テンプレートから PDF を生成しようとしていました。

私の ODT テンプレートは次のようになります。 ここに画像の説明を入力

そして、さらに処理するために ByteArrayOutputStream オブジェクトを取得するメソッドがあります。

public ByteArrayOutputStream execute(Map<String, Object> data, byte[] templateData) {
    ByteArrayOutputStream odt = new ByteArrayOutputStream();
    try {
        DocumentTemplateFactory documentTemplateFactory = new DocumentTemplateFactory();
        DocumentTemplate template = documentTemplateFactory.getTemplate(new ByteArrayInputStream(templateData));
        template.createDocument(data, odt);
        return odt;
    } catch (Throwable e) {
    }
}

ここで、パラメーターtemplateDataは ODT テンプレート ファイルのバイト配列であり、パラメーターには、によって追加されdataたデータ オブジェクトが含まれています。row

MyRow row = new MyRow();
row.setCol1("1");
row.setCol2("2");
row.setCol3("3");
row.setCol4("4");
List<MyRow> rows = new ArrayList<MyRow>();
rows.add(row);
data.put("row",rows);

フローがcreateDocument上記のメソッドに到達すると、次の例外が発生します。

freemarker.core.ParseException: Encountered "/" at line 4, column 13223 in content.xml.
Was expecting one of:
<STRING_LITERAL> ...
<RAW_STRING> ...
"false" ...
"true" ...
<INTEGER> ...
<DECIMAL> ...
"." ...
"+" ...
"-" ...
"!" ...
"[" ...
"(" ...
"{" ...
<ID> ...

at freemarker.core.FMParser.generateParseException(FMParser.java:4697)
at freemarker.core.FMParser.jj_consume_token(FMParser.java:4568)
at freemarker.core.FMParser.UnaryExpression(FMParser.java:323)
at freemarker.core.FMParser.MultiplicativeExpression(FMParser.java:435)
at freemarker.core.FMParser.AdditiveExpression(FMParser.java:385)
at freemarker.core.FMParser.RangeExpression(FMParser.java:556)
at freemarker.core.FMParser.RelationalExpression(FMParser.java:538)
at freemarker.core.FMParser.EqualityExpression(FMParser.java:476)
...

バイト配列形式であるため、content.xml を表示できません。ここで問題を特定する方法はありますか?

4

1 に答える 1