Ich benutze MigraDoc, um ein PDF zu erzeugen. Ich möchte einige Inhalte am Ende der letzten Seite ausrichten. Dies sind Informationen zum Haftungsausschluss, die mein Unternehmen immer in diesen Arten von Dokumenten enthält. Ziel ist es, den Inhalt vollständig zu halten und ihn immer oberhalb der Fußzeile auf der letzten Seite erscheinen zu lassen. Wenn auf der letzten Seite des tatsächlichen Inhalts nicht Platz ist, um sie zusammen zu halten, sollte ein Seitenumbruch erfolgen und der Inhalt der Tabelle sollte sich auf einer eigenen Seite befinden.MigraDoc: Ausrichten von Text oder einer Tabelle am Fuß der Seite über der Fußzeile
Ich möchte dies tun, ohne die Höhe des Inhalts zu messen.
Ich habe den Eindruck, dass ich mit TextFrame irgendwie helfen kann, aber ich kann keine Dokumentation darüber finden. Die Fragen und Beispiele, die ich online gefunden habe, beziehen sich darauf, den TextFrame "absolut positionieren" zu können, aber keines der Beispiele scheint genau das zu tun.
Als Ausgangspunkt versuche ich einen Textabsatz so zu positionieren, wie ich es auf einer ansonsten leeren Seite beschrieben habe. Hier ist mein letztes Experiment:
static void AddBoilerPlate(Section section) {
var sectionWidth = PdfSharp.PageSizeConverter.ToSize(PageSize.Letter).Width - section.Document.DefaultPageSetup.LeftMargin.Point -
section.Document.DefaultPageSetup.RightMargin.Point;
section.AddPageBreak();
var frame = section.AddTextFrame();
frame.RelativeVertical = RelativeVertical.Page;
frame.Width = sectionWidth;
frame.Top = ShapePosition.Bottom;
frame.AddParagraph(DisclaimerText);
}
Der Text beginnt knapp oberhalb der Fußzeile (die blauen Linie in diesem Screenshot) und läuft dann über die Fußzeile:
Sobald ich einen Absatz des Textes erhalten ausgerichtet, dann werde ich in der Lage sein, stattdessen eine Tabelle mit einer Spalte und einer Zeile zu verwenden und dann meinen gesamten Inhalt dort hineinzulegen.
Update: hier ist ein Screenshot mein Ziel zeigt (gefälscht einen Seitenumbruch mit und Spacebefore):
Update: Hier sind einige relevante Artikel, die ganz verstehen Sie mich nicht, wo ich bin zu gehen versucht: mit einem Textframe
- auf einer Seite eine Tabelle Zentrieren: http://forum.pdfsharp.net/viewtopic.php?p=753#p753
- scheint die gleiche Frage zu beantworten, aber bietet keine Informationen darüber, wie absolut zu Positionieren Sie den TextFrame: http://forum.pdfsharp.com/viewtopic.php?f=2&t=587
- Keep Tabelle auf einer Seite ("in einem Stück"). Dies kann hilfreich sein, wenn ich das Problem, herauszufinden, mit der Seite nach unten relativ Ausrichtung: Keep table in one piece MigraDoc/PDFsharp
Update: Beachten Sie, dass auf die Textframe eine Höhe Hinzufügen macht den Text ausrichten, wie ich brauche es. Es ist nicht ideal, weil ich die Höhe lieber nicht fest codiere. Aber es produziert, um den gewünschten Effekt:
static void AddBoilerPlate(Section section) {
var sectionWidth = PdfSharp.PageSizeConverter.ToSize(PageSize.Letter).Width - section.Document.DefaultPageSetup.LeftMargin.Point -
section.Document.DefaultPageSetup.RightMargin.Point;
section.AddPageBreak();
var frame = section.AddTextFrame();
frame.RelativeVertical = RelativeVertical.Page;
**frame.Height = new Unit(75, UnitType.Millimeter);**
frame.Width = sectionWidth;
frame.Top = ShapePosition.Bottom;
frame.AddParagraph(DisclaimerText);
}
Update: Beachten Sie jedoch, dass die Textframe-Höheneinstellung nicht das ultimative Problem nicht lösen. Inhalt, der vor dem Textbaustein hinzugefügt wurde, sollte den Textbaustein auf die nächste Seite verschieben, wenn nicht genügend Platz dafür vorhanden ist, und das ist nicht der Fall.
Vorschläge sollten als Kommentar hinzugefügt werden. – Sunil