1

我在 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 核心 2.1

Linux 上已经安装了 libc6-dev 和 libgdiplus

Linux - Debian 9

任何人都可以帮忙吗?

4

1 回答 1

0

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

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

于 2019-02-15T13:54:07.280 回答