2010-03-22 17 views
12

Estoy tratando de generar un documento XPS desde un control WPF. La impresión funciona hasta el momento, pero no puedo encontrar una manera de crear el XPS en modo horizontal.WPF a XPS en orientación horizontal

Mi código para crear el archivo XPS, la mayoría toma de otro SO página

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

Cualquier ayuda se agradece.

Respuesta

12

establecer el tamaño de su FixedPage en ReturnFixedDoc Probar:

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

Los números están en la forma (pulgadas) X (puntos por pulgada). 96 es el DPI de WPF. He usado las dimensiones de una página A4.

+0

Gracias, esto parece ser el truco. Estaba usando "nuevo RotateTransform (90)" para girar el control, pero cambiar el tamaño de la página a las dimensiones adecuadas es mejor :-) – Felix

Cuestiones relacionadas