我正在尝试打印我的FlowDocument(它被包装到FlowDocumentScrollViewer中),因为我有很多文本/ Textbox / combobox,页面高度可能会变高!
我正在使用它:
PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == true)
{
Scrollvvv.Document.ColumnWidth = printDialog.PrintableAreaWidth;
Scrollvvv.Document.ColumnGap = 0;
printDialog.PrintDocument(((IDocumentPaginatorSource)Scrollvvv.Document).DocumentPaginator, ServicesLangue.RM.GetString("TITRE_MODIFIER_SALON_EXPOSANT"));
}
我的xaml看起来像:
<FlowDocumentScrollViewer Name="Scrollvvv" VerticalScrollBarVisibility="Auto">
<FlowDocument Name="flowDoc" PagePadding="10">
<Section>
<BlockUIContainer>
<Grid Name="grid_principale">
<!-- Lot of stuffs here -->
</Grid>
</BlockUIContainer>
</Section>
</FlowDocument>
</FlowDocumentScrollViewer>
事情是:它在1页打印我的所有数据,宽度没问题(我可能会添加一些余量,但没关系)但它压缩我的所有控件以适应高度的一页。
如何解决这个问题?我只想禁用此自动高度并保持原始大小。
答案 0 :(得分:3)
问题在于您将所有内容放在单个BlockUIContainer中。 DocumentPaginator在对BlockUIContainer进行分页时遇到问题,即将其拆分为多个页面。如果您的UI是静态的,您可以使用多个BlockUIContainer来包装您的UI。即
<BlockUIContainer>
<Grid Name="grid_principale">
<!-- Grid content here -->
</Grid>
</BlockUIContainer>
<BlockUIContainer>
<Grid Name="grid_principale2">
<!-- Grid content here -->
</Grid>
</BlockUIContainer>
这将生成多个页面。此外,您必须在打印前设置FlowDocument.PageHeight。