[JAVA] Créez un PDF avec la mise en page itext7-Free:

Disposons la table librement

Cette fois, la table est librement disposée. Dans le paragraphe précédent, la position était légèrement décalée, donc je pense que c'est une façon d'organiser les chaînes de caractères dans un tableau avec une cellule.

Coder immédiatement

FreePosTable.java


import com.itextpdf.kernel.colors.ColorConstants;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
import com.itextpdf.layout.ColumnDocumentRenderer;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.borders.Border;
import com.itextpdf.layout.borders.SolidBorder;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.property.HorizontalAlignment;
import com.itextpdf.layout.property.TextAlignment;
import com.itextpdf.layout.property.UnitValue;

public class FreePosTable {
    public static void main(String[] args) throws Exception {
        PdfDocument pdf = new PdfDocument(new PdfWriter("FreePosTable.pdf"));
        PageSize ps = PageSize.A4.rotate();
        PdfPage page = pdf.addNewPage(ps);
        PdfCanvas canvas = new PdfCanvas(page);

        
        //Heisei Kaku Gothic
        PdfFont font = PdfFontFactory.createFont("HeiseiKakuGo-W5", "UniJIS-UCS2-H");
 

        // Initialize document
        Document document = new Document(pdf);
 
        // (100, 200)À la largeur:50, height:Spécifiez 100
        Rectangle[] columns = {
                new Rectangle(100, 200, 400, 100), // x,y,width,height
        };
        document.setRenderer(new ColumnDocumentRenderer(document, columns));

        //Définition du tableau: 3 colonnes avec un rapport de largeur de 100:200:Désigné comme 300
        Table table = new Table(new float[]{100,200,300});
        table.setWidth(UnitValue.createPercentValue(100))
                .setTextAlignment(TextAlignment.CENTER)
                .setHorizontalAlignment(HorizontalAlignment.CENTER);

        //Spécification d'en-tête de table
        Cell cell = new Cell();
        cell.add(new Paragraph("En-tête 1"));
        table.addCell(cell);
        Cell cell2 = new Cell();
        cell2.add(new Paragraph("En-tête 2"));
        table.addCell(cell2);
        Cell cell3 = new Cell();
        cell3.add(new Paragraph("En-tête 3"));
        table.addCell(cell3);

        //Spécifiez 3 lignes de corps de tableau
        for (int x = 0; x < 3; x++) {
            for (int y = 0; y < 3; y++) {
                table.addCell("cellule" + x + "-" + y);
            }
        }

        //Spécification du pied de table
        table.addFooterCell("Pied de page 1");
        table.addFooterCell("Pied de page 2");
        table.addFooterCell("Pied de page 3");

        //Spécifiez le cadre du tableau, etc.
        Border border = new SolidBorder(ColorConstants.RED, 1.5f);
        table.setFont(font);
        table.setBorder(border);
        document.add(table);

        // (100, 200)Ligne vers. largeur:400, height:Vérifiez la plage de 100
        //Aussi, mettez une ligne tous les 100 en haut
        canvas.moveTo(0, 0).lineTo(100, 200).lineTo(500, 200)
        .lineTo(500, 310).moveTo(500, 300)
        .lineTo(400, 300).lineTo(400, 310).moveTo(400, 300)
        .lineTo(300, 300).lineTo(300, 310).moveTo(300, 300)
        .lineTo(200, 300).lineTo(200, 310).moveTo(200, 300)
        .lineTo(100, 300).lineTo(100, 310).moveTo(100, 300)
        .stroke();

        //Close document
        document.close();
    }
}

La description

La spécification de position est la même que la dernière fois. Afin de rendre la largeur facile à comprendre, j'ai fait un pas sur 100.

Image de sortie FreePosTable.jpg

L'exportation est la position spécifiée + la hauteur spécifiée.

Le tableau est également affiché à partir de la hauteur au-dessus de la position spécifiée de la même manière que la chaîne de caractères. Il ne semble y avoir aucun vide dans le tableau.

L'excédent est sorti à la même position sur la page suivante.

Les lignes qui dépassent également sont affichées sur la page suivante. Cependant, le pied de page de l'en-tête semble être affiché sur chaque page.

Spécifiez la largeur de la colonne

Table table = new Table (new float [] {100,200,300}); indique que 3 colonnes sont spécifiées et que le rapport de chaque largeur est de 100: 200: 300. La largeur spécifiée est 400, mais la largeur est définie sous forme de pourcentage indépendamment de cela. Cependant, avec new float [] {1,2,3}, la largeur est devenue la même pour une raison quelconque (Est-ce que c'est comme si l'ancienne version avait été faite?) De plus, avec new float [] {10,20,30}, une erreur s'est produite. C'est eu. Pourquoi. Pour le moment, il semble qu'il devrait être spécifié avec une valeur assez élevée. ,

Recommended Posts

Créez un PDF avec la mise en page itext7-Free:
Créer un PDF avec la mise en page itext7-Free: Texte-
Créez un PDF avec itext7 ~ HelloWorld ~
Essayez de créer avec Trailblazer
Java ajoute un tableau au PDF
Pagination de PDF avec Java + PDFBox.jar
Sortie quatre-vingt-dix-neuf avec Stream
Créez un terrain de jeu avec Xcode 12
Créer un tableau et ajouter des colonnes
Créer un micro service avec Spring Boot