Verhinderung von iTextSharp, wenn ein Seitenumbruch in der Mitte eines PdfPTable?
Verwende ich iTextSharp v5.3 erstellen einer PDF-Datei mit einer oder mehreren Tabellen die selben Zellen aber können variieren in der Höhe aufgrund der dynamischen Inhalte. Derzeit, wenn ein PdfPTable
ist zu groß, um auf der aktuellen Seite der Tabelle ist gebrochen, und die Verbleibende Zelle Daten landet auf der nächsten Seite. Gibt es eine Möglichkeit, ich kann sagen, iTextSharp, dass, wenn die Tabelle nicht ausreicht, um die ganze auf der nächsten Seite?
Habe ich versucht, Herumspielen mit SplitRows
und SplitLate
aber Sie haben nicht die gewünschte Wirkung. Ich habe auch versucht zu tun, einige Berechnungen nach dem hinzufügen der PdfPTable
auf das Dokument, kann aber nicht herausfinden, wie man die "cursor-position" auf der Seite. Muss ich Spur die aktuelle Seite ist die Höhe, die in meiner Schleife und alles tun, die Berechnungen selbst?
- Fügen Sie das Datensatz-Vorlagen als neue pdfptable (jede Zelle der Haupttabelle enthalten soll pdfptabe. Jetzt SplitRows und SplitLate sollte die Arbeit, die sich auf das gesamte Objekt ist Höhe).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie bitte den Tisch für seine gesamte Höhe. Dies wird wie folgt realisiert:
table.TotalHeight
Wenn die Höhe 0, stellen Sie sicher, dass Sie definiert haben, die erste Breite: iText kann nicht berechnen Sie die Breite, wenn Sie nicht wissen, ist die verfügbare Breite für die Tabelle Rendern.
Sobald Sie die Höhe, bitten Sie den Autor für die vertikale position:
writer.GetVerticalPosition(true)
Wie Sie wahrscheinlich wissen, ist die Y-Koordinate ist 0 auf den unteren Rand der Seite. Wenn die vertikale position minus die gesamte Höhe der Seite übersteigt die Marge Größe, Sie wissen, dass die Tabelle nicht passen, und können Sie veranlassen, eine neue Seite.
GetVerticalPosition
nicht für Sie arbeiten. Es funktioniert für die Leute, die zugelassen und stimmten für diese Antwort. Auch: der Kommentarbereich ist nicht der Ort für post-so eine weitere Frage. Erstellen Sie eine neue Frage und dem Satz, in einer Weise, die Verschieden ist von "es funktioniert nicht". Siehe lowagie.com/doesntworkkönnen Sie auch verwenden, tableName.KeepTogether = True
Bruno Lowagie hat darauf hingewiesen, das die richtige Lösung ist - ich möchte hinzufügen der Möglichkeit zum verkleinern einer Tabelle auf einer Seite, auch wenn es zu groß ist.
Schau mal hier: Ist es möglich, zu "schrumpfen" ein PdfPtable?
Wahrscheinlich nicht die "richtige" Art und Weise, aber Sie können wickeln Sie Ihre Tabelle in ein single-cell-container Tisch. Eine einzelne Zelle kann nicht in zwei Hälften geteilt.