[JAVA] Erstellen Sie PDF mit itext7-freiem Layout: Tabelle-

Lassen Sie uns den Tisch frei arrangieren

Diesmal ist der Tisch frei angeordnet. Im vorherigen Absatz war die Position leicht verschoben, daher denke ich, dass dies eine Möglichkeit ist, die Zeichenfolgen in einer Tabelle mit einer Zelle anzuordnen.

Code sofort

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)Zu breit:50, height:Geben Sie 100 an
        Rectangle[] columns = {
                new Rectangle(100, 200, 400, 100), // x,y,width,height
        };
        document.setRenderer(new ColumnDocumentRenderer(document, columns));

        //Tabellendefinition: 3 Spalten mit einem Breitenverhältnis von 100:200:Bezeichnet als 300
        Table table = new Table(new float[]{100,200,300});
        table.setWidth(UnitValue.createPercentValue(100))
                .setTextAlignment(TextAlignment.CENTER)
                .setHorizontalAlignment(HorizontalAlignment.CENTER);

        //Tabellenkopfspezifikation
        Cell cell = new Cell();
        cell.add(new Paragraph("Header 1"));
        table.addCell(cell);
        Cell cell2 = new Cell();
        cell2.add(new Paragraph("Header 2"));
        table.addCell(cell2);
        Cell cell3 = new Cell();
        cell3.add(new Paragraph("Header 3"));
        table.addCell(cell3);

        //Geben Sie 3 Zeilen des Tabellenkörpers an
        for (int x = 0; x < 3; x++) {
            for (int y = 0; y < 3; y++) {
                table.addCell("Zelle" + x + "-" + y);
            }
        }

        //Spezifikation der Tabellenfußzeile
        table.addFooterCell("Fußzeile 1");
        table.addFooterCell("Fußzeile 2");
        table.addFooterCell("Fußzeile 3");

        //Geben Sie den Rahmen der Tabelle usw. an.
        Border border = new SolidBorder(ColorConstants.RED, 1.5f);
        table.setFont(font);
        table.setBorder(border);
        document.add(table);

        // (100, 200)Linie zu. Breite:400, height:Überprüfen Sie den Bereich von 100
        //Setzen Sie außerdem alle 100 eine Linie nach oben
        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();
    }
}

Erläuterung

Die Positionsangabe ist dieselbe wie beim letzten Mal. Um die Breite leicht verständlich zu machen, habe ich alle 100 einen Schritt gemacht.

Ausgabebild FreePosTable.jpg

Der Export ist die angegebene Position + angegebene Höhe.

Die Tabelle wird ebenso wie die Zeichenfolge aus der Höhe über der angegebenen Position angezeigt. Es scheint keine Lücke in der Tabelle zu geben.

Der Überschuss wird auf der nächsten Seite an derselben Position ausgegeben.

Die Linien, die ebenfalls hervorstehen, werden auf der nächsten Seite angezeigt. Die Kopfzeile scheint jedoch auf jeder Seite angezeigt zu werden.

Geben Sie die Spaltenbreite an

Table table = new Table (new float [] {100.200.300}); gibt an, dass 3 Spalten angegeben sind und das Verhältnis jeder Breite 100: 200: 300 beträgt. Die angegebene Breite beträgt 400, die Breite wird jedoch unabhängig davon als Prozentsatz festgelegt. Bei new float [] {1,2,3} wurde die Breite jedoch aus irgendeinem Grund gleich (Ist es so, als ob die alte Version erstellt wurde?). Auch bei new float [] {10,20,30} ist ein Fehler aufgetreten. Es ist gehabt. Warum. Derzeit scheint es, dass es mit einem etwas großen Wert angegeben werden sollte. ,

Recommended Posts

Erstellen Sie PDF mit itext7-freiem Layout: Tabelle-
Erstellen Sie PDF mit itext7-freiem Layout: Text-
Erstellen Sie PDF mit itext7 ~ HelloWorld ~
Versuchen Sie es mit Trailblazer
Java fügt PDF eine Tabelle hinzu
Paging PDF mit Java + PDFBox.jar
Ausgabe neunundneunzig mit Stream
Erstellen Sie einen Spielplatz mit Xcode 12
Erstellen Sie eine Tabelle und fügen Sie Spalten hinzu
Erstellen Sie mit Spring Boot einen Mikrodienst