2016-03-01 2 views
0

Я хочу изменить ориентацию документа, созданного в C# WPF с PDFsharp, что я должен делать, если я хочу иметь ландшафтный документPDFsharp ориентация документа

вот мой код

 private void savePDF() 
    { 

     string date = DateTime.Now.ToString().Replace('/', '-').Replace(':', '-'); 

     MemoryStream lMemoryStream = new MemoryStream(); 
     Package package = Package.Open(lMemoryStream, FileMode.Create); 
     XpsDocument doc = new XpsDocument(package); 
     XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc); 
     writer.Write(rapport); 
     doc.Close(); 
     package.Close(); 
     var pdfXpsDoc = PdfSharp.Xps.XpsModel.XpsDocument.Open(lMemoryStream); 
     PdfSharp.Xps.XpsConverter.Convert(pdfXpsDoc, "E:\\"+ date +".pdf", 0); 



    } 
+0

Не могли бы вы представить, как вы создаете документ 'rapport'? –

+0

rapport - это просто имя моей сетки, поэтому я просто добавлю x: Name = "rapport" в файле xaml – Tib

+0

ваш документ имеет только одну страницу? –

ответ

0

Во-первых Напишите свой контакт с FixedDocument:

FixedDocument fixedDoc = new FixedDocument(); 
    PageContent pageContent = new PageContent(); 
    FixedPage fixedPage = new FixedPage(); 


     string savedrapport = XamlWriter.Save(rapport); 

     StringReader stringReader = new StringReader(savedrapport); 
     XmlReader xmlReader = XmlReader.Create(stringReader); 
     Grid newrapportInstance = (Grid)XamlReader.Load(xmlReader); 

     //Create first page of document 
     fixedPage.Children.Add(newrapportInstance); 
    ((System.Windows.Markup.IAddChild)pageContent).AddChild(fixedPage); 
    // hard coded for A4 
    fixedPage.Width = 11.69 * 96; 
    fixedPage.Height = 8.27 * 96; 
    fixedDoc.Pages.Add(pageContent); 
    //Create any other required pages here 

    MemoryStream lMemoryStream = new MemoryStream(); 
    Package package = Package.Open(lMemoryStream, FileMode.Create); 
    XpsDocument doc = new XpsDocument(package); 
    XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc); 
    writer.Write(fixedDoc); 
    doc.Close(); 
    package.Close(); 
    var pdfXpsDoc = PdfSharp.Xps.XpsModel.XpsDocument.Open(lMemoryStream); 
    PdfSharp.Xps.XpsConverter.Convert(pdfXpsDoc, "E:\\"+ date +".pdf", 0); 
+0

Переключатель между fixedPage.Width и fixedPage.Height Значения, если вы хотите другую ориентацию –

+0

Я просто попытался, но у меня есть «System.InvalidOperationException» на строке fixedPage.Children.Add (rapport); – Tib

+0

сетка раппорта, отображаемая в пользовательском интерфейсе? –