имеется веб приложение (Spring + Tomcat) почитал предыдущий пост и сделал следующее
| Код | public class XLogReport extends AbstractController {
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mav = new ModelAndView(); final XProjectData prjData = new XProjectData(); final Vector logCollection = new Vector(); final String directory;
directory = request.getParameter("dir"); prjData.setDateFrom(request.getParameter("datefrom")); prjData.setDateTo(request.getParameter("dateto")); prjData.setProjectName(request.getParameter("projectName"));
LogReportEntry[] entryList = ServiceAccess.getLogReportEntry(prjData.getProjectName(), directory, prjData.getDateTo(), prjData.getDateFrom());
Document doc = DomXml.createXmlDocument(entryList);
ByteArrayOutputStream pdfStream = null; try{ // get pdf file as byte stream File xslt = new File("log2fo.xsl"); pdfStream = XML2PDF(doc, xslt); response.setContentType("application/pdf"); response.setCharacterEncoding("UTF-8"); response.setContentLength(pdfStream.size()); ServletOutputStream out = response.getOutputStream(); pdfStream.writeTo(out); out.flush(); }catch(Exception e){ logger.error("Failed to stream pdf report on client. Caused by: ", e); }finally{ try{ if (pdfStream != null){ pdfStream.close(); } }catch(IOException ioe){ logger.error("Failed to close pdf reporting stream. Caused by: ", ioe); } }
return mav; }
public ByteArrayOutputStream XML2PDF(Document xml, File xslt) throws IOException, FOPException, TransformerException { //Construct driver Driver driver = new Driver();
//Setup logger Logger logger = new ConsoleLogger(ConsoleLogger.LEVEL_INFO); driver.setLogger(logger); MessageHandler.setScreenLogger(logger);
//Setup Renderer (output format) driver.setRenderer(Driver.RENDER_PDF);
//Setup output //OutputStream out = new java.io.FileOutputStream(pdf); ByteArrayOutputStream out = new ByteArrayOutputStream(); try { driver.setOutputStream(out);
//Setup XSLT TransformerFactory factory = TransformerFactory.newInstance(); Transformer transformer = factory.newTransformer(new StreamSource(xslt));
//Setup input for XSLT transformation Source src = new StreamSource(new StringReader(xml.asXML()));
//Resulting SAX events (the generated FO) must be piped through to FOP Result res = new SAXResult(driver.getContentHandler());
//Start XSLT transformation and FOP processing transformer.transform(src, res); } finally { out.close(); }
return out; } }
|
компиляется, запускаю... но страница пустая.... может не правильно путь в к файл xsl указываю
| Код | File xslt = new File("log2fo.xsl");
|
как правильно указать путь к этому файлу который лежит на Tomcat'e???
или ошибка не в этом? |