Tib
Tib

Reputation: 31

pdfSharp document orientation

I want to change the orientation of a document created in c# wpf with pdfSharp, What should I do if I want to have a landscape document

here is my code

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



    }

Upvotes: 2

Views: 1949

Answers (2)

wwsinsh
wwsinsh

Reputation: 30

You can use printdialog,set the standard page size and orientation, the transform the width and height to fixeddocument page size. Don't set the actual number

Upvotes: 0

Henka Programmer
Henka Programmer

Reputation: 747

Firstly Write your rapport to a 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);

Upvotes: 1

Related Questions