cn.joylau.office.word.support.template.DOCXTemplateReader Maven / Gradle / Ivy
The newest version!
/*******************************************************************************
* Copyright (c) 2017 by JoyLau. All rights reserved
******************************************************************************/
package cn.joylau.office.word.support.template;
import cn.joylau.commons.utils.StringUtils;
import cn.joylau.office.word.api.poi.POIWordApi4Docx;
import java.io.InputStream;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class DOCXTemplateReader {
private InputStream templateInput, sourceInput;
private StringBuilder template = new StringBuilder(), source = new StringBuilder();
public DOCXTemplateReader(InputStream templateInput, InputStream sourceInput) throws Exception {
this.templateInput = templateInput;
this.sourceInput = sourceInput;
initTemplate();
}
protected String randomChar(int l) {
char cs[] = {'a', 'b', 'c', 'd', 'e', 'f',
'A', 'B', 'C', 'D', 'E', 'F'};
char str[] = new char[l];
Random random = new Random();
for (int i = 0; i < l; i++) {
str[i] = cs[random.nextInt(cs.length)];
}
return new String(str);
}
protected void initTemplate() throws Exception {
final List appendStr = new ArrayList<>();
POIWordApi4Docx.getInstance().read(templateInput, new DOCXStringReader() {
@Override
public void readLine(String text) {
if (StringUtils.isNullOrEmpty(text)) return;
String str = randomChar(5);
appendStr.add(str);
template.append(str).append(String.valueOf(text.trim()).replace("\n", "")).append(str);
}
});
POIWordApi4Docx.getInstance().read(sourceInput, new DOCXStringReader() {
int i = 0;
@Override
public void readLine(String text) {
if (StringUtils.isNullOrEmpty(text)) return;
String str = "";
if (appendStr.size()> i)
str = appendStr.get(i++);
source.append(str).append(String.valueOf(text.trim()).replace("\n", "")).append(str);
}
});
}
public List