我想从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>
我错过了一些可以使分页工作的东西吗?或者我是以错误的方式实施的?
答案 0 :(得分:0)
BlockUIContainer不能跨越多个页面。我建议取出StackPanel并为列表中的每个元素使用BlockUIContainer。