如何让 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 并根据需要进行更改。
我有一个要创建的 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 并根据需要进行更改。