List of usage examples for com.lowagie.text Document Document
public Document(Rectangle pageSize)
Document
-object. From source file:beans.ManagedBeanProducto.java
License:Open Source License
public String CreatePdf() throws IOException, DocumentException { ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext(); //System.out.println(" test: "+extContext); //System.out.println(" esta es la ruta" + extContext.getRealPath("//pdfs//")); // step 1//from w w w . ja v a 2 s .c o m String ruta_pdfs = extContext.getRealPath("//pdfs//"); Document document = new Document(PageSize.A4); document.setMargins(5, 5, 25, 25); document.setMarginMirroring(true); // step 2 PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(ruta_pdfs + "//CB" + Producto.getIdProducto() + ".pdf")); // step 3 document.open(); // step 4 PdfContentByte cb = writer.getDirectContent(); Paragraph Titulo = new Paragraph( "PRODUCTO : " + Producto.getNombreProducto().substring(14).toUpperCase() + "\n\n"); Titulo.setAlignment(Paragraph.ALIGN_CENTER); document.add(Titulo); // EAN 13 // document.add(new Paragraph("Barcode EAN.UCC-13")); BarcodeEAN codeEAN = new BarcodeEAN(); codeEAN.setCode(CodigoBarrasFinal()); String nombre_producto = ""; if (Producto.getNombreProducto().length() >= 41) { nombre_producto = Producto.getNombreProducto().substring(14, 41); } else { nombre_producto = Producto.getNombreProducto().substring(14); } // document.add(new Paragraph(nombre_producto,new Font(Font.COURIER, 5, Font.NORMAL))); // document.add(codeEAN.createImageWithBarcode(cb,Color.BLUE , Color.BLUE)); // codeEAN.setGuardBars(false); // document.add(new Paragraph(nombre_producto,new Font(Font.COURIER, 5, Font.NORMAL))); // codeEAN.setGuardBars(false); Image imagen = codeEAN.createImageWithBarcode(cb, null, null); imagen.scaleAbsolute(87, 45); //document.add(imagen); PdfPTable table = new PdfPTable(5); table.getDefaultCell().setVerticalAlignment(Element.ALIGN_MIDDLE); // table.setTotalWidth(1800); PdfPCell cell; Phrase nombre = new Phrase(nombre_producto.toUpperCase(), new Font(Font.COURIER, 5, Font.BOLD, Color.BLACK)); cell = new PdfPCell(); cell.addElement(nombre); //cell.addElement(new Chunk("\n")); cell.addElement(imagen); //cell.addElement(new Chunk("\n")); table.addCell(cell); //table.getDefaultCell().setVerticalAlignment(Element.ALIGN_MIDDLE); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); //table.getDefaultCell().setVerticalAlignment(Element.ALIGN_MIDDLE); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); table.addCell(cell); document.add(table); // EAN 8 "6987"; // String inicio ="345"; // int intermedio =1000+Producto.getIdProducto(); // String fin ="0"; // document.add(new Paragraph(Producto.getNombreProducto(),new Font(Font.COURIER, 4, Font.NORMAL))); // codeEAN.setCodeType(Barcode.EAN8); // codeEAN.setBarHeight(codeEAN.getSize() * 1.5f); // codeEAN.setCode(inicio.concat(intermedio+fin)); // document.add(codeEAN.createImageWithBarcode(cb, null, null)); document.close(); return "codigo_barras_productos"; }
From source file:biblivre3.administration.reports.BaseBiblivreReport.java
License:Open Source License
protected MemoryFileDTO generateReportFile(BaseReportDto reportData, String fileName) { Document document = new Document(PageSize.A4); MemoryFileDTO report = new MemoryFileDTO(); report.setFileName(fileName);/* w w w.java2s. c o m*/ try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); writer = PdfWriter.getInstance(document, baos); writer.setPageEvent(this); writer.setFullCompression(); document.open(); generateReportBody(document, reportData); writer.flush(); document.close(); report.setFileData(baos.toByteArray()); } catch (Exception e) { logger.error(e.getMessage(), e); return null; } return report; }
From source file:br.com.nordestefomento.jrimum.utilix.PDFUtil.java
License:Apache License
/** * <p>//from w ww .java2s .c o m * Junta varios arquivos pdf em um soh. * </p> * * @param pdfFiles * Lista de array de bytes * * @return Arquivo PDF em forma de byte * @since 0.2 */ @SuppressWarnings("unchecked") public static byte[] mergeFiles(List<byte[]> pdfFiles) { // retorno byte[] bytes = null; if (isNotNull(pdfFiles) && !pdfFiles.isEmpty()) { int pageOffset = 0; boolean first = true; ArrayList master = null; Document document = null; PdfCopy writer = null; ByteArrayOutputStream byteOS = null; try { byteOS = new ByteArrayOutputStream(); master = new ArrayList(); for (byte[] doc : pdfFiles) { if (isNotNull(doc)) { // cria-se um reader para cada documento PdfReader reader = new PdfReader(doc); if (reader.isEncrypted()) { reader = new PdfReader(doc, "".getBytes()); } reader.consolidateNamedDestinations(); // pega-se o numero total de paginas int n = reader.getNumberOfPages(); List bookmarks = SimpleBookmark.getBookmark(reader); if (isNotNull(bookmarks)) { if (pageOffset != 0) { SimpleBookmark.shiftPageNumbers(bookmarks, pageOffset, null); } master.addAll(bookmarks); } pageOffset += n; if (first) { // passo 1: criar um document-object document = new Document(reader.getPageSizeWithRotation(1)); // passo 2: criar um writer que observa o documento writer = new PdfCopy(document, byteOS); document.addAuthor("JRimum Group"); document.addSubject("JRimum Merged Document"); document.addCreator("JRimum Utilix"); // passo 3: abre-se o documento document.open(); first = false; } // passo 4: adciona-se o conteudo PdfImportedPage page; for (int i = 0; i < n;) { ++i; page = writer.getImportedPage(reader, i); writer.addPage(page); } } } if (master.size() > 0) { writer.setOutlines(master); } // passo 5: fecha-se o documento if (isNotNull(document)) { document.close(); } bytes = byteOS.toByteArray(); } catch (Exception e) { LOG.error("", e); } } return bytes; }
From source file:br.gov.jfrj.itextpdf.Documento.java
License:Open Source License
public static byte[] getDocumento(ExMobil mob, ExMovimentacao mov, boolean completo, boolean estampar, String hash, byte[] certificado) throws Exception { final ByteArrayOutputStream bo2 = new ByteArrayOutputStream(); PdfReader reader;// w w w. j a v a 2 s.co m int n; int pageOffset = 0; ArrayList master = new ArrayList(); int f = 0; Document document = null; PdfCopy writer = null; int nivelInicial = 0; // if (request.getRequestURI().indexOf("/completo/") == -1) { // return getPdf(docvia, mov != null ? mov : docvia.getExDocumento(), // mov != null ? mov.getNumVia() : docvia.getNumVia(), null, // null, request); // } List<ExArquivoNumerado> ans = mob.filtrarArquivosNumerados(mov, completo); if (!completo && !estampar && ans.size() == 1) { if (certificado != null) { CdService cdService = Service.getCdService(); return cdService.produzPacoteAssinavel(certificado, null, ans.get(0).getArquivo().getPdf(), true, ExDao.getInstance().getServerDateTime()); } else if (hash != null) { // Calcula o hash do documento String alg = hash; MessageDigest md = MessageDigest.getInstance(alg); md.update(ans.get(0).getArquivo().getPdf()); return md.digest(); } else { return ans.get(0).getArquivo().getPdf(); } } try { for (ExArquivoNumerado an : ans) { // byte[] ab = getPdf(docvia, an.getArquivo(), an.getNumVia(), // an // .getPaginaInicial(), an.getPaginaFinal(), request); String sigla = mob.getSigla(); if (an.getArquivo() instanceof ExMovimentacao) { ExMovimentacao m = (ExMovimentacao) an.getArquivo(); if (m.getExTipoMovimentacao().getId() == ExTipoMovimentacao.TIPO_MOVIMENTACAO_JUNTADA) sigla = m.getExMobil().getSigla(); } else { sigla = an.getMobil().getSigla(); } byte[] ab = !estampar ? an.getArquivo().getPdf() : stamp(an.getArquivo().getPdf(), sigla, an.getArquivo().isRascunho(), an.getArquivo().isCancelado(), an.getArquivo().isSemEfeito(), an.getArquivo().isInternoProduzido(), an.getArquivo().getQRCode(), an.getArquivo().getMensagem(), an.getPaginaInicial(), an.getPaginaFinal(), an.getOmitirNumeracao(), SigaExProperties.getTextoSuperiorCarimbo(), mob.getExDocumento().getOrgaoUsuario().getDescricao()); // we create a reader for a certain document reader = new PdfReader(ab); reader.consolidateNamedDestinations(); // we retrieve the total number of pages n = reader.getNumberOfPages(); // List bookmarks = SimpleBookmark.getBookmark(reader); // master.add(new Bookmark) // if (bookmarks != null) { // if (pageOffset != 0) // SimpleBookmark.shiftPageNumbers(bookmarks, pageOffset, // null); // master.addAll(bookmarks); // } if (f == 0) { // step 1: creation of a document-object document = new Document(reader.getPageSizeWithRotation(1)); // step 2: we create a writer that listens to the // document writer = new PdfCopy(document, bo2); writer.setFullCompression(); // writer.setViewerPreferences(PdfWriter.PageModeUseOutlines); // step 3: we open the document document.open(); nivelInicial = an.getNivel(); } // PdfOutline root = writer.getDirectContent().getRootOutline(); // PdfContentByte cb = writer.getDirectContent(); // PdfDestination destination = new // PdfDestination(PdfDestination.FITH, position); // step 4: we add content PdfImportedPage page; for (int j = 0; j < n;) { ++j; page = writer.getImportedPage(reader, j); writer.addPage(page); if (j == 1) { // PdfContentByte cb = writer.getDirectContent(); // PdfOutline root = cb.getRootOutline(); // PdfOutline oline1 = new PdfOutline(root, // PdfAction.gotoLocalPage("1", false),"Chapter 1"); HashMap map = new HashMap(); map.put("Title", an.getNome()); map.put("Action", "GoTo"); map.put("Page", j + pageOffset + ""); map.put("Kids", new ArrayList()); ArrayList mapPai = master; for (int i = 0; i < an.getNivel() - nivelInicial; i++) { mapPai = ((ArrayList) ((HashMap) mapPai.get(mapPai.size() - 1)).get("Kids")); } mapPai.add(map); } } PRAcroForm form = reader.getAcroForm(); if (form != null) writer.copyAcroForm(reader); pageOffset += n; f++; } if (!master.isEmpty()) writer.setOutlines(master); // PdfDictionary info = writer.getInfo(); // info.put(PdfName.MODDATE, null); // info.put(PdfName.CREATIONDATE, null); // info.put(PdfName.ID, null); document.close(); } catch (Exception e) { e.printStackTrace(); } return bo2.toByteArray(); }
From source file:br.org.acessobrasil.silvinha.util.GeraRelatorioPDF.java
License:Open Source License
public static boolean geraRelatorio(File file) { TradGeraRelatorioPDF.carregaTexto(TokenLang.LANG); Document document = new Document(PageSize.A4); try {/* ww w .j a v a 2 s . c om*/ PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file)); writer.setPageEvent(new HeaderAndFooter()); document.open(); int linha = 0, j, tot_pg = ResumoDoRelatorio.getTotPage(); //calcula o total de htmls float tot_link = 0.0f; for (j = 1; j <= tot_pg; j++) { String conteudo = ResumoDoRelatorio.getPage(j); String arr[] = conteudo.split("\n"); tot_link += arr.length; } PainelStatusBar.showProgTarReq(); //loop por todas as pginas da paginacao for (j = 1; j <= tot_pg; j++) { String conteudo = ResumoDoRelatorio.getPage(j); String arr[] = conteudo.split("\n"); int tot = arr.length; int i; //loop por todos os links for (i = 0; i < tot; i++) { progresso = (linha++ / tot_link) * 100.0f; PainelStatusBar.setValueProgress((int) progresso); String arr2[] = arr[i].split("\t"); if (arr2.length == 8) { String strUrl = arr2[7];// URL /* int ap1 = Integer.parseInt(arr2[4]);// Aviso1 int ep1 = Integer.parseInt(arr2[1]);// Erro1 int ap2 = Integer.parseInt(arr2[5]);// Aviso2 int ep2 = Integer.parseInt(arr2[2]);// Erro2 int ap3 = Integer.parseInt(arr2[6]);// Aviso3 int ep3 = Integer.parseInt(arr2[3]);// Erro3 */ String myHash = arr2[0]; RelatorioDaUrl relatorio = new RelatorioDaUrl(); relatorio.recarregaArquivoRelatorioEmXml2(myHash); document.add(new Phrase("\n")); Font font = FontFactory.getFont(FontFactory.HELVETICA, Font.DEFAULTSIZE, Font.BOLD); Chunk url = new Chunk(strUrl, font); Paragraph p1 = new Paragraph(TradGeraRelatorioPDF.RELATORIO_URL); p1.add(url); p1.setAlignment(Paragraph.ALIGN_LEFT); document.add(p1); document.add(new Phrase("\n\n")); if (relatorio.getErrosPrioridade1() <= 0 && relatorio.getErrosPrioridade2() <= 0 && relatorio.getErrosPrioridade3() <= 0) { Paragraph p2 = new Paragraph(TradGeraRelatorioPDF.PAGINAS_SEM_ERROS); p2.setAlignment(Paragraph.ALIGN_CENTER); document.add(p2); } else { if (relatorio.getErrosPrioridade1() > 0) { Paragraph p = new Paragraph(TradGeraRelatorioPDF.ERROS_P1, font); p1.setAlignment(Paragraph.ALIGN_LEFT); document.add(p); document.add(new Chunk("\n")); PdfPTable table = geraLista(relatorio.getListaErrosP1()); if (table != null) { document.add(table); } document.add(new Phrase("\n\n")); } if (relatorio.getErrosPrioridade2() > 0) { Paragraph p = new Paragraph(TradGeraRelatorioPDF.ERROS_P2, font); p1.setAlignment(Paragraph.ALIGN_LEFT); document.add(p); document.add(new Chunk("\n")); PdfPTable table = geraLista(relatorio.getListaErrosP2()); if (table != null) { document.add(table); } document.add(new Phrase("\n\n")); } if (relatorio.getErrosPrioridade3() > 0) { Paragraph p = new Paragraph(TradGeraRelatorioPDF.ERROS_P3, font); p1.setAlignment(Paragraph.ALIGN_LEFT); document.add(p); document.add(new Chunk("\n")); PdfPTable table = geraLista(relatorio.getListaErrosP3()); if (table != null) { document.add(table); } document.add(new Phrase("\n\n")); } document.newPage(); } } } } writer.flush(); document.close(); } catch (DocumentException de) { log.error(de.getMessage(), de); PainelStatusBar.hideProgTarReq(); return false; } catch (IOException ioe) { log.error(ioe.getMessage(), ioe); PainelStatusBar.hideProgTarReq(); return false; } PainelStatusBar.hideProgTarReq(); return true; }
From source file:br.org.acessobrasil.silvinha.util.GeraRelatorioPDF.java
License:Open Source License
public static boolean geraRelatorio_bkp(File file, ResumoDoRelatorio resumo) { Document document = new Document(PageSize.A4); try {//from w ww .j a v a 2 s. co m PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file)); writer.setPageEvent(new HeaderAndFooter()); document.open(); ArrayList<RelatorioDaUrl> relatorios = resumo.getRelatorios(); loop: for (RelatorioDaUrl relatorio : relatorios) { document.add(new Phrase("\n")); Font font = FontFactory.getFont(FontFactory.HELVETICA, Font.DEFAULTSIZE, Font.BOLD); Chunk url = new Chunk(relatorio.getUrl(), font); Paragraph p1 = new Paragraph(TradGeraRelatorioPDF.RELATORIO_URL); p1.add(url); p1.setAlignment(Paragraph.ALIGN_LEFT); document.add(p1); document.add(new Phrase("\n\n")); if (relatorio.getErrosPrioridade1() <= 0 && relatorio.getErrosPrioridade2() <= 0 && relatorio.getErrosPrioridade3() <= 0) { Paragraph p2 = new Paragraph(TradGeraRelatorioPDF.PAGINAS_SEM_ERROS); p2.setAlignment(Paragraph.ALIGN_CENTER); document.add(p2); continue loop; } if (relatorio.getErrosPrioridade1() > 0) { Paragraph p = new Paragraph(TradGeraRelatorioPDF.ERROS_P1_SEM_TAB, font); p1.setAlignment(Paragraph.ALIGN_LEFT); document.add(p); document.add(new Chunk("\n")); PdfPTable table = geraLista(relatorio.getListaErrosP1()); if (table != null) { document.add(table); } document.add(new Phrase("\n\n")); } if (relatorio.getErrosPrioridade2() > 0) { Paragraph p = new Paragraph(TradGeraRelatorioPDF.ERROS_P2_SEM_TAB, font); p1.setAlignment(Paragraph.ALIGN_LEFT); document.add(p); document.add(new Chunk("\n")); PdfPTable table = geraLista(relatorio.getListaErrosP2()); if (table != null) { document.add(table); } document.add(new Phrase("\n\n")); } if (relatorio.getErrosPrioridade3() > 0) { Paragraph p = new Paragraph(TradGeraRelatorioPDF.ERROS_P3_SEM_TAB, font); p1.setAlignment(Paragraph.ALIGN_LEFT); document.add(p); document.add(new Chunk("\n")); PdfPTable table = geraLista(relatorio.getListaErrosP3()); if (table != null) { document.add(table); } document.add(new Phrase("\n\n")); } document.newPage(); } writer.flush(); document.close(); } catch (DocumentException de) { log.error(de.getMessage(), de); return false; } catch (IOException ioe) { log.error(ioe.getMessage(), ioe); return false; } return true; }
From source file:br.org.archimedes.io.pdf.PDFExporter.java
License:Open Source License
public void exportDrawing(Drawing drawing, OutputStream output) throws IOException { Rectangle rectangle = PageSize.A4.rotate(); Document document = new Document(rectangle); PdfWriter writer = null;//from w w w.ja va2 s.com try { writer = PdfWriter.getInstance(document, output); } catch (DocumentException e) { // Should never happen since I just created a new document. e.printStackTrace(); } document.open(); PdfContentByte cb = writer.getDirectContent(); PDFWriter pdf = new PDFWriter(cb, rectangle); pdf.write(drawing); document.close(); }
From source file:buckley.Pdf.java
License:Apache License
public Pdf(InputStream templateInputStream, OutputStream outputStream) { boolean errorOccured = false; try {// ww w . j a v a 2s . co m reader = new PdfReader(templateInputStream); document = new Document(reader.getPageSizeWithRotation(1)); writer = PdfWriter.getInstance(document, outputStream); pdfAcroForm = new PdfAcroForm(writer); document.open(); } catch (MalformedURLException e) { throw new RuntimeException(e); } catch (DocumentException e) { throw new RuntimeException(e); } catch (IOException e) { throw new RuntimeException(e); } finally { if (errorOccured) { close(); } } }
From source file:ca.sqlpower.architect.swingui.action.ExportPlaypenToPDFAction.java
License:Open Source License
@Override public void doStuff(MonitorableImpl monitor, Map<String, Object> properties) { logger.debug("Creating PDF of playpen: " + getPlaypen()); //This is the current play pen snapshot at the time of starting the worker //thread. This way the play pen doesn't change while it is printing. PlayPen pp = playPen;//from ww w.j ava 2s .com /* We translate the graphics to (OUTSIDE_PADDING, OUTSIDE_PADDING) * so nothing is drawn right on the edge of the document. So * we multiply by 2 so we can accomodate the translate and ensure * nothing gets drawn outside of the document size. */ final int width = pp.getBounds().width + 2 * OUTSIDE_PADDING; final int height = pp.getBounds().height + 2 * OUTSIDE_PADDING; final Rectangle ppSize = new Rectangle(width, height); OutputStream out = null; Document d = null; try { out = new BufferedOutputStream(new FileOutputStream((File) properties.get(FILE_KEY))); d = new Document(ppSize); d.addTitle(Messages.getString("ExportPlaypenToPDFAction.PdfTitle")); //$NON-NLS-1$ d.addAuthor(System.getProperty("user.name")); //$NON-NLS-1$ d.addCreator(Messages.getString("ExportPlaypenToPDFAction.powerArchitectVersion") //$NON-NLS-1$ + ArchitectVersion.APP_FULL_VERSION); PdfWriter writer = PdfWriter.getInstance(d, out); d.open(); PdfContentByte cb = writer.getDirectContent(); Graphics2D g = cb.createGraphicsShapes(width, height); // ensure a margin g.translate(OUTSIDE_PADDING, OUTSIDE_PADDING); PlayPenContentPane contentPane = pp.getContentPane(); for (int i = 0; i < contentPane.getChildren().size(); i++) { PlayPenComponent ppc = contentPane.getChildren().get(i); if (logger.isDebugEnabled()) { logger.debug("Painting component " + ppc); } g.translate(ppc.getLocation().x, ppc.getLocation().y); Font gFont = g.getFont(); ppc.paint(g); g.setFont(gFont); g.translate(-ppc.getLocation().x, -ppc.getLocation().y); monitor.setProgress(i); } pp.paintComponent(g); g.dispose(); } catch (Exception ex) { ASUtils.showExceptionDialog(getSession(), Messages.getString("ExportPlaypenToPDFAction.couldNotExportPlaypen"), //$NON-NLS-1$ ex); } finally { if (d != null) { try { d.close(); } catch (Exception ex) { ASUtils.showExceptionDialog(getSession(), Messages.getString("ExportPlaypenToPDFAction.couldNotCloseDocument"), //$NON-NLS-1$ ex); } } if (out != null) { try { out.flush(); out.close(); } catch (IOException ex) { ASUtils.showExceptionDialog(getSession(), Messages.getString("ExportPlaypenToPDFAction.couldNotClosePdfFile"), //$NON-NLS-1$ ex); } } } }
From source file:ca.sqlpower.matchmaker.swingui.action.ExportMungePenToPDFAction.java
License:Open Source License
@Override public void doStuff(MonitorableImpl monitor, Map<String, Object> properties) { if (!(session.getOldPane() instanceof MungeProcessEditor)) { JOptionPane.showMessageDialog(session.getFrame(), "We only allow PDF exports of the playpen at current.", "Cannot Export Playpen", JOptionPane.WARNING_MESSAGE); return;/*w ww . jav a2s . c o m*/ } MungePen mungePen = ((MungeProcessEditor) session.getOldPane()).getMungePen(); /* We translate the graphics to (OUTSIDE_PADDING, OUTSIDE_PADDING) * so nothing is drawn right on the edge of the document. So * we multiply by 2 so we can accomodate the translate and ensure * nothing gets drawn outside of the document size. */ final int width = mungePen.getBounds().width + 2 * OUTSIDE_PADDING; final int height = mungePen.getBounds().height + 2 * OUTSIDE_PADDING; final Rectangle ppSize = new Rectangle(width, height); OutputStream out = null; Document d = null; try { out = new BufferedOutputStream(new FileOutputStream((File) properties.get(FILE_KEY))); d = new Document(ppSize); d.addTitle("DQguru Transform PDF Export"); d.addAuthor(System.getProperty("user.name")); d.addCreator("DQguru version " + MatchMakerVersion.APP_VERSION); PdfWriter writer = PdfWriter.getInstance(d, out); d.open(); PdfContentByte cb = writer.getDirectContent(); Graphics2D g = cb.createGraphicsShapes(width, height); // ensure a margin g.translate(OUTSIDE_PADDING, OUTSIDE_PADDING); mungePen.paintComponent(g); int j = 0; //paint each component individually to show progress for (int i = mungePen.getComponentCount() - 1; i >= 0; i--) { JComponent mpc = (JComponent) mungePen.getComponent(i); //set text and foreground as paintComponent //does not normally do this g.setColor(mpc.getForeground()); g.setFont(mpc.getFont()); logger.debug("Printing " + mpc.getName() + " to PDF"); paintComponentAndChildren(mpc, g); monitor.setProgress(j); j++; } g.dispose(); } catch (Exception ex) { SPSUtils.showExceptionDialogNoReport(session.getFrame(), "Could not export the playpen", ex); } finally { if (d != null) { try { d.close(); } catch (Exception ex) { SPSUtils.showExceptionDialogNoReport(session.getFrame(), "Could not close document for exporting playpen", ex); } } if (out != null) { try { out.flush(); out.close(); } catch (IOException ex) { SPSUtils.showExceptionDialogNoReport(session.getFrame(), "Could not close pdf file for exporting playpen", ex); } } } }