2

我正在尝试在 C#(.NET Framework 4.8)中使用 Gembox.Pdf 打印 pdf 文档。这是我使用的代码:

public void PrintPdf(string fileToPrint, string printerName, string jobName)
    {
      ComponentInfo.SetLicense("FREE-LIMITED-KEY");
      using (var document = PdfDocument.Load(fileToPrint))
      {
        document.Print(printerName, new PrintOptions
        {
          DocumentName = jobName
        });
      }
    }

我作为 jobName 传递的内容并不重要,当我查看打印队列时,我总是会看到 Xps 文档。我现在正在使用 Gembox.Pdf 的免费版本。

打印队列

我已经联系了 Gembox.Pdf 团队并在 Gembox 论坛上发帖,但到目前为止我没有收到任何回复。

4

2 回答 2

3

使用此最新的错误修复版本解决了此问题:
https ://www.gemboxsoftware.com/pdf/nightlybuilds/GBA15v1156.zip

或者这个最新的预发布 NuGet 包:
Install-Package GemBox.Pdf -Version 15.0.1156-hotfix

于 2021-06-11T02:21:29.653 回答
1

我与 Gembox.Pdf 的支持代理进行了对话,并且无法在打印时设置 DocumentName 以在队列中反映这一点(即使文档另有说明)。他们的支持代理的回应:

不幸的是,这目前是不可能实现的。

你看,在过去,我尝试过这样做,但发现在 WPF 中没有稳定的解决方案。

我得到的最接近的解决方案是使用“PrintSystemJobInfo.JobName”和“JobName.Commit”,但它在更多打印机上失败而不是成功。

恐怕为了解决这些问题,我们需要用其他东西替换 System.Printing(比如 System.Drawing.Printing 中的 GDI+ 实现或其他替代方法)。

我们为此提供了内部支持票,我也将您的报告添加到其中。

但是,请注意,这种重构需要相当大的时间投入,这就是为什么不幸的是,它不会很快完成。

我打算使用此功能在打印时跟踪我的文档的状态,但根据他们这是不可能的。

我现在明白了,恐怕没有办法做到这一点。

print 方法基本上调用 XpsDocumentWriter.Write(DocumentPaginator) ,它不提供任何反馈。

所以是的,你需要检查工作。

但不幸的是,如前所述,PrintSystemJobInfo.JobName 无法始终如一地工作,这就是我们没有解决方案的原因。

所以我将无法使用 Gembox.Pdf 是结论。是完整的对话。

于 2021-06-09T13:33:47.590 回答