diff --git a/src/main/java/com/example/ts_obj/controller/TypesetController.java b/src/main/java/com/example/ts_obj/controller/TypesetController.java
index 063291a..e4d4006 100644
--- a/src/main/java/com/example/ts_obj/controller/TypesetController.java
+++ b/src/main/java/com/example/ts_obj/controller/TypesetController.java
@@ -734,7 +734,26 @@ public class TypesetController {
map.put("doi", typesetInfo.getDoi());
map.put("topic", typesetInfo.getTopic());
map.put("articletitle", typesetInfo.getInfo_title().replace("", "").replace("", "").replace("", "").replace("", ""));
- map.put("author", typesetInfo.getAuthor().replace("", "").replace("", "").replace("", "").replace("", ""));
+
+ String author = typesetInfo.getAuthor();
+ String[] s_author = author.split("");
+ ParagraphRenderData author_p = new ParagraphRenderData();
+// for (String i:s_author){
+// if(i.equals("")){
+// continue;
+// }
+// String[] cache_author = i.split("");
+// String au = cache_author[0];
+// String bu = cache_author[1];
+// Style ca_sty = new Style();
+// ca_sty.setVertAlign("superscript");
+// author_p.addText(new TextRenderData(au.replace("", "").replace("", "")));
+// author_p.addText(new TextRenderData(bu.replace("", "").replace("", ""),ca_sty));
+// }
+//
+// map.put("author",author_p);
+
+ map.put("author", typesetInfo.getAuthor().replace("", "").replace("", "").replace("", "").replace("", ""));
map.put("authoraddress", typesetInfo.getAuthorAddress().replace("", "").replace("", "").replace("", "").replace("", ""));
map.put("corresponding", typesetInfo.getAuthorCorresponding().replace("", "").replace("", "").replace("", "").replace("", ""));
map.put("coremail", typesetInfo.getAuthorCorrespondingEmail().replace("", "").replace("", "").replace("", "").replace("", ""));
@@ -1150,7 +1169,7 @@ public class TypesetController {
}
}
picMap.put(imageName,lastParagraphText);
- System.out.println(pictureId +"\t|" + imageName + "\t|" + lastParagraphText);
+// System.out.println(pictureId +"\t|" + imageName + "\t|" + lastParagraphText);
//获取word文本中所有的图片
// List allPictures = xdoc.getAllPictures();
//遍历照片
@@ -1166,13 +1185,13 @@ public class TypesetController {
FileOutputStream fileOutputStream = new FileOutputStream(filePicture);
fileOutputStream.write(data,0,data.length);
fileOutputStream.close();
- System.out.println("执行结束了");
+// System.out.println("执行结束了");
// }
}
}
}
- System.out.println("picNameList===========>"+picNameList);
- System.out.println("picMap===========>"+picMap);
+// System.out.println("picNameList===========>"+picNameList);
+// System.out.println("picMap===========>"+picMap);
//2.获取按模板新生成的文档添加图片
File newFile = new File(this.NEW_BASE_DIR + newFileName);
FileInputStream newFis = new FileInputStream(newFile);
@@ -1184,20 +1203,20 @@ public class TypesetController {
Document doc = new Document();
doc.loadFromFile(this.NEW_BASE_DIR + newFileName);
Section sec = doc.getSections().get(0);
- System.out.println("sec=================>"+sec);
+// System.out.println("sec=================>"+sec);
String text = doc.getText();
- System.out.println("text=================>"+text);
+// System.out.println("text=================>"+text);
Paragraph para = sec.getParagraphs().get(0);
- System.out.println("para=================>"+para);
+// System.out.println("para=================>"+para);
for(int i = 0; i < doc.getSections().getCount(); i++) {
Section section = doc.getSections().get(i);
for (int j = 0; j < section.getParagraphs().getCount(); j++) {
Paragraph paragraph = section.getParagraphs().get(j);
- System.out.println(j+"新方式内容"+paragraph.getText());
+// System.out.println(j+"新方式内容"+paragraph.getText());
for (String pic: picNameList) {
String replace = String.valueOf(paragraph.getText()).replace(",", "").replace(" ", "");
if (replace.contains(picMap.get(pic).replace(",", "").replace(" ", ""))) {
- System.out.println("包含");
+// System.out.println("包含");
String imgPath = IMG_DIR + randomFix +pic.replace("image", "");
File picture=new File(imgPath);
@@ -1450,7 +1469,7 @@ public class TypesetController {
}
}
picMap.put(imageName,lastParagraphText);
- System.out.println(pictureId +"\t|" + imageName + "\t|" + lastParagraphText);
+// System.out.println(pictureId +"\t|" + imageName + "\t|" + lastParagraphText);
//获取word文本中所有的图片
// List allPictures = xdoc.getAllPictures();
//遍历照片
@@ -1471,40 +1490,36 @@ public class TypesetController {
}
}
}
- System.out.println("picNameList===========>"+picNameList);
- System.out.println("picMap===========>"+picMap);
+// System.out.println("picNameList===========>"+picNameList);
+// System.out.println("picMap===========>"+picMap);
//2.获取按模板新生成的文档添加图片
- File newFile = new File(newFileName);
- FileInputStream newFis = new FileInputStream(newFile);
- XWPFDocument newXdoc = new XWPFDocument(newFis);
- List paragraphs = newXdoc.getParagraphs();
//其他方式
Document doc = new Document();
doc.loadFromFile(newFileName);
Section sec = doc.getSections().get(0);
- System.out.println("sec=================>"+sec);
+// System.out.println("sec=================>"+sec);
String text = doc.getText();
- System.out.println("text=================>"+text);
+// System.out.println("text=================>"+text);
Paragraph para = sec.getParagraphs().get(0);
- System.out.println("para=================>"+para);
+// System.out.println("para=================>"+para);
for(int i = 0; i < doc.getSections().getCount(); i++) {
Section section = doc.getSections().get(i);
for (int j = 0; j < section.getParagraphs().getCount(); j++) {
Paragraph paragraph = section.getParagraphs().get(j);
- System.out.println(j+"新方式内容"+paragraph.getText());
+// System.out.println(j+"新方式内容"+paragraph.getText());
for (String pic: picNameList) {
String replace = String.valueOf(paragraph.getText()).replace(",", "").replace(" ", "");
if (replace.contains(picMap.get(pic).replace(",", "").replace(" ", ""))) {
- System.out.println("包含");
+// System.out.println("包含");
String imgPath = IMG_DIR + randomFix +pic.replace("image", "");
File picture=new File(imgPath);
BufferedImage sourceImg= ImageIO.read(new FileInputStream(picture));
int width = sourceImg.getWidth();
sourceImg.getHeight();
-
+ System.out.println("图片长度"+width);
//判断图片中是否包含 文字
// String valCode = new OCRUtil().recognizeText(new File(imgPath));
// System.out.println("valCode==============>"+valCode);
@@ -1522,20 +1537,50 @@ public class TypesetController {
// docPicture.setTextWrappingType(TextWrappingType.Both);
// }else {
//2.不包含 判断图片大小决定 图片为单栏还是双栏
- if (width <= 22000f){
+ if (width <= 782f){
//图片为小图 双栏
DocPicture docPicture = paragraph.appendPicture(imgPath);
- docPicture.setWidth(220f);
- docPicture.setHeight(180f);
+ docPicture.setWidth(250f);
+// docPicture.setHeight(216f);
docPicture.setTextWrappingStyle(TextWrappingStyle.Top_And_Bottom);
docPicture.setTextWrappingType(TextWrappingType.Both);
+ float x = docPicture.getHorizontalPosition();
+ float y = docPicture.getVerticalPosition();
+
+ //获取图片宽度、高度
+ float width1 = docPicture.getWidth();
+ float height = docPicture.getHeight();
+
+ //获取图片文字环绕
+ String wrappingstyle = docPicture.getTextWrappingStyle().toString();//图片文字环绕方式
+ String wrappingtype = docPicture.getTextWrappingType().toString();//环绕文字类型
+
+ System.out.println("坐标位置为: X =" + x + " Y=" + y
+ + "\n 图片宽:"+ width1 + " 图片高:" + height
+ + "\n 图片的文字环绕方式:" + wrappingstyle + " 环绕文字类型:" + wrappingtype);
}else {
//图片为大图 单栏
DocPicture docPicture = paragraph.appendPicture(imgPath);
- docPicture.setWidth(500f);
- docPicture.setHeight(180f);
+ docPicture.setWidth(495f);
+// docPicture.setHeight(150f);
+ docPicture.setHorizontalPosition(0.0f);
+ docPicture.setVerticalPosition(10.0f);
docPicture.setTextWrappingStyle(TextWrappingStyle.Top_And_Bottom);
docPicture.setTextWrappingType(TextWrappingType.Both);
+ float x = docPicture.getHorizontalPosition();
+ float y = docPicture.getVerticalPosition();
+
+ //获取图片宽度、高度
+ float width1 = docPicture.getWidth();
+ float height = docPicture.getHeight();
+
+ //获取图片文字环绕
+ String wrappingstyle = docPicture.getTextWrappingStyle().toString();//图片文字环绕方式
+ String wrappingtype = docPicture.getTextWrappingType().toString();//环绕文字类型
+
+ System.out.println("坐标位置为: X =" + x + " Y=" + y
+ + "\n 图片宽:"+ width1 + " 图片高:" + height
+ + "\n 图片的文字环绕方式:" + wrappingstyle + " 环绕文字类型:" + wrappingtype);
}
// }
@@ -1636,8 +1681,105 @@ public class TypesetController {
System.out.println("输出完毕");
// os.close();
inputStream.close();
- newFis.close();
- filePath = IMG_DIR + randomFix + uuid+".docx";
+
+ filePath = randomFix + uuid+".docx";
+// //处理角标
+// File newFile = new File(filePath);
+// FileInputStream newFis = new FileInputStream(newFile);
+// XWPFDocument newXdoc = new XWPFDocument(newFis);
+// List paragraphs = newXdoc.getParagraphs();
+// for (XWPFParagraph paragraph: paragraphs
+// ) {
+// int runNumber = 0;
+// List runs = paragraph.getRuns();
+//
+// for (XWPFRun run : runs) {
+// String s = run.text();
+//// Pattern p = Pattern.compile("(?<=q).*?(?=q)");
+//// Matcher m = p.matcher(s);
+//// //找到角标文字
+//// while(m.find()) {
+// if (s.contains("")){
+//// System.out.println("角标"+m.group());
+//// String group = m.group();
+// break;
+//
+//// char[] strArray = group.toCharArray();
+//// char[] runChars = s.toCharArray();
+//// for (char c : strArray) {
+////// String value = String.valueOf(c);
+////// if (s != null && s.contains(value)) { //if we have a run with an "a" in it, then
+////// char[] runChars = s.toCharArray();
+//// StringBuffer sb = new StringBuffer();
+//// for (int charNumber = 0; charNumber < runChars.length; charNumber++) { //go through all characters in that run
+//// if (runChars[charNumber] == c && String.valueOf(c) != null) { //if the charcter is an 'a' then
+////// run.setText(sb.toString(), 0); //set all characters, which are current buffered, as the text of the actual run
+////// r = paragraph.insertNewRun(++runNumber); //insert new run for the '@' as the replacement for the 'a'
+////// r.setText("@", 0);
+////// r.setColor("DC143C");
+////// r = paragraph.insertNewRun(++runNumber); //insert new run for the next characters
+//// run.setText(sb.toString(), 0); //set all characters, which are current buffered, as the text of the actual run
+//// run = paragraph.insertNewRun(++runNumber); //insert new run for the '@' as the replacement for the 'a'
+//// run.setText(String.valueOf(c), 0);
+//// run.setSubscript(VerticalAlign.SUPERSCRIPT);
+//// } else {
+//// sb.append(runChars[charNumber]); //buffer all characters which are not 'a's
+//// }
+//// }
+//// run.setText(sb.toString(), 0); //set all characters, which are current buffered, as the text of the actual run
+////// }
+////
+////
+//// }
+//// runNumber++;
+// }
+// }
+// XWPFRun run1 = paragraph.createRun();
+// run1.setText("112");
+// XWPFRun run2 = paragraph.createRun();
+// run2.setText("345");
+// run2.setSubscript(VerticalAlign.SUPERSCRIPT);
+//
+//// int runNumber = 0;
+//// while (runNumber < paragraph.getRuns().size()) { //go through all runs, we cannot use for each since we will possibly insert new runs
+////// XWPFRun r = paragraph.getRuns().get(runNumber);
+////// String runText = r.getText(0);
+//////
+//////
+////// Pattern p = Pattern.compile("/(?<=q).*?(?=q)/");
+////// Matcher m = p.matcher(runText);
+////// while(m.find()) {
+////// System.out.println("角标"+m.group(1));
+////// }
+////
+////
+////
+////
+////// if (runText != null && runText.contains("a")) { //if we have a run with an "a" in it, then
+////// char[] runChars = runText.toCharArray();
+////// StringBuffer sb = new StringBuffer();
+////// for (int charNumber = 0; charNumber < runChars.length; charNumber++) { //go through all characters in that run
+////// if (runChars[charNumber] == 'a') { //if the charcter is an 'a' then
+////// r.setText(sb.toString(), 0); //set all characters, which are current buffered, as the text of the actual run
+////// r = paragraph.insertNewRun(++runNumber); //insert new run for the '@' as the replacement for the 'a'
+////// r.setText("@", 0);
+////// r.setColor("DC143C");
+////// r = paragraph.insertNewRun(++runNumber); //insert new run for the next characters
+////// sb = new StringBuffer(); //empty buffer
+////// } else {
+////// sb.append(runChars[charNumber]); //buffer all characters which are not 'a's
+////// }
+////// }
+////// r.setText(sb.toString(), 0); //set all characters, which are current buffered, as the text of the actual run
+////// }
+////// runNumber++;
+//// }
+// }
+
+
+
+// newFis.close();
+
}catch (Exception e){
e.printStackTrace();
}