Example usage for com.lowagie.text Document Document

List of usage examples for com.lowagie.text Document Document

Introduction

In this page you can find the example usage for com.lowagie.text Document Document.

Prototype


public Document(Rectangle pageSize) 

Source Link

Document

Constructs a new Document -object.

Usage

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);
            }
        }
    }
}