【问题标题】:Print flowdocument scroll viewer on multiple pages在多个页面上打印 flowdocument 滚动查看器
【发布时间】:2013-08-31 03:11:15
【问题描述】:

我正在尝试打印我的 FlowDocument(包装在 FlowDocumentScrollViewer 中),因为我有很多文本/文本框/组合框,并且页面高度可能会变高!

我正在使用这个:

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>

问题是:它将我的所有数据打印在一页中,宽度还可以(我可能会添加一些边距,但这没关系),但它会压缩我的所有控件以适应一页的高度。

如何解决这个问题?我只想禁用此自动高度并保持原始大小。

【问题讨论】:

  • DocumentPaginator 显示的页面大小是多少?
  • PageCount : 0, IsPageCountValid : false, Page Size = {816, 1016} 谢谢
  • 我尝试过“computePageCount”,但没有任何变化,它计算的是 1 页而不是 0 页。

标签: c# wpf printing flowdocument flowdocumentscrollviewer


【解决方案1】:

问题是您将所有内容都放在单个 BlockUIContainer 中。 DocumentPaginator 在对 BlockUIContainer 进行分页时遇到问题,即将其拆分为多个页面。如果你的 UI 是静态的,你可以使用多个 BlockUIContainers 来包装你的 UI。即

    <BlockUIContainer>
      <Grid Name="grid_principale">
       <!-- Grid content here -->
      </Grid>
    </BlockUIContainer>
    <BlockUIContainer>
      <Grid Name="grid_principale2">
       <!-- Grid content here -->
      </Grid>
    </BlockUIContainer>

这将生成多个页面。此外,您还必须在打印前设置 FlowDocument.PageHeight。

【讨论】:

  • 谢谢你,看起来好多了!但是我有一些问题: - 它在 2 列中打印我的东西 - blockUIContainer 不能超过一页?它在右栏中打印了一小部分,如果这个小部分在另一页上会更好 - 当它完成打印时,我的应用程序在我的窗口的显示对话框上给了我一个“空指针异常”。我怎样才能避免这种情况?谢谢
  • (列问题已修复,我只是空异常。也许我应该将我的 FlowDocumentScrollViewer 复制到一个新的对象中?但是我该怎么做呢?
  • 很高兴它对你有用......你从哪里得到空异常......你能分享一些代码吗?
  • 我删除了有关文档拉伸的所有行,它似乎有效,如果再次发生异常,我将发布。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-02
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 2017-12-26
相关资源
最近更新 更多