【问题标题】:MigraDocPrintDocument not printing footersMigraDocPrintDocument 不打印页脚
【发布时间】:2013-11-19 20:16:44
【问题描述】:

我正在使用 MigraDoc 来打印一份报告。出于某种原因,我无法打印页脚 - 尽管它们在预览器和生成的 PDF 中显示得很好。

这是我的代码 - 我将其精简为用于测试的准系统,但仍然无法正常工作。

    Dim doc = New MigraDoc.DocumentObjectModel.Document

    Dim sec = doc.AddSection

    Dim f = sec.Footers.Primary
    f.AddParagraph("test")

    'Footer appears just fine on previewer
    Dim ddl As String = MigraDoc.DocumentObjectModel.IO.DdlWriter.WriteToString(doc)
    Me.Preview.Ddl = ddl

    'Here's where I tried to print the doc directly.  No footer printed.
    'Dim d As New MigraDoc.Rendering.Printing.MigraDocPrintDocument()
    'd.Renderer = New MigraDoc.Rendering.DocumentRenderer(doc)
    'd.Renderer.PrepareDocument()
    'd.Print()

    'Here's where I tried to use the previewer's renderer.  Still no footer printed
    'Dim d As New MigraDoc.Rendering.Printing.MigraDocPrintDocument(Me.Preview.Renderer)
    'd.Print()

我在名为 Preview 的表单上有一个 MigraDoc.Rendering.Forms.DocumentPreview 控件。如果按原样运行窗体,预览控件将显示一个空白页,页脚显示“测试”。一切都很好,但我无法打印该页脚。如果我尝试直接打印(注释代码的第一块),我只会得到一个空白页。当我尝试使用预览器的渲染器(第二块注释代码)打印它时也是如此。

有什么想法吗?

【问题讨论】:

    标签: .net pdfsharp migradoc


    【解决方案1】:

    AFAIK 在您尝试使用 MigraDoc 1.32 的 WPF 版本进行打印时出现问题:没有打印任何内容。

    您的测试文档似乎只包含页脚。也许添加一个“你好,世界!”段在正常体内。我想这不仅仅是缺少页脚。

    使用 GDI+ 构建打印确实可以工作 IIRC。

    【讨论】:

    • 我正在使用 GDI+ 构建。这只会变得更奇怪。我在“Dim sec = doc.AddSection”下添加了一行以尝试您的建议。添加了 'sec.AddParagraph("Test Body")',现在当预览器尝试渲染文档时出现错误 - “预期文件结尾”。如果我删除我添加的行或删除它下面与页脚相关的两行,错误就会消失。我不能同时在该部分的主体和该部分的页脚中包含内容......很奇怪。当我尝试打印时,我没有收到错误,但结果与我预期的一样 - “测试正文”并且没有页脚。
    • 仅供参考,原始帖子中的代码是我试图做的事情的精简版本 - 当我注意到页脚没有打印时,我的代码在正文中有大量内容。在发布问题之前一点一点地清理东西以尝试隔离问题。
    • 当我在正文中添加表格来测试内容而不是sec.AddParagraph("Test Body")时没有这样的问题:Dim t = sec.AddTable t.AddColumn() Dim r = t.AddRow r.Cells(0).AddParagraph("test")
    【解决方案2】:

    我遇到了这个问题,发现如果我设置页脚与页面底部的距离并将其设置为大于或等于底部边距大小,它将显示出来。

    我的下边距是 0.75 英寸。此代码将页脚放在页面的最底部: doc.DefaultPageSetup.FooterDistance = new Unit(.75, UnitType.Inch);

    这很奇怪。 PDF 的数字副本始终有页脚。只有当它被打印出来时,它才消失。通过 Adob​​e Reader 打开数字副本并打印总是会打印页脚。

    我认为 MigraDoc 必须与某些 Post Script / PDF 处理器不兼容。无论哪种方式,这都是一个简单的解决方法。

    【讨论】:

      【解决方案3】:

      如果您需要在打印后显示预览,那么您可以使用 WebView2 控件并使用 pdf 文件的报告路径。

      <DockPanel>
          <wv2:WebView2 Name="webView" Source="file:///D:/MyPdfPath.pdf"/>
      </DockPanel> 
      

      此代码打开集成到边缘铬的 PDF 阅读器并加载您的 PDF

      https://docs.microsoft.com/en-us/microsoft-edge/webview2/get-started/wpf

      优点:

      • 您无需负责打印
      • 搜索、多页面视图等丰富功能可供使用。
      • 是多平台的
      • 适用于 win 7 +
      • 您节省了很多时间!!!!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-13
        • 1970-01-01
        • 2021-01-18
        • 2012-01-11
        • 2011-11-01
        • 2011-06-20
        • 1970-01-01
        • 2014-06-08
        相关资源
        最近更新 更多