.NET Core System.Drawing.Common PrintDocument在Linux上不起作用

时间:2019-02-14 10:36:16

标签: c# linux .net-core system.drawing.common

在Linux上使用System.Drawing.Common时,我在使用PrintDocument时遇到问题,更具体地说,问题出在PrinterSettings.Unix中使用的PrintingServices.LoadPrinterSettings。

这里的错误内容:

  

Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware [1]
  执行请求时发生未处理的异常。   System.NullReferenceException:对象引用未设置为实例   一个对象。在   System.Drawing.Printing.PrintingServices.LoadPrinterSettings(字符串   打印机,PrinterSettings设置)

在Windows上,一切正常,因为PrintDocument使用了为Windows准备的解决方案。

代码:

PrintDocument pd = new PrintDocument();
pd.PrinterSettings.PrinterName = printerName;
pd.OriginAtMargins = true;
pd.DefaultPageSettings.Landscape = true;
pd.DefaultPageSettings.Margins = new Margins(0, 0, 0, 0);
pd.PrintPage += new PrintPageEventHandler(Pd_PrintPage);
pd.Print();

我正在使用:

System.Drawing.common(4.5.1)

.NET Core 2.1

libc6-dev和libgdiplus已在Linux上安装

Linux-Debian 9

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

这很可能是System.Drawing.Common中的问题。 Linux上的打印代码已从Mono移植而来,并没有引起很多关注。

如果您可以创建“最小回购”,我认为最好的选择是在https://github.com/dotnet/corefx提交问题(或者甚至更好,发送PR)。