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.
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();
}
}
Die Positionsangabe ist dieselbe wie beim letzten Mal. Um die Breite leicht verständlich zu machen, habe ich alle 100 einen Schritt gemacht.
Ausgabebild
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.
Die Linien, die ebenfalls hervorstehen, werden auf der nächsten Seite angezeigt. Die Kopfzeile scheint jedoch auf jeder Seite angezeigt zu werden.
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