【问题标题】:pdfSharp document orientationpdfSharp 文档方向
【发布时间】:2016-03-01 20:47:20
【问题描述】:

我想用pdfSharp更改c# wpf中创建的文档的方向,如果我想要横向文档该怎么办

这是我的代码

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



    }

【问题讨论】:

标签: c# wpf pdf orientation pdfsharp


【解决方案1】:

首先将您的关系写给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);

【讨论】:

  • 如果你想要不同的方向,在 fixedPage.Width 和 fixedPage.Height 值之间切换
  • 我刚试过,但我在 fixedPage.Children.Add(rapport); 行上有一个“System.InvalidOperationException”;
  • 是的,但我刚刚看到的是 add 需要一个 IU 元素在 param 和 'rapport' 是一个视觉
  • 这更好,但现在我还有一个问题是网格在我的屏幕上的样子:drive.google.com/file/d/0B7S5_owLqcO_WTRZaDAyX2NTeTg/…,这是 pdf:drive.google.com/file/d/0B7S5_owLqcO_dmc3WWtZT0I1cEU/…
  • 这意味着你的关系比A4大;标记为答案并投票给答案,我们将一起解决这个问题
【解决方案2】:

您可以使用printdialog,设置标准页面大小和方向,将宽度和高度转换为固定文档页面大小。不要设置实际数字

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多