64 votes

Comment insérer des lignes vides dans un PDF à l'aide d'iText ?

Je crée un PDF en utilisant iText. Je veux insérer des lignes vides entre les paragraphes et les tableaux. Je n'ai pas trouvé comment le faire. Quelqu'un peut-il m'aider ?

0 votes

Avez-vous essayé d'insérer des chaînes vierges ? Littéralement " " .

0 votes

@Beemer : C'est la première chose que j'ai essayée également, mais les chaînes vides n'apparaissent tout simplement pas. J'ai essayé de les ajouter en tant que chaînes vides et en tant que nouveaux paragraphes vides. La solution que j'ai ajoutée ci-dessous est la première chose que j'ai trouvée qui fonctionne.

0 votes

@Bill the Lizard ; Je suppose que iText ignore toute chaîne vide ou comportant des espaces blancs. C'est bon à savoir. Merci !

108voto

Bill the Lizard Points 147311

Vous pouvez déclencher une nouvelle ligne en insérant Chunk.NEWLINE dans votre document. Voici un exemple.

public static void main(String args[]) {
    try {
        // create a new document
        Document document = new Document( PageSize.A4, 20, 20, 20, 20 );
        PdfWriter.getInstance( document, new FileOutputStream( "HelloWorld.pdf" ) );

        document.open();

        document.add( new Paragraph( "Hello, World!" ) );
        document.add( new Paragraph( "Hello, World!" ) );

        // add a couple of blank lines
        document.add( Chunk.NEWLINE );
        document.add( Chunk.NEWLINE );

        // add one more line with text
        document.add( new Paragraph( "Hello, World!" ) );

        document.close();
    }
    catch (Exception e) {
        e.printStackTrace();
    }
}

Vous trouverez ci-dessous une capture d'écran montrant une partie du PDF produit par le code ci-dessus.

Hello PDF with blank lines inserted

0 votes

public static final Chunk NEWLINE = new Chunk("\n"); . Jes avait raison, tout comme vous. BTW : add(new Chunk(" \n\n\n ") devrait produire trois nouvelles lignes, mais je ne l'ai pas testé.

29voto

rgksugan Points 1013

Et pour insérer une ligne blanche entre les tableaux, vous pouvez utiliser ces deux méthodes.

table.setSpacingBefore();      

table.setSpacingAfter();

0 votes

Au moins dans la version 5.1.1 d'iText#, ces méthodes ne semblent pas exister, mais il existe des propriétés : SpacingBefore et SpacingAfter .

3 votes

C'est beaucoup plus utile que Chunk.NEWLINE si vous utilisez des tableaux.

8voto

umanganiello Points 370

Vous pouvez essayer une phrase vide :

document.add(new Phrase("\n"));

5voto

Ranvijay Points 72
you can add Blank Line threw PdfContentByte class in itextPdf

package com.pdf.test;

import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;

import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;

public class Ranvijay {

    public static final String RESULT = "d:/printReport.pdf";

    public void createPdf(String filename) throws Exception {
        Document document = new Document();
        PdfWriter writer = PdfWriter.getInstance(document,
                new FileOutputStream(filename));
        document.open();

        Font bold = new Font(Font.FontFamily.HELVETICA, 8f, Font.BOLD);
        Font normal = new Font(Font.FontFamily.HELVETICA, 8f, Font.NORMAL);
        PdfPTable tabletmp = new PdfPTable(1);
        tabletmp.getDefaultCell().setBorder(Rectangle.NO_BORDER);
        tabletmp.setWidthPercentage(100);
        PdfPTable table = new PdfPTable(2);
        float[] colWidths = { 45, 55 };
        table.setWidths(colWidths);
        String imageUrl = "http://ssl.gstatic.com/s2/oz/images/logo/2x/googleplus_color_33-99ce54a16a32f6edc61a3e709eb61d31.png";
        Image image2 = Image.getInstance(new URL(imageUrl));
        image2.setWidthPercentage(60);
        table.getDefaultCell().setBorder(Rectangle.NO_BORDER);
        table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
        table.getDefaultCell().setVerticalAlignment(Element.ALIGN_TOP);
        PdfPCell cell = new PdfPCell();
        cell.setBorder(Rectangle.NO_BORDER);
        cell.addElement(image2);
        table.addCell(cell);
        String email = "ranvijay9286@gmail.com";
        String collectionDate = "09/09/09";
        Chunk chunk1 = new Chunk("Date: ", normal);
        Phrase ph1 = new Phrase(chunk1);

        Chunk chunk2 = new Chunk(collectionDate, bold);
        Phrase ph2 = new Phrase(chunk2);

        Chunk chunk3 = new Chunk("\nEmail: ", normal);
        Phrase ph3 = new Phrase(chunk3);

        Chunk chunk4 = new Chunk(email, bold);
        Phrase ph4 = new Phrase(chunk4);

        Paragraph ph = new Paragraph();
        ph.add(ph1);
        ph.add(ph2);
        ph.add(ph3);
        ph.add(ph4);

        table.addCell(ph);
        tabletmp.addCell(table);
        PdfContentByte canvas = writer.getDirectContent();
        canvas.saveState();
        canvas.setLineWidth((float) 10 / 10);
        canvas.moveTo(40, 806 - (5 * 10));
        canvas.lineTo(555, 806 - (5 * 10));
        canvas.stroke();
        document.add(tabletmp);
        canvas.restoreState();
        PdfPTable tabletmp1 = new PdfPTable(1);
        tabletmp1.getDefaultCell().setBorder(Rectangle.NO_BORDER);
        tabletmp1.setWidthPercentage(100);

        document.add(tabletmp1);

        document.close();
    }

    /**
     * Main method.
     * 
     * @param args
     *            no arguments needed
     * @throws DocumentException
     * @throws IOException
     */
    public static void main(String[] args) throws Exception {
        new Ranvijay().createPdf(RESULT);
        System.out.println("Done Please check........");
    }

}

2voto

Adel Points 100

Vous pouvez ajouter une ligne vide ;

 Paragraph p = new Paragraph();
 // add one empty line
  addEmptyLine(p, 1);
 // add 3 empty line
  addEmptyLine(p, 3);

private static void addEmptyLine(Paragraph paragraph, int number) {
    for (int i = 0; i < number; i++) {
      paragraph.add(new Paragraph(" "));
    }
  }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X