/** * Creates the PDF. * * @return the bytes of a PDF file. * @throws DocumentExcetpion * @throws IOException * @throws SQLException */ public byte[] createPdf() throws DocumentException, IOException, SQLException { DatabaseConnection connection = new HsqldbConnection("filmfestival"); java.util.List<Movie> movies = PojoFactory.getMovies(connection, 1); connection.close(); // step 1 Document document = new Document(); // step 2 ByteArrayOutputStream baos = new ByteArrayOutputStream(); PdfWriter writer = PdfWriter.getInstance(document, baos); // step 3 document.open(); // step 4 document.add( new Paragraph( "'Stanley Kubrick: A Life in Pictures' is a documentary about Stanley Kubrick and his films:")); ByteArrayOutputStream txt = new ByteArrayOutputStream(); PrintStream out = new PrintStream(txt); out.println("<movies>"); List list = new List(List.UNORDERED, 20); ListItem item; for (Movie movie : movies) { out.println("<movie>"); out.println( String.format("<title>%s</title>", XMLUtil.escapeXML(movie.getMovieTitle(), true))); out.println(String.format("<year>%s</year>", movie.getYear())); out.println(String.format("<duration>%s</duration>", movie.getDuration())); out.println("</movie>"); item = new ListItem(movie.getMovieTitle()); list.add(item); } document.add(list); out.print("</movies>"); out.flush(); out.close(); PdfFileSpecification fs = PdfFileSpecification.fileEmbedded(writer, null, "kubrick.xml", txt.toByteArray()); writer.addFileAttachment(fs); // step 5 document.close(); return baos.toByteArray(); }