2009-12-30 7 views
3

Я пытаюсь получить FlowDocument для печати. Проведя большую часть дня, пробовав несколько страниц, я потерпел неудачу и решил сделать что-то более простое, но теперь я не понимаю, когда текст не выводится на страницу. Я думаю, что это должно быть что-то, что у меня есть снегом. Ниже приведены две таблицы, поместив конвертер на обоих показывает, что значения заполняются через DataContext FlowDocument.WPF: печать FlowDocument

<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"); 
} 

Я вроде в моих конце остроумия с этим, я не вижу проблемы. Я был бы очень признателен, если бы кто-нибудь мог пролить свет.

ответ

1

Это не ответ на самом деле, но можете ли вы использовать FlowDocumentReader? У него есть материал для печати, который уже предварительно подключен к Ctrl-P (и предоставляет метод «Печать») ..., который сказал, что вы можете попробовать следующее: Printing a Windows Foundation Presentation FlowDocument

+0

Я использовал почти такой же код где-то еще в другом приложение. Я думал, что это может быть что-то действительно очевидное, но, возможно, нет. :( – Echilon

Смежные вопросы