Example usage for org.apache.pdfbox.pdmodel PDPage PDPage

List of usage examples for org.apache.pdfbox.pdmodel PDPage PDPage

Introduction

In this page you can find the example usage for org.apache.pdfbox.pdmodel PDPage PDPage.

Prototype

public PDPage() 

Source Link

Document

Creates a new PDPage instance for embedding, with a size of U.S.

Usage

From source file:se.streamsource.streamflow.web.application.pdf.PdfDocument.java

License:Apache License

public void init() {
    try {//  www. ja v  a  2 s. c  om
        pdf = new PDDocument();

        PDPage page = new PDPage();

        pdf.addPage(page);
        page.setMediaBox(pageSize);
        maxStringLength = page.getMediaBox().getWidth() - (leftMargin + rightMargin);

        contentStream = new PDPageContentStream(pdf, page);
        contentStream.beginText();

        y = page.getMediaBox().getHeight() - headerMargin;
        contentStream.moveTextPositionByAmount(leftMargin, y);

    } catch (IOException e) {
        try {
            if (contentStream != null) {
                contentStream.close();
            }
        } catch (IOException ioe) {
            contentStream = null;
        }
        throw new IllegalStateException(e.getMessage());
    }
}

From source file:se.streamsource.streamflow.web.application.pdf.PdfDocument.java

License:Apache License

private void pageBreakIfNeeded(PdfFont font) throws IOException {
    if (y - font.height < footerMargin) {
        PDPage newPage = new PDPage();
        newPage.setMediaBox(pageSize);// w ww.j  a va2 s  .c  o  m
        if (contentStream != null) {
            contentStream.endText();
            //Drawing all lines here after complete filling page
            if (this.pageLines.size() > 0) {
                for (ListIterator<LineObject> itr = pageLines.listIterator(); itr.hasNext();) {
                    LineObject lineObject = itr.next();
                    this.line(lineObject.getEndX(), lineObject.getyPosition(), lineObject.getColor());
                    itr.remove();
                }
            }
            contentStream.close();
        }
        pdf.addPage(newPage);
        contentStream = new PDPageContentStream(pdf, newPage);
        y = newPage.getMediaBox().getHeight() - headerMargin - font.height;
        contentStream.beginText();
        contentStream.moveTextPositionByAmount(leftMargin, y);
    }
}

From source file:so.rezervacija.StampajRezervaciju.java

@Override
protected void izvrsiKonkretnuOperaciju() throws Exception {
    PDDocument doc = null;/* w  w  w  .  j ava 2  s.  com*/
    PDPage page = null;

    try {
        doc = new PDDocument();
        page = new PDPage();

        doc.addPage(page);
        PDFont pdfFont = PDType1Font.HELVETICA_BOLD;
        float fontSize = 25;
        float leading = 1.5f * fontSize;

        PDPageContentStream contentStream = new PDPageContentStream(doc, page);

        PDRectangle mediabox = page.findMediaBox();
        float margin = 72;
        float width = mediabox.getWidth() - 2 * margin;
        float startX = mediabox.getLowerLeftX() + margin;
        float startY = mediabox.getUpperRightY() - margin;

        String text = "Izvrsili ste rezervaciju za tretman " + r.getTretman() + ", vreme rezervacije:"
                + new SimpleDateFormat("YYYY-MM-dd HH:mm").format(r.getVreme())
                + " zaposleni koji ce vrsiti tretman:" + r.getZaposleni().getImePrezime();
        List<String> lines = new ArrayList<String>();
        int lastSpace = -1;
        while (text.length() > 0) {
            int spaceIndex = text.indexOf(' ', lastSpace + 1);
            if (spaceIndex < 0) {
                lines.add(text);
                text = "";
            } else {
                String subString = text.substring(0, spaceIndex);
                float size = fontSize * pdfFont.getStringWidth(subString) / 1000;
                if (size > width) {
                    if (lastSpace < 0) // So we have a word longer than the line... draw it anyways
                    {
                        lastSpace = spaceIndex;
                    }
                    subString = text.substring(0, lastSpace);
                    lines.add(subString);
                    text = text.substring(lastSpace).trim();
                    lastSpace = -1;
                } else {
                    lastSpace = spaceIndex;
                }
            }
        }

        contentStream.beginText();
        contentStream.setFont(pdfFont, fontSize);
        contentStream.moveTextPositionByAmount(startX, startY);
        for (String line : lines) {
            contentStream.drawString(line);
            contentStream.moveTextPositionByAmount(0, -leading);
        }
        contentStream.endText();
        contentStream.close();

        doc.save("PotvrdaRezervacije.pdf");

        if (Desktop.isDesktopSupported()) {
            try {
                File myFile = new File("../ServerProjekat/PotvrdaRezervacije.pdf");
                Desktop.getDesktop().open(myFile);
            } catch (IOException ex) {
                // no application registered for PDFs
            }
        }

        doc.close();
    } catch (Exception e) {
        System.out.println(e);
    }
}

From source file:src.view.controller.MainController.java

public void testAddImage() {
    try {/*from  w w w  .  j  a va 2  s  . com*/
        ImageController imageController = new ImageController();

        // Chargement du document
        File file = new File(TEST_DOC_TITLE + ".pdf");
        PDDocument document = PDDocument.load(file);

        document.addPage(new PDPage());

        PDPageContentStream contentStream = new PDPageContentStream(document,
                document.getPage(document.getNumberOfPages() - 1), PDPageContentStream.AppendMode.APPEND, true);

        // Ajout d'une image sur la deuxime page
        imageController.addImage(document, contentStream, TEST_IMG_NAME, 100, 400, 0.2f);

        contentStream.close();

        document.save(TEST_DOC_TITLE + ".pdf");
        document.close();

        System.out.println(TRANSLATOR.getString("TEST_IMAGE_ADDED"));
    } catch (IOException e) {
        System.out.println(e.toString());
    }
}

From source file:src.view.controller.MainController.java

public void testAddTable() {
    try {//from w  ww.jav a2 s.c  o m
        TableController tableController = new TableController();

        // Chargement du document
        File file = new File(TEST_DOC_TITLE + ".pdf");
        PDDocument document = PDDocument.load(file);

        document.addPage(new PDPage());

        PDPageContentStream contentStream = new PDPageContentStream(document,
                document.getPage(document.getNumberOfPages() - 1), PDPageContentStream.AppendMode.APPEND, true);

        // Instanciation d'un tableau
        Table table = new Table(100, 600, 200, 200);
        // Gnration du tableau
        table.generateTable(2, 7);
        table.addColumns(2);

        // Rcupration d'une cellule
        Cell cell = table.getCell(0);
        // Initialisation du contenu
        cell.setContent("TEST");
        // Affichage du contenu dans la cellule
        tableController.printCellContent(contentStream, cell, "center", "middle");

        // Ajout d'un tableau
        tableController.printTable(contentStream, table, false);

        contentStream.close();
        document.save(TEST_DOC_TITLE + ".pdf");

        System.out.println(TRANSLATOR.getString("TEST_TABLE_ADDED"));
    } catch (IOException e) {
        System.out.println(e.toString());
    }
}

From source file:src.view.controller.menu.MenuDocument.java

/**
 * Bouton d'ajout de page au document en cours
 *///from w w  w  .  j  a  v a 2 s  . c  o m
public static void btnDocumentAddPage() {
    PDDocument document = INSTANCE.getDocFileOpened().getDocument();
    document.addPage(new PDPage());
    Displayer.addPageOpenedTab();
    System.out.println(TRANSLATOR.getString("PAGE_ADD_SUCCESS"));
}

From source file:st.schoepfer.dicom2pdf.pdf.handler.PdfFileHandler.java

private void loadPDFFile() {
    // Laded die gewnschte Datei.
    // Wenn dabei ein Fehler auftritt wird ein neues Dokument mit einer leeren Seite geladen.
    try {//from   ww  w .j  ava  2  s  .  c o m
        this.aFile = PDDocument.load(this.FileName);
    } catch (Exception ex) {
        this.aFile = new PDDocument();
        this.aFile.addPage(new PDPage());
    }
}

From source file:stepReport.reports.model.savePDFModel.java

public void savePDFSemanal(File file, String[][] matrizDados) {

    if (matrizDados == null)
        return;/*from ww  w . j  a  v a 2  s  . c  om*/

    //Cria o documento
    PDDocument document = new PDDocument();

    //Vou criando as paginas dinamicamente de acordo com o numero de registros a serem impressos.
    //Para cada 25 registros, crio uma nova pagina
    //O valor de k vai ser atualizado durante o loop de impressao de registros,
    //assim como o loop de impressao de registro comeca a partir do valor de k
    int k = 1;
    int pagina = 0;
    while (k < matrizDados.length) {
        //Variavel com o numero da pagina
        pagina++;
        //Adiciona uma pagina
        PDPage page = new PDPage();
        //Configura o padrao de tamanho da pagina
        page.setMediaBox(PDRectangle.A4);
        //Configura a orientacao
        page.setRotation(90);
        //Adiciona a pagina ao documento
        document.addPage(page);
        PDFont font;
        //Obtem a largura da pagina
        float pageWidth = page.getMediaBox().getWidth();

        try {
            //abre o buffer pra edicao da pagina
            PDPageContentStream contentStream = new PDPageContentStream(document, page);
            //Gira a pagina em 90 graus
            contentStream.transform(new Matrix(0, 1, -1, 0, pageWidth, 0));

            PDImageXObject pdImage = PDImageXObject.createFromFile("./step2.png", document);

            contentStream.drawImage(pdImage, 30, 520);

            //Define a cor da letra
            contentStream.setNonStrokingColor(Color.BLACK);
            //Abre pra edicao escrita
            contentStream.beginText();

            //Configura a fonte de titulo e o tamanho no buffer
            font = PDType1Font.COURIER_BOLD;
            contentStream.setFont(font, 18);
            contentStream.setLeading(14.5f);

            contentStream.newLineAtOffset(250, 530);
            contentStream.showText("Resumo de Horas semanais");

            //Imprime o numero da pagina
            font = PDType1Font.COURIER;
            contentStream.setFont(font, 12);

            contentStream.newLineAtOffset(490, 0);
            contentStream.showText("Pag " + Integer.toString(pagina));

            //Define o ponto de partida em X e Y
            contentStream.newLineAtOffset(-700, -50);
            //Define a fonte do cabecalho
            font = PDType1Font.COURIER_BOLD;
            contentStream.setFont(font, 12);
            //carrega o cabecalho com nome, profissao, itera pra cada data da semana e depois o total
            String titulo = StringUtils.rightPad("Nome", 20) + StringUtils.rightPad("Profissao", 16);
            for (int i = 2; i < matrizDados[0].length; i++)
                titulo += matrizDados[0][i] + "  ";

            //Escreve o cabecalho
            contentStream.showText(titulo);
            //Troca a fonte pra normal
            font = PDType1Font.COURIER;
            contentStream.setFont(font, 12);
            //TODO criar loop duplo para criar pagina e depois imprimir o dado enquanto houver dados a serem impressos
            contentStream.newLine();

            //Para cada linha da matriz recebida, vou formatar os campos nome, profissao, cada data da semana e o total pra imprimir na linha
            //Tenho que comecar a partir de k porque pode nao ser a primeira pagina. 

            //Configuro o limite baseado se eu estou ou nao na ultima pagina
            int limite = (k + savePDFModel.REGISTROS_PAGINA < matrizDados.length - 1)
                    ? savePDFModel.REGISTROS_PAGINA
                    : matrizDados.length - k;

            for (int i = 0; i < limite; i++) {
                String nome = this.formatName(matrizDados[i + k][0]);
                String profissao = this.formatProfissao(matrizDados[i + k][1]);
                String linha = nome + profissao;
                for (int j = 2; j < matrizDados[i].length; j++)
                    linha += StringUtils.rightPad(matrizDados[i + k][j], 10);

                contentStream.showText(linha);
                contentStream.newLine();
            }
            k += limite;

            //Imprime o total em negrito quando chega no final
            System.out.println(k);
            if (k >= matrizDados.length) {
                font = PDType1Font.COURIER_BOLD;
                contentStream.setFont(font, 12);
                Double[] totais = new Double[matrizDados[0].length - 2];
                for (int i = 0; i < totais.length; i++)
                    totais[i] = 0.0;

                for (int i = 1; i < matrizDados.length; i++) {
                    for (int j = 2; j < matrizDados[i].length; j++) {
                        if (!matrizDados[i][j].equals(""))
                            totais[j - 2] += Double.parseDouble(matrizDados[i][j]);
                    }
                }
                String linhaTot = StringUtils.rightPad("Totais", 36);
                for (int i = 0; i < totais.length; i++) {
                    linhaTot += StringUtils.rightPad(totais[i].toString(), 10);
                }
                contentStream.showText(linhaTot);
                //Imprime a linha de assinatura
                this.signatureLine(contentStream);
            }
            contentStream.endText();
            contentStream.close();

        } catch (javax.imageio.IIOException ex) {
            JOptionPane.showMessageDialog(new JFrame(), "Imagem step2.png no encontrada");
            return;
        } catch (IOException ex) {
            Logger.getLogger(savePDFModel.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    try {
        //Esse save vai dentro do loop?
        document.save(file);
        document.close();
    } catch (IOException ex) {
        Logger.getLogger(savePDFModel.class.getName()).log(Level.SEVERE, null, ex);
    }
}

From source file:swp.bibjsf.renderer.Printer.java

License:Apache License

/**
 * Creates a PDF document containing the ID cards for <code>idcontent</code>.
 *
 * @param idcontent idcontent data of readers whose ID card is to be printed
 * @return PDF document containing the ID cards
 * @throws IOException thrown if document cannot be created
 *///from  www .  j a  v a  2  s.  c om
protected PDDocument createDocument(List<Content> idcontent) throws IOException {
    // Create a document and add a page to it
    PDDocument document = new PDDocument();
    PDPage page = new PDPage();
    page.setMediaBox(PDPage.PAGE_SIZE_A4);
    document.addPage(page);

    int rowNumber = 0;
    int columnNumber = 0;
    // print numberOfCardsPerColumn x numberOfCardsPerRow cards per A4 page
    for (Content data : idcontent) {
        // System.out.println("IDCardPrinter.createDocument() " + columnNumber + " " + rowNumber);
        printCard(document, page, columnNumber, rowNumber, data);
        columnNumber++;
        if (columnNumber % numberOfCardsPerRow() == 0) {
            // start new row
            rowNumber++;
            columnNumber = 0;
        }
        if (rowNumber == numberOfCardsPerColumn()) {
            // start new page
            page = new PDPage();
            page.setMediaBox(PDPage.PAGE_SIZE_A4);
            document.addPage(page);
            rowNumber = 0;
        }
    }
    return document;
}

From source file:uia.pdf.PDFMakerTest.java

License:Apache License

@Test
public void justTest() throws Exception {
    PDDocument doc = new PDDocument();
    try {/*from w w w  .  j  a va 2  s .c  om*/
        PDPage page = new PDPage();
        doc.addPage(page);

        PDPageContentStream contents = new PDPageContentStream(doc, page, AppendMode.APPEND, false, false);
        contents.moveTo(20, 650);
        contents.lineTo(500, 650);
        contents.stroke();
        contents.close();

        PDImageXObject pdImage = PDImageXObject
                .createFromFile(PDFMakerTest.class.getResource("sample.jpg").getFile(), doc);
        contents = new PDPageContentStream(doc, page, AppendMode.APPEND, false, false);
        contents.drawImage(pdImage, 20, 700);
        contents.close();

        contents = new PDPageContentStream(doc, page, AppendMode.APPEND, false, false);
        contents.moveTo(20, 550);
        contents.lineTo(500, 550);
        contents.stroke();
        contents.close();

        doc.save("C:\\TEMP\\IMAGE.PDF");
    } finally {
        doc.close();
    }

}