Создайте документ, используя 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();
  }
 }

Любое предложение будет оценено, в любом случае, спасибо;

0 ответов

Другие вопросы по тегам