如何让 MigraDoc 生成具有动态页面宽度的 PDF?

How to get MigraDoc to produce PDF with dynamic page width?

我有一个要创建的 PDF 文档,大约有 20 列,宽度不一。它获取第一页上大约一半的列,然后切断 rest.I 希望它确定页面宽度并将剩余的列移动到第二页。有没有办法在渲染或 PageSetup 中指定它?我想我必须计算宽度,创建第一页,然后创建第二页。

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

页面的宽度是您设置的 - 如果您什么都不设置,则为 A4。

您可以将页面宽度设置为任意值。在屏幕上查看 PDF 文件时应该没问题。

或者您只能在一个 table 中添加尽可能多的列以适合一页。 A4 横向格式为 29.7 厘米。默认边距为左右 2.5 厘米。

顺便说一句:您永远不应该修改 DefaultPageSetup。将 DefaultPageSetup 的 Clone() 分配给您的部分的 PageSetup 并根据需要进行更改。