So ändern Sie die Breite einer Zelle?
Ich brauche Eure Hilfe, einstellen der Länge der Zelle nach unten an den Rand. Derzeit zeigt Sie den unteren Rand einer Zelle zu lang und ich muss kürzen. Ich habe versucht, ändern Sie die Breite der Tabelle, aber es kommt nicht richtig.
Unten ist der code:
Paragraph tableParagraph = new Paragraph();
tableParagraph.setAlignment(Element.ALIGN_LEFT);
PdfPTable table55 = new PdfPTable(2);
table55 = new PdfPTable(new float[] { 6, 6 });
table55.setWidthPercentage(90f);
table55.getDefaultCell().setBorder(PdfPCell.NO_BORDER);
PdfPCell cel2a = new PdfPCell(new Paragraph("Total of Net Profit ", font));
PdfPCell cel2b = new PdfPCell(new Paragraph("100.000" + " USD ", font));
cel2a.setBorder(Rectangle.NO_BORDER);
cel2b.setBorder(Rectangle.BOTTOM);
cel2a.setLeading(1f, 1.5f);
cel2b.setLeading(1f, 1.5f);
table55.addCell(cel2a);
table55.addCell(cel2b);
Die Länge der unteren Grenze einer Zelle ist identisch mit der Breite der Zelle. Wenn Sie möchten, zu ändern, die Länge ist, müssen Sie entweder ändern Sie die Breite der Zelle (derzeit ist es die Hälfte von 90% der Seitenbreite abzüglich der linken und rechten Rand), oder... wenn Sie nicht wollen, ändern Sie die Breite der Zelle, der Zellen verwenden, Ereignisse zu zeichnen, die Grenze mit Ihrem eigenen code. Also sagen Sie uns: möchten Sie ändern die Breite der Zelle? Wenn nicht: was sollte die Länge der unteren Grenze?
Auf einer anderen Anmerkung, Sie sollten entfernen Sie diese Zeile:
Ist die erste nicht, die 6 in den code table55 = new PdfPTable(new float[] { 6, 6 }); bezieht sich auf die erste Zelle der Breite?
Die Linie
Also sagen Sie mir: wollen Sie ändern die Breite der Zelle? Oder wollen Sie die Breite der Zelle, und ändern Sie die Länge von der unteren Grenze? Ohne eine Antwort auf diese Frage kann ich nicht schreiben eine Antwort auf Ihre.
Auf einer anderen Anmerkung, Sie sollten entfernen Sie diese Zeile:
table55.getDefaultCell().setBorder(PdfPCell.NO_BORDER);
Sie nicht mit den Standard-Zelle überall in Ihrem code. Stattdessen erstellen Sie Ihre eigenen PdfPCell
Instanzen. Mit der Standard-Zelle macht nur Sinn, wenn Sie hinzufügen von Zellen wie diese: table.addCell("cell content").
In diesem Fall, iText erstellt eine PdfPCell
basierend auf den Eigenschaften der Standard-Zelle.Ist die erste nicht, die 6 in den code table55 = new PdfPTable(new float[] { 6, 6 }); bezieht sich auf die erste Zelle der Breite?
Die Linie
table55 = new PdfPTable(new float[] { 6, 6 });
ist das äquivalent von table55 = new PdfPTable(2);
Durch die Verwendung des Parameters new float[] { 6, 6 }
Sie nicht definieren Sie die Breite der Spalten! Sie nur sagen, iText, wollen Sie zwei Spalten mit gleicher Breite. Jeder Messung ist die Hälfte von 90% der verfügbaren Breite an. Bitte Lesen Sie die Dokumentation.Also sagen Sie mir: wollen Sie ändern die Breite der Zelle? Oder wollen Sie die Breite der Zelle, und ändern Sie die Länge von der unteren Grenze? Ohne eine Antwort auf diese Frage kann ich nicht schreiben eine Antwort auf Ihre.
InformationsquelleAutor 99maas | 2015-08-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es verschiedene Möglichkeiten zum definieren der Breite einer Zelle. Erklären die verschiedenen Optionen, die wir zu sprechen haben, über die Festlegung der Breite der Tabelle (alle Spalten), die erste, und dann sprechen Sie über die Definition der Breite der einzelnen Spalten.
Breite des Tisches:
Option 1: Sie definieren nicht die absolute Breite.
Stattdessen Fragen Sie iText zum berechnen der Breite basierend auf den verfügbaren Raum. Der verfügbare Platz wird die Breite der Seite minus der Größe des linken und den rechten Rand.
Wenn Sie ein Dokument erstellen, wie diese:
Dann die Breite der Seite ist 595 Benutzer-Einheiten (das ist die Breite einer A4-Seite) und die Breite der Ränder ist 36 Benutzer-Einheiten (dies sind die Standardwerte, wenn Sie nicht definieren, die Seitenränder explizit). Daher ist die verfügbare Breite 523 Benutzer Einheiten.
Wenn du definieren Sie Ihre Tabelle so Aussehen:
dann wird die Tabelle bis 80% der verfügbaren Breite, wenn Sie fügen Sie diese Tabelle in eine Seite ein. Wenn es also eine Breite von 523, die Breite der Tabelle wird 418.4 Benutzer Einheiten.
Können Sie dies ändern, indem Sie die Breite Prozentsatz. Zum Beispiel, wenn Sie hinzufügen:
dann 100% der verfügbaren Breite verwendet werden, und Ihre Tabelle wird 523 Benutzer-Einheiten breit.
Option 2: definieren Sie die absolute Breite.
Nehme an, dass Sie aufgefordert werden, erstellen Sie eine Tabelle mit einer Breite von 4 cm. Vom Standard-1-Zoll-72 Benutzer-Einheiten, so benötigen Sie eine Tabelle von 288 Benutzer-Einheiten.
Erreicht werden kann dies so:
Wenn Sie vergessen, die Zeile
table.setLockedWidth(true);
dann iText wird davon ausgegangen, dass Sie wollen, iText zum berechnen der Breite auf der Grundlage der (Standard -) Breite Prozentsatz und die zur Verfügung stehende Breite. Sperren der Breite, Schalter iText verwenden die gesamte Breite als eine absolute Breite.Breite von Spalten:
Fall 1: relative breiten
Wenn Sie nicht definieren, jeder Breite, jeder Spalte haben die gleiche Breite. Diese Breite wird berechnet durch Division der Breite der Tabelle durch die Anzahl der Spalten. E. g. wenn die Breite der Tabelle 288 Benutzer-Einheiten, und wenn die Tabelle hat zwei Spalten, jede Spalte 144 Benutzer Einheiten.
Angenommen, Sie wollen die zweite Spalte, die drei mal so breit wie die erste Spalte, die Sie ändern können, die relative Breite der Spalten so:
oder, wenn Sie möchten, verwenden Sie nur eine Zeile:
Wenn die Breite der
table
288, die Breite der ersten Spalte wird jetzt 72, und die Breite der zweiten Spalte wird 216.Erhalten Sie das gleiche Ergebnis, wenn Sie dies tun:
Die breiten sind relative Werte.
{ 1, 3 }
ist das äquivalent von{ 25, 75 }
.Du hast etwas seltsames:
In der ersten Zeile erstellen Sie eine Tabelle mit zwei Spalten gleich Breite
new PdfPTable(2)
, aber Sie benutzen Sie nie, dassPdfPTable(2)
, weil in der zweiten Zeile, die Sie definieren dentable55
variable alsnew PdfPTable(new float[]{ 6, 6 } )
.Als
{ 6, 6 }
sind relative Werte, dies entspricht{ 50, 50 }
oder{ 1, 1 }
... Du erstellst eine Tabelle mit zwei Spalten mit gleicher Breite.Fall 2: absolute breiten
Nehme an, dass Sie nicht wollen, verwenden Sie relative Breite (z.B. weil die Mathematik der Berechnung von 1/4 288 und 3/4 288 ist zu schwer) und Sie wollen eine Tabelle erstellen, in der Breite von zwei Spalten, von denen die erste ist 1 Zoll breit und die zweite ist 3 cm breit, dann können Sie wieder verwenden das Prinzip des gesperrten Breite des Tisches. Werfen Sie einen Blick auf:
Nun übergeben wir ein array, um die
setTotalWidth()
Methode. Breiten sind nicht mehr relativ, und wir sagen iText zu benutzen, diese absolute Breite schließ-Breite.Nun die erste Spalte (und alle Zellen in der ersten Spalte) werden 72 Benutzer-Einheiten (1 Zoll) Breite und in der zweiten Spalte werden 216 Benutzer-Einheiten (3 Zoll) breit.
Breite der Zellen:
Die Breite der Zellen befolgen Sie die Breite der Spalten an.
All dies hat natürlich erklärt, in großem detail in der Dokumentation, die online verfügbar ist. Siehe Beispiele wie Spaltenbreiten oder das gesamte Kapitel, die ausschließlich für die Tabellen in der kostenlosen ebook Die Besten iText Fragen auf StackOverflow. Man fragt sich, warum niemand jemals liest, Dokumentation. Macht es Sinn zu halten, die auf die Beantwortung von Fragen, wenn niemand interessiert ist, in den Antworten? (Sorry für diese philosophische Bemerkung, es war ein langer Tag.)
InformationsquelleAutor Bruno Lowagie