2011-09-12 10 views
2

私はWPFのPrintDialogクラス(PresentationFramework.dllの名前空間System.Windows.Controls、v4.0.30319)で印刷しようとしています。これは私が使用するコードです:PrintDialog/XPSドキュメントライタの無視された用紙サイズ

private void PrintMe() 
{ 
    var dlg = new PrintDialog(); 

    if (dlg.ShowDialog() == true) 
    { 
     dlg.PrintVisual(new System.Windows.Shapes.Rectangle 
     { 
      Width = 100, 
      Height = 100, 
      Fill = System.Windows.Media.Brushes.Red 
     }, "test"); 
    } 
} 

問題は関係なく、私は「マイクロソフトXPSドキュメントライタ」、生成されたXPSのために選択した内容用紙サイズ、常に、「手紙」の幅と高さを持っていません用紙の種類:

これは私がXPSパッケージ内に見つけることができますXAMLコードです:

<FixedPage ... Width="816" Height="1056">

答えて

2

用紙サイズを変更し、印刷ダイアログでは唯一のPrintTicket、ないのFixedPageに影響を及ぼしコンテンツ。 PrintVisualメソッドはレターサイズのページを生成するので、異なるページサイズを使用するには、PrintDocumentメソッドを使用する必要があります。

private void PrintMe() 
{ 
    var dlg = new PrintDialog(); 
    FixedPage fp = new FixedPage(); 
    fp.Height = 100; 
    fp.Width = 100; 
    fp.Children.Add(new System.Windows.Shapes.Rectangle 
     { 
      Width = 100, 
      Height = 100, 
      Fill = System.Windows.Media.Brushes.Red 
     }); 
    PageContent pc = new PageContent(); 
    pc.Child = fp; 
    FixedDocument fd = new FixedDocument(); 
    fd.Pages.Add(pc); 
    DocumentReference dr = new DocumentReference(); 
    dr.SetDocument(fd); 
    FixedDocumentSequence fds = new FixedDocumentSequence(); 
    fds.References.Add(dr);    

    if (dlg.ShowDialog() == true) 
    { 
     dlg.PrintDocument(fds.DocumentPaginator, "test"); 
    } 
} 
関連する問題