Создайте документ, используя docx4j, он отличается от Windows и Linux-сервера
Когда я использую docx4j для генерации doc из HTML и вывода через сервлет java, это хорошо работает в системе Windows, я могу скачать и открыть файл doc в обычном режиме.
Когда я помещаю проект на сервер Linux, я также могу загрузить файл doc, но при открытии файла он предупреждает, что файл поврежден. Я должен нажать кнопку подтверждения и восстановить файл. Затем откройте его как обычно. мой основной код такой.
Как я могу получить такой же результат, как Windows?
код в JSP:
String vhtml = DownHtml2DocUtil.replaceSvgData2Base64(request);
response.reset();
response.setContentType("application/octet-stream");//设置为字节流
OutputStream output = null;
try {
output = response.getOutputStream();
response.addHeader("Content-Disposition", "attachment;filename=" + System.currentTimeMillis() + ".doc");
DownHtml2DocUtil.genDocFromHtml(vhtml, output);
} catch (Exception e) {
} finally {
try {
if (output != null) {
output.close();
}
} catch (Exception e) {
}
}
response.flushBuffer();
out.clear();
out = pageContext.pushBody();
код в Java, как это:
public static void genDocFromHtml(String html, OutputStream out)
throws EMPException {
try {
WordprocessingMLPackage wordMLPackage;
wordMLPackage = WordprocessingMLPackage.createPackage();
XHTMLImporterImpl XHTMLImporter = new XHTMLImporterImpl(
wordMLPackage);
wordMLPackage.getMainDocumentPart().getContent()
.addAll(XHTMLImporter.convert(html, "utf-8"));
// wordMLPackage.save(out); -- i tried both method
new Save(wordMLPackage).save(out);
} catch (InvalidFormatException e) {
throw new EMPException(e);
} catch (Docx4JException e) {
throw new EMPException(e);
} catch (Exception e) {
e.printStackTrace();
}
}
Любое предложение будет оценено, в любом случае, спасибо;