简体   繁体   English

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

[英]Paginate using DocumentPaginator from FlowDocument that contains StackPanel

I want to generate paginated documents from FlowDocument object that contains a StackPanel element. 我想从包含StackPanel元素的FlowDocument对象生成分页文档。 I tried using DocumentPaginator . 我尝试使用DocumentPaginator

So far I have tried this code below, but no luck for me, that is, only one truncated page is generated and its content is cut in half vertically . 到目前为止,我已经尝试过以下代码,但对我来说没有运气,也就是说,只生成一个截断页面,其内容垂直切成两半

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


When I print the document to PDF, this is the result, as I said before, only one page and its content is cut in half vertically (the document in this image is 50% zoomed out): 当我将文档打印为PDF时,这就是结果,正如我之前所说,只有一页,其内容垂直切成两半 (此图像中的文档缩小了50%):

结果文件


Am I missing something to make the paginating works? 我错过了一些可以使分页工作的东西吗? Or did I implement it in a wrong way? 还是我以错误的方式实现它?

BlockUIContainer cannot span multiple pages. BlockUIContainer不能跨越多个页面。 I suggest taking out the StackPanel and using a BlockUIContainer for each element in the list. 我建议取出StackPanel并为列表中的每个元素使用BlockUIContainer。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM