使用FlowDocument中包含StackPanel的DocumentPaginator进行分页

时间:2017-02-06 05:32:15

标签: c# wpf flowdocument documentpaginator

我想从FlowDocument对象生成包含StackPanel元素的分页文档。我尝试使用DocumentPaginator

到目前为止,我已尝试过以下代码,但对我来说没有运气,也就是说,只生成了一个截断页,其内容垂直切成了一半

// stackPanel contains elements that their total heights 
// make the page should break into several pages.
StackPanel stackPanel = ...;

BlockUIContainer blockUiContainer = new BlockUIContainer(stackPanel);
FlowDocument flowDoc = new FlowDocument(blockUiContainer);
flowDoc.PageHeight = InchToPoint(paperSizeA4.Height); // paperSizeA4.Height: integer value
flowDoc.PageWidth = flowDoc.ColumnWidth = InchToPoint(paperSizeA4.Width); // paperSizeA4.Width: integer value
flowDoc.PagePadding = new Thickness(40);

DocumentPaginator docPaginator = ((IDocumentPaginatorSource)flowDoc).DocumentPaginator;
docPaginator.ComputePageCount();


当我将文档打印到PDF时,这就是结果,正如我之前所说,只有一页,其内容垂直切成两半(此图像中的文档缩小了50%):< / p>

The result document


我错过了一些可以使分页工作的东西吗?或者我是以错误的方式实施的?

1 个答案:

答案 0 :(得分:0)

BlockUIContainer不能跨越多个页面。我建议取出StackPanel并为列表中的每个元素使用BlockUIContainer。