2014-03-31 87 views
0

我想要做的是接受一个单词doc/docx模板,该模板已经预先设计了页眉和页脚,并用适用于该文档的文字替换某些单词用户已经输入并且已经通过MySQL保存。我已经有了一个程序来获取用户输入并保存到MySQL中。然而,我对这个词的操作如何工作有点困惑。 我发现了docx4j和一个教程,显示了我正在寻找的here,并在本网站的另一个问题上找到示例代码here。由于我是初学者,所以我很困惑的是:Java docx4j使用SQL数据修改页眉页脚的模板

  • 我明白JAXB用于转换XML和XML。为什么在这样的情况下这是相关的?或者如果不是,那会是什么情况?
  • 我看到装载的两个版本:

    WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new java.io.File("P:\\Engineering\\Projects\\Naming\\EX_TEMP.docx")); 
    

........和第二个例子:

private WordprocessingMLPackage getTemplate(String name) throws Docx4JException, FileNotFoundException { 
    WordprocessingMLPackage template = WordprocessingMLPackage.load(new FileInputStream(new File(name))); 
    return template; 
} 

(哪来你把文件目录在第二个代码上,或者如何指定要加载的文件?)

  • what d oes hyperlinkresolver做,为什么它是必要的? (第二链接)
  • 在这种情况下应用绑定是什么? (第二链接)
  • 什么是内容访问器? (第一链接)
  • 我是以正确的方式开展工作的,还是有更简单/更好的方法?

我在Windows 7上使用Eclipse与Java如果有帮助。 我将不胜感激任何帮助,谢谢! 此外,如果任何人有任何好的评论或解释的例子,这将是有益的!

+0

我只能使用上面的两个链接,但我想包括[此链接](http://www.docx4java.org/docx4j/plutext-docx4j_on_a_page-v300.pdf)作为一个有用的细分,使有些事情比较容易理解,但并没有真正回答我的大部分问题。我只是想,如果别人也在努力去理解这个东西,那么它可能是有用的。 – user3482733

回答

0

您可能应该退后一步,决定采用哪种方法来注入要采取的数据。 Docx4j支持三种方法:

  1. 替代变量证件表面上(脆,但简单)
  2. 邮件合并(使用MERGEFIELD),良好的旧文档
  3. 内容控制数据绑定(你的第二个链接;现代/精密/强大的方法,但你需要了解XML,并且可能是矫枉过正这里)

对于答案大部分的具体问题,请花时间阅读docx4j的Getting Started指南的时间。

+0

谢谢贾森你的初学者指南很有帮助。我会试着用第一种方法替换文档表面上的变量,前提是我可以访问页眉和页脚。我仍然坚持的一件事是JAXBElement。我知道这是构成doc这个词的zip的一部分,但我不知道它在哪里定义。我试图实现的每个例子都缺乏我能说的东西。也许我错过了一些东西。我读过你需要使用get/setContents,但是如何?再次感谢! – user3482733

+0

JAXB具有javax.xml.bind.JAXBElement,它用于包装一些对象以提供有关相应Xml元素的额外信息。在docx4j中,每个包含使用JAXB表示的内容的“Part”都有一个包含其内容模型的根对象的字段,您可以通过getContents()访问它。不幸的是,我们称这个字段为jaxbElement,这可能有点令人困惑。 – JasonPlutext

+0

getContents()可以获取任何与对象相关的对象。因此对于主文档部分,它是一个org.docx4j.wml.Document对象;对于页眉或页脚来说,这是另一回事。然后使用其方法操作Document对象。 – JasonPlutext