Генерация документа Word с изображением, встроенным в него через SSL в JAVA - PullRequest
0 голосов
/ 01 марта 2010

Вот фрагмент кода, чтобы дать вам представление о том, что я получил до сих пор. Я могу вывести документ Word таким образом. Я также могу получить доступ к изображению через URL в браузере, но src документов Word, похоже, не работает с сервлетом (по некоторым данным, которые у меня есть).

ExportServlet.java `

    response.setContentType("application/ms-word");

    String imageUrl = request.getScheme() + "://" + request.getServerName() +
                      ":" + request.getServerPort() + request.getContextPath() +
                      "/ExportImage";

    PrintWriter out = response.getWriter();

        out.println("<html xmlns:o='urn:schemas-microsoft-com:office:office'
    xmlns:w='urn:schemas-microsoft-com:office:word'
    xmlns:v='urn:schemas-microsoft-com:vml'
    xmlns='http://www.w3.org/TR/REC-html40'>
    <head>
            <title>Exported Documents</title>

            <!--[if gte mso 9]>
           <xml>
           <w:WordDocument>
           <w:View>Print</w:View>
           <w:Zoom>100</w:Zoom>
           <w:DoNotOptimizeForBrowser/>
           <w:BreakWrappedTables/>
           </w:WordDocument>
           </xml>
           <![endif]-->
    </head>
    <body>
    <img src=\"" + imageUrl + "\">
    </body>
</html>")
    out.flush();

`

ExportImage.java

      Logger.log("getting Image");
      ServletContext servletContext = getServletContext();
        String filename = servletContext.getRealPath("myImage.gif");
        response.setContentType(
                servletContext.getMimeType(filename));
        File file = new File(filename);
        response.setContentLength((int)file.length());

        FileInputStream in = new FileInputStream(file);
        OutputStream out = response.getOutputStream();

        // Copy the contents of the file to the output stream
        byte[] buf = new byte[1024];
        int count = 0;
        while ((count = in.read(buf)) >= 0) {
            out.write(buf, 0, count);
        }
        in.close();
        out.flush();
        out.close();

1 Ответ

0 голосов
/ 20 мая 2010

Может ли другой подходящий подход заключаться в том, чтобы полностью сгенерировать документ на сервере (с уже встроенным изображением) и передать его запрашивающему, а не пытаться заставить документ выполнить отдельную выборку https? Если это так, Docmosis и JODReports могут создавать для вас документы в формате doc с изображениями.

...