2017-02-13 1 views
0

Ich habe ein PDF-Dokument, das ich erstellen möchte, mit etwa 20 Spalten unterschiedlicher Breite. Es wird ungefähr die Hälfte der Spalten auf der ersten Seite angezeigt und schneidet dann den Rest ab. Ich möchte, dass es die Seitenbreite bestimmt und die restlichen Spalten auf die zweite Seite verschiebt. Gibt es eine Möglichkeit, dies in Rendering oder PageSetup anzugeben? Ich denke, ich muss die Breite berechnen, die erste Seite erstellen und dann die zweite erstellen.Wie bekomme ich MigraDoc, um PDF mit dynamischer Seitenbreite zu erstellen?

Table table = new Table(); 

PdfDocumentRenderer renderer = new PdfDocumentRenderer(true, PdfSharp.Pdf.PdfFontEmbedding.Always); 
renderer.Document = doc; 
doc.DefaultPageSetup.Orientation = MigraDoc.DocumentObjectModel.Orientation.Landscape; 

//create the columns 
for (int i = 1; i < tripReportGrid.Columns.Count; i++) 
    { 
     col = table.AddColumn(tripReportGrid.Columns[i].Width); 
     col.Format.Alignment = ParagraphAlignment.Center; 
    } 

...fill the content same way 

renderer.RenderDocument(); 

Antwort

0

Die Breite der Seite ist, was Sie einstellen - oder A4, wenn Sie nichts einstellen.

Sie können die Breite der Seite auf einen beliebigen Wert einstellen. Das wird wahrscheinlich OK sein, wenn die PDF-Datei auf dem Bildschirm angezeigt wird.

Oder Sie können einer Tabelle nur so viele Spalten hinzufügen, wie auf eine Seite passen. A4 im Querformat ist 29,7 cm. Standardränder sind 2,5 cm links und rechts.

Und BTW: Sie sollten das DefaultPageSetup nie ändern. Weisen Sie dem PageSetup Ihrer Sektion einen Clone() des DefaultPageSetup zu und ändern Sie diesen nach Bedarf.

+0

danke, was ist der beste Weg, um eine Seite hinzuzufügen, nachdem die erste erstellt wurde? – jerryn44

+0

Sie können 'AddPageBreak()' für Ihren Abschnitt aufrufen, um einen Seitenumbruch vor der zweiten Tabelle zu erzwingen. Sie können 'AddSection()' für Ihr Dokument aufrufen, um einen neuen Abschnitt zu erstellen (dies führt implizit zu einem Seitenumbruch). Der neue Abschnitt kann ein anderes Seitenformat verwenden. Wenn Sie also benutzerdefinierte Seitenformate verwenden möchten, können Sie in einem neuen Abschnitt für die zweite Tabelle auch eine andere Seitenbreite verwenden. –

+0

Präfekt. Danke – jerryn44

Verwandte Themen