gpt4 book ai didi

java - ParseException:遇到列表类型的 "/"content.xml

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:57:53 24 4
gpt4 key购买 nike

我试图从现有的带有列表字段的 ODT 模板生成 PDF。

我的 ODT 模板如下所示。 enter image description here

我有一个方法来获取 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。有没有办法确定这里的问题?

最佳答案

这里是解决方案:

1) 从您的 odt 文档中提取文件 content.xml(只需将 zip 扩展名添加到文件名中)2)用文本编辑器打开xml文件4) 搜索您在模板中指定的所有字段名称

例如,如果您使用标准的 FreeMarker 表达式表示法并且已将字段 ${MYPLACEHOLDER} 添加到模板中,您可能会看到一些类似这样的 xml 代码:

...<text:span text:style-name="T4">${MYPLACEHOLDER}</text:span>...

但其他时候,也就是您报告的情况,您可以找到以下 xml 代码:

...<text:span text:style-name="T4">${</text:span></text:span><text:span text:style-name="Character_20_Style_20_1"><text:span text:style-name="T5">MYPLACEHOLDER</text:span></text:span>...

自定义字段语法的拆分位置(请参阅美元字符)。

这是什么原因?

有时用户可能会以错误的方式使用 OpenOffice 或 LibreOffice 格式化文档,从而拆分字段占位符的格式样式。这种情况在可视化编辑器中是看不到的。因此,最好的策略可能是编写不带格式的文档,添加字段,然后应用格式。

来自意大利的问候

关于java - ParseException:遇到列表类型的 "/"content.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32224951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com