2016-07-05 4 views
1

FlowDocument、FlowDocumentPaginatorおよびPrintDialogを使用してWPFでプレーンテキストを印刷しています。私のアプローチはthis articleに基づいており、次のように実装されていますWPF FlowDocumentを小領域にのみ印刷する

 var printDialog = new PrintDialog(); 
     if (printDialog.ShowDialog() == true) 
     { 
      var flowDocument = new FlowDocument(); 

      var paragraph = new Paragraph(); 
      paragraph.FontFamily = new FontFamily("Courier New"); 
      paragraph.FontSize = 10; 
      paragraph.Margin = new Thickness(0); 
      paragraph.Inlines.Add(new Run(this.textToPrint)); 

      flowDocument.FontSize = 10; 
      flowDocument.Blocks.Add(paragraph); 

      var paginator = ((IDocumentPaginatorSource)flowDocument).DocumentPaginator; 
      printDialog.PrintDocument(paginator, "Chit"); 
     } 

これは、幅の狭いものを印刷するための良い作品。しかし、私は長い文字列を印刷しようとすると、それはすべてが小さな領域に詰めます:

enter image description here

私は印刷ダイアログのPrintTicket中とページネータで寸法を確認し、彼らは大丈夫であるように見える。

enter image description here

この問題の原因は何ですか?どのように修正できますか?

+0

私は仕事中ではありませんが、2つの列が作成されていると伝えられます。長い文書を作成すると、それが表示されます。フロー・ドキュメントに1つの列を伝え、フロー・ドキュメントにプリンタの幅を伝える必要があります。 – Paparazzi

+0

良好な観察。あなたの答えをあなたの利便性でどう実装するかを広げてください。 [編集:私はあなたがすでに行ったことを確認します。ありがとう。] – Gigi

答えて

3

これは、私はあなたがそれが1列であるflowdocumentを伝え、flowdocumentにプリンタの幅を指示する必要があり

flowDocument.PagePadding = new Thickness(standardThickness); 
flowDocument.ColumnGap = 0; 
flowDocument.ColumnWidth = printDialog.PrintableAreaWidth; 

を使用するいくつかのコードです。

+0

完璧な、これは働いた。私はちょうどあなたがあなたの答えにコメントに書いたもの(2つの列のもの)を追加して、人々がそれに関連するすべての情報を見つけることができるようにすることをお勧めします。 – Gigi

関連する問題