【问题标题】:docx Template Docx4j replacing text in Javadocx 模板 Docx4j 替换 Java 中的文本
【发布时间】:2013-04-08 18:40:17
【问题描述】:

我是 Docx4j 的新手,我的任务是替换 docx 模板的一些文本。 我阅读了 docx4j 的入门指南,但我认为我没有完全理解整个概念。 好吧无论如何...我已经尝试过[Docx4j的解组模板][1], 它适用于给定的 docx,但是当我自己尝试时遇到了同样的问题template Exceptions 说,HashMap 不包含有效的键或值,因此它不会替换占位符。

我换了

<w:proofErr w:type="spellEnd"/>

通过禁用拼写检查,但它仍然没有工作......而且运行应用程序也需要相当长的时间。

我不明白 Getting_Started.pdf 中的数据绑定示例,所以我用完了选项...

如何简单地替换 docx 中的一些字符串文本?

编辑: 我发现如果我将一些文本添加到 unmarshallFromTemplate.docx 并保存它,它不会替换新的文本行。 - 标签以某种方式分成多个标签:

<w:p w:rsidR="002512F8" w:rsidRDefault="002512F8" w:rsidP="002512F8"><w:r><w:t>My</w:t></w:r><w:r w:rsidR="001A5174"><w:t xml:space="preserve"> favourite ice cream is ${DEGREE</w:t></w:r><w:r><w:t>}.</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack"/><w:bookmarkEnd w:id="0"/></w:p>

编辑 document.xml 中的文本,添加缺失的信息并没有多大帮助。

无论如何,这里是我使用的 Template.docx 的 document.xml: http://uploaded.net/file/vz4qr23o

编辑 2:

好吧,伙计们。我找到了一个非常适合自己的解决方法,但不知道为什么花了这么长时间才弄清楚。 正如我所说:运行分裂的地方,我认为这是 ${} 的原因。因此,我只是在占位符之前使用了 # 并重写了每个占位符,这样就可以一次运行了。

不得不多次切换到 document.xml 并重写段落,但它成功了。然后我简单地使用了一个 replace(placeholder, xml) 并替换了编组后的 document.xml 的文本,然后我再次解组它。 工作。故事结束,他妈的夜间构建或映射。谢了

【问题讨论】:

  • 请用所有必需的数据填写此问题;发布您提出要求的其他论坛的链接不是一个好的做法。

标签: java templates text replace docx4j


【解决方案1】:

docx4j 源代码在 GitHub 上已经有一段时间了;那个 svn 存储库已经过时了。

等效样本现在称为VariableReplace。该代码效率更高一些,但您需要自己构建,或使用当前的夜间构建。

您可能会发现运行 VariablePrepare 可以解决您的问题。

【讨论】:

  • 嗨!谢谢你的建议。我试图让它像在这个线程中一样工作:stackoverflow.com/questions/15664726/… 但它仍然不起作用。现在我什至看不到我的文本区域,我的占位符保存在哪里。没有更简单的方法吗?也许只是纯文本替换?
  • 您需要解压缩您的 docx,并发布 word/document.xml 的内容,以便我们看到您在说什么。编辑问题并将其添加到那里。
  • 我发现 >this link< 在发现上面的 VariableReplace 链接已失效后也很有帮助
  • 对我有用,非常棒。只需添加 filterSettings.setRemoveBookmarks(true);
【解决方案2】:

docx4j 内置的占位符搜索和替换代码运行良好,但如果您遇到占位符被rsid 实体分解的问题,则需要确保在保存时禁用语法和拼写检查您的“模板”(即源)文档。这将有助于防止您的文本运行变得支离破碎(请注意,您可能还想禁用校对,因为这会在此处和任何地方插入书签标签)。

完成搜索和替换并获得新/更新的文档后,您可以轻松地重新启用拼写检查。这个线程有更多关于 RSID 的信息:turnoff rsid's spell check & grammar check in generated xml

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 2012-11-08
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多