获取打印机硬边距异常

Posted xuexiaodong2009

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取打印机硬边距异常相关的知识,希望对你有一定的参考价值。

在项目上使用打印机,经常会出现获取打印机硬边距异常的情况

 private string GetPageSettings()
        
            string text = string.Empty;
            string PrinterName = printDocument.PrinterSettings.PrinterName;
            PageSettings printerSettings = printDocument.DefaultPageSettings;
            bool hasErr = !printDocument.PrinterSettings.IsValid;
            if (hasErr)
            
                LogInfo.Error("设置打印机无效" + PrinterName + "不存在");
            
            try
            
                float HardMarginX = printerSettings.HardMarginX; //左侧,右侧不能打印的区域
                float HardMarginY = printerSettings.HardMarginY; //上方,下方不能打印的区域              
            
            catch (Exception ex)
            
                LogInfo.Error("打印机硬边距异常", ex);
                LogInfo.Error("请确认打印机PrinterName=" + PrinterName + ",能正常使用");
                hasErr = true;
                     
            return text;
        

经常出现调用printerSettings.HardMarginX这一行代码是会出现异常,后来发现,是因为打印机名称有问题,不知道为什么打印机的名称是Default printer is not set

如果打印机名称是这个就会出现调用硬边距错误的问题。

因此应该首先判断是否有效printDocument.PrinterSettings.IsValid,然后还需要判断打印机名称是不是有效。再加上了这两个判断后,几乎就没有出现过错误了。

 private static bool IsErrPrinterName(string PrinterName)
        
            string errPrinterName = "未设置";//未设置默认打印机。
            string errPrinterName2 = "not set";//Default printer is not set.

            if (string.IsNullOrEmpty(PrinterName))
            
                return true;
            
            if (PrinterName.IndexOf(errPrinterName) >= 0)
            
                return true;
            
            if (PrinterName.IndexOf(errPrinterName2) >= 0)
            
                return true;
            
            return false;
        

以上是关于获取打印机硬边距异常的主要内容,如果未能解决你的问题,请参考以下文章

获取打印机硬边距异常

获取打印机硬边距异常

获取打印机硬边距异常

Scikit Learn Support Vector Classifier 是硬边距和软边距吗

SVM分类总是产生唯一的解决方案吗?

jq获取元素的宽高(内边距和外边距)