Docx转html通用方法的问题
法律文件很多是Word编写的,有的需要公示,有的需要生成可签章PDF文档,这个场景下转成简单的HTML文档成为必要的。
// Gradle's build.gradle
dependencies {
compile 'org.apache.poi:poi-ooxml:3.8'
compile 'org.apache.poi:poi-scratchpad:3.8'
compile 'com.google.guava:guava:28.1-jre'
}
以下内容为示例伪代码,不可直接使用。
// 生成可操作文档
XWPFDocument doc = new XWPFDocument(OPCPackage.open(文件流));
// 解析每一段文字
for (XWPFParagraph part : doc.getParagraphs()) {
// 处理一段文字中每个字块
List<XWPFRun> runs = part.getRuns();
XWPFRun run = null;
// 处理后内容
StringBuffer buffer = new StringBuffer();
// 逐个块处理
for (int i = 0; i < runs.size(); i++) {
run = runs.get(i);
buffer.append("<span class=\" ");
// run.getUnderline() 是否有下划线
// run.getFontSize() 字号设置
// run.isBold() 是否加粗
buffer.append(" \" >");
buffer.append(run.getText(0));
buffer.append("</span>");
}
// 输出样式
out.write("<p class=\" ".getBytes());
// 位置居中样式
switch (part.getAlignment().getValue()) {
case 2:
out.write("taCenter".getBytes());break;
case 3:
out.write("taRight".getBytes());break;
default:
}
// 缩进
if (part.getIndentationFirstLine() > 0) {}
// 结束当前p标签
out.write("\" > ".getBytes());
// 处理内容
out.write(buffer.toString().getBytes("UTF-8"));
// 关闭当前P标签
out.write("</p>\n<br/>\n".getBytes());
}