1

我正在使用 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 控件。如果按原样运行窗体,预览控件将显示一个空白页,页脚显示“测试”。一切都很好,但我无法打印该页脚。如果我尝试直接打印(注释代码的第一块),我只会得到一个空白页。当我尝试使用预览器的渲染器(第二个注释代码块)打印它时也是如此。

有任何想法吗?

4

3 回答 3

0

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

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

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

于 2013-11-20T07:43:01.417 回答
0

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

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

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

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

于 2015-07-07T15:54:25.400 回答
0

如果您需要在打印后显示预览,那么您可以使用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 +
  • 你节省了很多时间!!!!
于 2021-08-13T17:07:23.063 回答