插件本身由公司大牛开发,但是大牛离职,客户有新需求,所以由我来修改
插件本身调用了joget自带的将joget表单转换为html的方法
String header = getPropertyString("headerHtml");
header = AppUtil.processHashVariable(header, null, null, null);
...
String s = FormPdfUtil.formatHtml(selectedFormHtml, header, footer, css, showNotSelectedOptions, repeatHeader, repeatFooter);
其中FormPdfUtil.formatHtml的参数 是由AppUtil获取到的 流程哈希变量的值 ,然后交由 FormPdfUtil转换成html格式
而后大牛使用了 类库 Doc4j 将html转换成word形式
// To docx, with content controls
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
XHTMLImporterImpl XHTMLImporter = new XHTMLImporterImpl(wordMLPackage);
wordMLPackage.getMainDocumentPart().getContent().addAll(
XHTMLImporter.convert( xhtml, null) );
wordMLPackage.save(new java.io.File(outfile));
但是由于joget 转换html 的方法 会产生一些 带有特殊类名的div ,input , 在word中会导致很多换行
//
//定位到问题所在就有了解决思路 , 使用Jsoup 类库 , 可以将html 转换成Document ,可以像jquery一样通过选择器操作dom
Jsoup 依赖:
org.jsoup jsoup 1.3.3 核心代码:
Document document = Jsoup.parse(html); Elements form_clear = document.getElementsByClass("form-clear"); for (int i = 0; i
将处理完的html 交由Doc4j 处理即可