2010-03-22 9 views
12

Próbuję wygenerować dokument XPS z kontroli WPF. Drukowanie działa do tej pory, ale nie mogę znaleźć sposobu na utworzenie XPS w trybie poziomym.WPF do XPS w orientacji poziomej

Mój kod, aby utworzyć plik XPS, głównie zaczerpnięte z innego SO stronie

public FixedDocument ReturnFixedDoc() 
    { 
     FixedDocument fixedDoc = new FixedDocument(); 
     PageContent pageContent = new PageContent(); 
     FixedPage fixedPage = new FixedPage(); 

     var ctrl = new controlToPrint(); 

     //Create first page of document 
     fixedPage.Children.Add(ctrl); 
     ((System.Windows.Markup.IAddChild)pageContent).AddChild(fixedPage); 
     fixedDoc.Pages.Add(pageContent); 
     //Create any other required pages here 

     return fixedDoc; 
    } 


    public void SaveCurrentDocument() 
    { 
     // Configure save file dialog box 
     Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog(); 
     dlg.FileName = "MyReport"; // Default file name 
     dlg.DefaultExt = ".xps"; // Default file extension 
     dlg.Filter = "XPS Documents (.xps)|*.xps"; // Filter files by extension 

     // Show save file dialog box 
     Nullable<bool> result = dlg.ShowDialog(); 

     // Process save file dialog box results 
     if (result == true) 
     { 
      // Save document 
      string filename = dlg.FileName; 

      FixedDocument doc = ReturnFixedDoc(); 
      XpsDocument xpsd = new XpsDocument(filename, FileAccess.Write); 
      System.Windows.Xps.XpsDocumentWriter xw = XpsDocument.CreateXpsDocumentWriter(xpsd); 
      xw.Write(doc); 
      xpsd.Close(); 
     } 
    } 

Każda pomoc jest mile widziana.

Odpowiedz

12

Spróbuj ustawić rozmiaru FixedPage w ReturnFixedDoc:

// hard coded for A4 
fixedPage.Width = 11.69 * 96; 
fixedPage.Height = 8.27 * 96; 

Liczby są w formie (cale) x (punktów na cal). 96 to DPI WPF. Użyłem wymiarów strony A4.

+0

Dziękuję, wydaje się, że to wystarczy. Używałem "nowego RotateTransform (90)" do obrócenia kontrolki, ale zmiana rozmiaru strony na odpowiednie wymiary jest lepsza :-) – Felix

Powiązane problemy