在win2003 server下开发的程序,其中包含打印功能,程序开发出来在2003server下可以正常打印,拿到98下,打印就出现异常,异常情况如下:
System.ArithmeticException: Overflow or underflow in the arithmetic operation.
   at System.Drawing.Font.Initialize(FontFamily family, Single emSize, FontStyle style, GraphicsUnit unit, Byte gdiCharSet, Boolean gdiVerticalFont)
   at System.Drawing.Font..ctor(String familyName, Single emSize, FontStyle style, GraphicsUnit unit, Byte gdiCharSet)
   at JiLiang.证书.InitializeComponent()
   at JiLiang证书..ctor()
   at JiLiang.PrintCer.pd_PrintPage(Object sender, PrintPageEventArgs e)
   at System.Drawing.Printing.PrintDocument.OnPrintPage(PrintPageEventArgs e)
   at System.Drawing.Printing.PrintDocument._OnPrintPage(PrintPageEventArgs e)
   at System.Drawing.Printing.PrintController.PrintLoop(PrintDocument document)
   at System.Drawing.Printing.PrintController.Print(PrintDocument document)
   at System.Drawing.Printing.PrintDocument.Print()
   at JiLiang.PrintCer.PrintMyDoc()
   at JiLiang.查询及打印.btn_Print_Click(Object sender, EventArgs e)

解决方案 »

  1.   

    这个问题我帮不了你,可是我想问你一下,在WINDOWS2003中的数据库是如何连接的,
    谢谢
      

  2.   

    你在new font的时候调用Initialize的原型是:
    private void Initialize(FontFamily family, float emSize, FontStyle style, GraphicsUnit unit, byte gdiCharSet, bool gdiVerticalFont)
    {
          object[] objArray1;
          if (family == null)
          {
                throw new ArgumentNullException("family");
          }
          if (((emSize == float.NaN) || (emSize == float.NegativeInfinity)) || (((emSize == float.PositiveInfinity) || (emSize <= 0f)) || (emSize > float.MaxValue)))
          {
                objArray1 = new object[4] { "emSize", emSize, 0, "System.Single.MaxValue" } ;
                throw new ArgumentException(SR.GetString("InvalidBoundArgument", objArray1), "emSize");
          }
          IntPtr ptr1 = IntPtr.Zero;
          int num1 = SafeNativeMethods.GdipCreateFont(new HandleRef(family, family.nativeFamily), emSize, style, unit, out ptr1);
          if (num1 == 15)
          {
                objArray1 = new object[2] { family.Name, style.ToString() } ;
                throw new ArgumentException(SR.GetString("GdiplusFontStyleNotFound", objArray1));
          }
          if (num1 != 0)
          {
                throw SafeNativeMethods.StatusException(num1);
          }
          this.SetNativeFont(ptr1);
          this.gdiCharSet = gdiCharSet;
          this.gdiVerticalFont = gdiVerticalFont;
    }
     你自己分析下你的参数!
      

  3.   

    看不出来有什么错误。我在2000pro底下也能正常打印
      

  4.   

    to  blazelgh(blaze) 
      打印字体在哪里看? 我把2003的fonts文件夹整个考到98下的fonts了。可还是出错