xdocreport 1.0.3을 사용하고 odt 템플릿을 업로드하고 처리하고 docx 처리 문서를 얻으려고합니다. 어떻게해야합니까?xdocreport를 사용하여 odt를 docx로 변환하는 방법?
public void generateUserReport(long pcCaseId, long currentUserId) throws CMSException{
try {
InputStream is = new FileInputStream(CustomTemplate.TEMPLATES_PATH + "test.odt");
IXDocReport report;
report = XDocReportRegistry.getRegistry().loadReport(is,TemplateEngineKind.Velocity);
IContext context = report.createContext();
FieldsMetadata metadata = new FieldsMetadata();
metadata.addFieldAsImage("signature");
metadata.addFieldAsImage("logo");
Date currentDate = new Date();
SimpleDateFormat df = new SimpleDateFormat("MM/dd/YYYY");
context.put("currentDate", df.format(currentDate));
User user = this.userDAO.loadUser(currentUserId);
byte[] signatureByteArr = user.getSignature();
context.put("userName", user.getFullName());
//TODO If exists signature, it will be added, in other case?
if (signatureByteArr!=null){
FileOutputStream fos = new FileOutputStream(CustomTemplate.TEMPLATES_PATH + "signature.jpg");
report.setFieldsMetadata(metadata);
fos.write(signatureByteArr);
FileImageProvider signature = new FileImageProvider(new File(CustomTemplate.TEMPLATES_PATH,"signature.jpg"));
context.put("signature", signature);
}else{
FileImageProvider noImage = new FileImageProvider(new File(CustomTemplate.TEMPLATES_PATH, "1px.gif"));
context.put("signature", noImage);
}
FileImageProvider logo = new FileImageProvider(new File("TEMPLATES_PATH, logo.gif"));
context.put("logo", logo);
OutputStream out = new FileOutputStream(new File(CustomTemplate.TEMPLATES_PATH, "OutPut.docx"));
report.process(context, out);
System.out.println("Success");
} catch (IOException e) {
System.out.println("IO exception");
} catch (XDocReportException e) {
System.out.println("XDocException");
e.printStackTrace();
}
}
내가 OutPut.docx를 얻을 수 있지만, "사실상는"그것이 ODT 문서이며, 마이크로 소프트 오피스는 오류 정보없이 열 수 없습니다 :
나는이 시도. 오픈 오피스는 아무런 문제없이 그것을 엽니 다.
당신이 시도한 것을 보여줄 수 있습니까? – OmniOwl