Xfinium流文档中的分页符

时间:2017-07-27 15:39:31

标签: c# pdf uwp

我正在使用Xfinium.PDF为UWP创建一个PdfFlowDocument。我需要插入一个分页符,但仅当某个部分(包含段落和表格)不适合当前页面时。这是一种“保持在一起”的功能。

我怎样才能完成任务?

更新:我已经将我需要的内容量最小化到一个表中。虽然它是一个流表,但我知道我需要将它转换为固定大小的表来计算它的高度。如果我能够在渲染所有流内容后以某种方式找到页面上的当前位置,我将能够计算页面上剩余的空间。如果表有足够的空间,我会在页面上呈现它。如果没有,我会发出分页符并在下一页上进行渲染。

在渲染流内容后,是否有功能可以找到页面上的当前位置?

2 个答案:

答案 0 :(得分:0)

您可以通过调用PdfFlowDocument.StartNewPage强制分页 流内容的大小信息在公共API中不可用,如果内容对象符合当前可用空间,则无法在代码中进行测试。
我们将在下一版本中支持此功能。

答案 1 :(得分:0)

创建一个包含单行和单元格的表。对于单元格,使用 PdfFlowTableCompositeCell 。它有一个属性 Content ,它是流内容对象的集合。在行集 EnableRowSplit = false

        var table = new PdfFlowTableContent(1);

        //column width in %
        table.Columns[0].Width = 100;

        var row = table.Rows.Add();
        row.EnableRowSplit = false;
        var cell = new PdfFlowTableCompositeCell();

        //text
        cell.Content.Add(new PdfFlowTextContent(new PdfFormattedContent(KswModuleTranslator.PdfFaultReportStationAssuranceText)));

        //image
        var image = new PdfPngImage(new MemoryStream(signatureData.Signature));
        var imgDings = new PdfFlowImageContent(image);
        cell.Content.Add(imgDings);

        //text
        cell.Content.Add(new PdfFlowTextContent(new PdfFormattedContent(signatureInfo.SigneeName)));

        row.Cells.Add(cell);

        document.AddContent(table);