2017-02-13 90 views
0

我有一个PDF文档,我尝试创建,大约20列,宽度不等。它获得第一页大约一半的列,然后切断其余部分。我希望它确定页面宽度并将剩余的列移动到第二页上。有没有办法在渲染或PageSetup中指定它?我想我必须计算宽度,创建第一页然后创建第二页。如何让MigraDoc使用动态页面宽度生成PDF?

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(); 

回答

0

页面的宽度是你设置的 - 或者A4,如果你什么都不设置的话。

您可以将页面的宽度设置为任意值。在屏幕上查看PDF文件时,这可能是确定的。

或者,您只能在一张表上添加尽可能多的列。 A4格式为29.7厘米。默认边距是2.5厘米左右。

而且BTW:你永远不应该修改DefaultPageSetup。将DefaultPageSetup的Clone()分配给您的部分的PageSetup,并根据需要进行更改。

+0

谢谢,在创建第一个页面后,添加页面的最佳方式是什么? – jerryn44

+0

您可以调用您的节的“AddPageBreak()”在第二个表之前强制分页。你可以为你的文档调用AddSection()来创建一个新的部分(这隐含地导致了分页符)。新的部分可以使用不同的页面格式,所以如果您决定使用自定义页面格式,第二张表的新部分也允许您使用不同的页面宽度。 –

+0

知府。谢谢 – jerryn44