Skip to content

Commit 3712f2b

Browse files
committed
生成word--可以展示图片
1 parent 6b3f4ba commit 3712f2b

File tree

2 files changed

+95
-51
lines changed

2 files changed

+95
-51
lines changed

src/main/java/com/njxz/exam/controller/TestPaperController.java

Lines changed: 90 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
import com.njxz.exam.modle.Subject;
4646
import com.njxz.exam.modle.TempExam;
4747
import com.njxz.exam.modle.User;
48-
import com.njxz.exam.service.ExamQuestionsService;
4948
import com.njxz.exam.service.ExamQuestiontypeService;
5049
import com.njxz.exam.service.ExamService;
5150
import com.njxz.exam.service.GeneratePaperService;
@@ -96,9 +95,6 @@ public class TestPaperController extends Logable{
9695
@Autowired
9796
private ExamQuestiontypeService eqtService;
9897

99-
@Autowired
100-
private ExamQuestionsService eqService;
101-
10298
// 抽取现有试卷
10399
@RequestMapping(value = "/get", method = RequestMethod.GET)
104100
public ModelAndView getPaperPage(@RequestParam(value="pageNum",required = false, defaultValue = "1") Integer pageNum,
@@ -154,7 +150,7 @@ public void exportWord(@PathVariable(name="eId",required=true)Long eId,
154150
@PathVariable(name="eType",required=true)int eType) throws IOException {
155151
String directoryName=Constants.WORD_TEMPLETE_DIRECTORY_NAME;
156152
Map<String,Object> resultMap=new HashMap<>();
157-
Map<String, String> contentMap=new HashMap<>();
153+
//Map<String, String> contentMap=new HashMap<>();
158154

159155
//模板存放的实际地址
160156
String t=request.getSession().getServletContext().getRealPath("");
@@ -200,9 +196,7 @@ public void exportWord(@PathVariable(name="eId",required=true)Long eId,
200196
scoreList.add("");
201197
resultMap.put("scoreList", scoreList);
202198

203-
204-
StringBuilder sb = new StringBuilder();
205-
//所有题目
199+
//写入所有题目
206200
//试卷题型信息--已经按照题型排列顺序排列
207201
List<ExamQuestiontype> eqtList= eqtService.allExamQuestiontypes(eId);
208202
List<Map<String,Object>> quesList=new ArrayList<>();
@@ -211,8 +205,15 @@ public void exportWord(@PathVariable(name="eId",required=true)Long eId,
211205
ExamQuestiontype tempEqt;//试卷中题型
212206
QuestionType tempQt;//题型实体
213207
List<Questions> qList;//试题列表
208+
String tempContent;String tempImagesXmlHref;String tempImagesBase64;
209+
Map<String, Object> tmepResultMapMap=null;
210+
211+
StringBuilder sb = new StringBuilder();
212+
StringBuilder imagesXmlHrefString=new StringBuilder();
213+
StringBuilder imagesBase64=new StringBuilder();
214+
214215
for(int i=1;i<=eqtCount;i++) {
215-
Map<String, Object> tempMap=new HashMap<>();
216+
Map<String, Object> tempMap = new HashMap<>();
216217
tempEqt=eqtList.get(i-1);//当前试题类型
217218
tempQt=qtService.getQuestionTypeById(tempEqt.getQuestionTypeId().toString());
218219
tempMap.put("fQId",Constants.numGetChinese(i));
@@ -222,10 +223,27 @@ public void exportWord(@PathVariable(name="eId",required=true)Long eId,
222223
for(int j=1;j<qList.size();j++) {
223224
Map<String, Object> tempQuestionMap=new HashMap<>();
224225
tempQuestionMap.put("sQId", j);
225-
tempQuestionMap.put("content", qList.get(j).getqTitle());
226+
//tempQuestionMap.put("content", qList.get(j).getqTitle());
226227
question.add(tempQuestionMap);
227-
//处理图片信息
228+
//处理的图片信息(总)
228229
sb.append(qList.get(j).getqTitle());
230+
231+
StringBuilder sbTemp=new StringBuilder();
232+
sbTemp.append(qList.get(j).getqTitle());
233+
234+
//处理数据库中富文本
235+
tmepResultMapMap=getHandleredInfo(sbTemp);
236+
tempContent=tmepResultMapMap.get("docBodyBlock").toString();
237+
tempImagesXmlHref=tmepResultMapMap.get("imagesXmlHrefString").toString();
238+
tempImagesBase64=tmepResultMapMap.get("iamgebase64").toString();
239+
240+
//所有的图片信息以及图片链接信息
241+
imagesXmlHrefString.append(tempImagesXmlHref);
242+
imagesBase64.append(tempImagesBase64);
243+
244+
System.out.println("======tempContent==============");
245+
System.out.println(tempContent);
246+
tempQuestionMap.put("content",tempContent);
229247
}
230248
tempMap.put("question",question);
231249
quesList.add(tempMap);
@@ -241,44 +259,10 @@ public void exportWord(@PathVariable(name="eId",required=true)Long eId,
241259
// resultMap.put("content", contentMap);
242260

243261

244-
262+
//Map<String, Object> handlerMap=getHandleredInfo(sb);
263+
//String imagesBase64=handlerMap.get("iamgebase64").toString();
264+
//String imagesXmlHrefString=handlerMap.get("imagesXmlHrefString").toString();
245265

246-
RichHtmlHandler handler = new RichHtmlHandler(sb.toString());
247-
248-
249-
handler.setDocSrcLocationPrex("file:///C:/C8FBA2D4");
250-
handler.setDocSrcParent("examTest.files");
251-
handler.setNextPartId("01D395FD.81B8E900");
252-
253-
handler.handledHtml(request);
254-
255-
StringBuilder imagesBase64=new StringBuilder();
256-
if (handler.getDocBase64BlockResults() != null
257-
&& handler.getDocBase64BlockResults().size() > 0) {
258-
for (String item : handler.getDocBase64BlockResults()) {
259-
imagesBase64.append(item);
260-
}
261-
}
262-
263-
System.out.println("===========StringBuilder=========");
264-
System.out.println(sb.toString());
265-
266-
System.out.println("=========iamgebase64=========");
267-
System.out.println(imagesBase64.toString());
268-
269-
StringBuilder imagesXmlHrefString=new StringBuilder();
270-
if (handler.getXmlImgRefs() != null
271-
&& handler.getXmlImgRefs().size() > 0) {
272-
for (String item : handler.getXmlImgRefs()) {
273-
imagesXmlHrefString.append(item);
274-
}
275-
}
276-
277-
System.out.println("============imagesXmlHrefString==============");
278-
System.out.println(imagesXmlHrefString.toString());
279-
280-
System.out.println("==========title=================");
281-
System.out.println(handler.getHandledDocBodyBlock());
282266

283267
resultMap.put("imagesXmlHrefString",imagesXmlHrefString);
284268
resultMap.put("imagesBase64",imagesBase64);
@@ -308,6 +292,61 @@ public void exportWord(@PathVariable(name="eId",required=true)Long eId,
308292
}
309293
}
310294

295+
//得到处理过的富文本信息
296+
public Map<String, Object> getHandleredInfo(StringBuilder sb){
297+
Map<String, Object> resultMap=new HashMap<>();
298+
299+
try {
300+
RichHtmlHandler handler = new RichHtmlHandler(sb.toString());
301+
302+
handler.setDocSrcLocationPrex("file:///C:/C8FBA2D4");
303+
handler.setDocSrcParent("examTest.files");
304+
handler.setNextPartId("01D395FD.81B8E900");
305+
306+
handler.handledHtml(request);
307+
308+
StringBuilder imagesBase64=new StringBuilder();
309+
if (handler.getDocBase64BlockResults() != null
310+
&& handler.getDocBase64BlockResults().size() > 0) {
311+
for (String item : handler.getDocBase64BlockResults()) {
312+
imagesBase64.append(item);
313+
}
314+
}
315+
316+
//System.out.println("===========StringBuilder=========");
317+
//System.out.println(sb.toString());
318+
319+
//System.out.println("=========iamgebase64(图片的Base64编码)=========");
320+
//System.out.println(imagesBase64.toString());
321+
322+
StringBuilder imagesXmlHrefString=new StringBuilder();
323+
if (handler.getXmlImgRefs() != null
324+
&& handler.getXmlImgRefs().size() > 0) {
325+
for (String item : handler.getXmlImgRefs()) {
326+
imagesXmlHrefString.append(item);
327+
}
328+
}
329+
330+
//System.out.println("============imagesXmlHrefString(图片链接)==============");
331+
//System.out.println(imagesXmlHrefString.toString());
332+
333+
//System.out.println("==========docBodyBlock(处理过的主体部分)=================");
334+
//System.out.println(handler.getHandledDocBodyBlock());
335+
336+
//存入结果
337+
resultMap.put("docBodyBlock", handler.getHandledDocBodyBlock());
338+
resultMap.put("iamgebase64", imagesBase64.toString());
339+
resultMap.put("imagesXmlHrefString", imagesXmlHrefString.toString());
340+
341+
} catch (IOException e) {
342+
// TODO Auto-generated catch block
343+
e.printStackTrace();
344+
return null;
345+
}
346+
347+
return resultMap;
348+
}
349+
311350
@RequestMapping(value="test")
312351
public void test() {
313352
StringBuilder sb = new StringBuilder();
@@ -445,10 +484,10 @@ public void test() {
445484
FileWriter fw=new FileWriter(file);
446485

447486

448-
fw.write("======handledDocBody block==========\n");
487+
fw.write("======handledDocBody block(主体信息)==========\n");
449488
fw.write(handler.getHandledDocBodyBlock());
450489

451-
fw.write("======handledBase64Block==========\n");
490+
fw.write("======handledBase64Block(图片的base64编码)==========\n");
452491
if (handler.getDocBase64BlockResults() != null
453492
&& handler.getDocBase64BlockResults().size() > 0) {
454493
for (String item : handler.getDocBase64BlockResults()) {
@@ -457,7 +496,7 @@ public void test() {
457496
}
458497
if (handler.getXmlImgRefs() != null
459498
&& handler.getXmlImgRefs().size() > 0) {
460-
fw.write("======xmlimaHref==========\n");
499+
fw.write("======xmlimaHref(从主体部分链接到Base64图片部分)==========\n");
461500
for (String item : handler.getXmlImgRefs()) {
462501
fw.write(item + "\n");
463502
}

src/main/java/com/njxz/exam/mapper/QuestionsMapper.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,4 +325,9 @@
325325
<select id="countgetBy" parameterType="java.lang.Long" resultType="java.lang.Integer">
326326
select count(*) from questions q inner join exam_questions eq on q.q_id=eq.question_id where q.q_id=#{0}
327327
</select>
328+
329+
<!-- 按照试卷Id和题型取出试题信息,并按照难易度排序 -->
330+
<select id="getQuestionsByEIdAndEQTId" parameterType="java.lang.Long" resultMap="BaseResultMap">
331+
select * from questions q inner join exam_questions eq where q.q_id=eq.question_id and eq.exam_id=#{eId} and q.question_type_id=#{eqtId} order by q.q_difficulty_level
332+
</select>
328333
</mapper>

0 commit comments

Comments
 (0)