c# - WPF:打印 FlowDocument

标签 c# wpf printing flowdocument

我正在尝试获取要打印的 FlowDocument。在花了一天的大部分时间尝试多个页面后,我失败了并选择了更简单的方法,但我现在无法解释何时文本未输出到页面。我想这一定是我雪盲了。下面有两个表,在两个表上放置一个转换器表明正在通过 FlowDocument 的 DataContext 填充值。

<Table>
    <Table.Columns>
        <TableColumn Width="Auto"/>
        <TableColumn Width="34"/>
        <TableColumn Width="Auto"/>
    </Table.Columns>
    <TableRowGroup>
        <TableRow>
            <TableCell>
                <Paragraph>
                    <Image Source="{Binding Icon,Converter={StaticResource IconConverter},ConverterParameter=32}" Width="32" Height="32"/>
                </Paragraph>
            </TableCell>
            <TableCell>
                <Paragraph>
                    <TextBlock Text="{Binding Name,Converter={StaticResource dbg}}" TextWrapping="Wrap" TextTrimming="CharacterEllipsis" VerticalAlignment="Center" FontSize="18" Foreground="Black" />
                </Paragraph>
            </TableCell>
            <TableCell>
                <Paragraph>
                    <TextBlock Text="Static text works fine" TextAlignment="Right"  />
                    <TextBlock Text="Static text works here too fine" TextAlignment="Right"  />
                </Paragraph>
            </TableCell>
        </TableRow>
    </TableRowGroup>
</Table>
<BlockUIContainer>
    <Line Stretch="Fill" Stroke="DarkBlue" X2="1"/>
</BlockUIContainer>

文档打印使用:

PrintDialog dlg = new PrintDialog();
if(dlg.ShowDialog() == true) {
  int margin = 5;
  Size pageSize = new Size(dlg.PrintableAreaWidth - margin * 2, dlg.PrintableAreaHeight - margin * 2);
  FlowDocument document = WPFUtils.LoadFlowDocument(System.IO.Path.Combine(Utils.GetApplicationPath(), "AccountPrintView.xaml"), account); // loads the document from a XAML file
  IDocumentPaginatorSource paginator = document as IDocumentPaginatorSource;
  paginator.DocumentPaginator.PageSize = pageSize;
  dlg.PrintDocument(paginator.DocumentPaginator, "Print output");
}

我对此有点束手无策,我看不出问题所在。如果有人能提供一些帮助,我将不胜感激。

最佳答案

这本身并不是真正的答案,但您可以使用 FlowDocumentReader 吗?它已经在 Ctrl-P 上预先连接了打印内容(并公开了一个“打印”方法)......也就是说,你可以试试这个:Printing a Windows Foundation Presentation FlowDocument

关于c# - WPF:打印 FlowDocument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1981585/

相关文章:

Java 按顺序迭代并打印多个数组

c# - 需要 RegisterWindowMessage 和 SendMessage 从 c++ 到 c# 的帮助

c# - 如何从指定的命名空间 c# 中获取每个类?

wpf - 如何枚举剪贴板格式

java - 打印语句中的if语句?

objective-c - NSPrintInfo 共享 PrintInfo 到底是如何共享的?

c# - 加速 ASP MVC 单元测试

c# - OnPaint 事件接​​二连三

c# - 如何仅从边界外完成发光效果?

c# - 将进度条绑定(bind)到 wpf 中的媒体元素