|
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を出力する
現在のアクセス:12927 |