Top / OpenOffice.org / ServletでPDFを出力する
まだ書き途中!! OpenOffice.orgサーバを起動 †Windows: > cd [OOo_DIR]/program >soffice -accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager Linux: /opt/openoffice.org2.0/program/soffice -accept="socket,port=8100;urp;StarOffice.ServiceManager" -display :1.0 Servletのソースコード †package nu.mine.kino.servlets; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.joott.uno.DocumentConverter; import net.sf.joott.uno.DocumentConverterFactory; import net.sf.joott.uno.DocumentFormat; /** * Servlet implementation class for Servlet: PDFServlet * * @web.servlet name = "PDFServlet" * @web.servlet-mapping url-pattern = "/PDFServlet" * */ public class PDFServlet extends HttpServlet { /* * (non-Java-doc) * * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, * HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("Servlet.Start."); String fileName = request.getParameter("file"); try { // テンプレートとなるSXWファイルのパスを取得し、ファイルを読み込みます。 String inputPath = this.getServletContext().getRealPath( "/WEB-INF/" + fileName); System.out.println(inputPath); File inputFile = new File(inputPath); // 出力ファイルを作成します。 String outputPath0 = "/WEB-INF/output.pdf" + Thread.currentThread().getId(); String outputPath = getServletContext().getRealPath(outputPath0); File outputFile = new File(outputPath); System.out.println(outputPath); DocumentConverter converter = DocumentConverterFactory .getConverter(); try { // 変換を実行します。 converter.convert(inputFile, outputFile, DocumentFormat.PDF_WRITER); } catch (IOException e) { e.printStackTrace(); } response.setHeader("Cache-Control", ""); response.setHeader("Pragma", ""); response.setContentType(DocumentFormat.PDF_WRITER.getMimeType()); FileInputStream in = new FileInputStream(outputFile); OutputStream os = response.getOutputStream(); byte[] buffer = new byte[2048]; int bytes; while ((bytes = in.read(buffer, 0, 2048)) != -1) { os.write(buffer, 0, bytes); } in.close(); os.close(); outputFile.delete(); } catch (Exception e) { e.printStackTrace(); } System.out.println("Servlet.End."); } } また、必要なlibは以下の感じ。 dom4j-1.4.jar jooconverter.jar jootemplates.jar juh.jar jurt.jar ognl-2.6.5.jar ridl.jar sandbox.jar unoil.jar xerces-2.6.2.jar xstream-1.0.1.jar 参考 この記事は
Top / OpenOffice.org / ServletでPDFを出力する
現在のアクセス:12565 |