本帖最后由 u010319735 于 2013-05-28 17:32:05 编辑

解决方案 »

  1.   

    [DllImport(@"Fnthex32.dll", CharSet = CharSet.Ansi)]
            public static extern int GETFONTHEX(
            string chnstr,
            string fontname,
            int orient,
            int height,
            int width,
            int bold,
            int italic,
            StringBuilder param1);        public enum Orientation
            {
                Orien0,
                Orien90,
                Orien180,
                Orien270
            } //private void BarCodeTool()
            //{ 
            /// <summary>
            /// 获取字体编码
            /// </summary>
            /// <param name="printText">打印文本</param>
            /// <param name="printFont">字体名称</param>
            /// <param name="Orientation">旋转方向</param>
            /// <param name="height">高度</param>
            /// <param name="width">宽度</param>
            /// <param name="IsBold">是否粗体</param>
            /// <param name="IsItalic">是否斜体</param>
            /// <returns></returns>
            public static ConverFontToImageResult getFontText(string printText, string printFont, Orientation Orientation, int height, int width, bool IsBold, bool IsItalic)
            {
                ConverFontToImageResult result = null;;
                try
                {
                    StringBuilder buder = new StringBuilder(30000);
                    string temp = string.Empty;
                    int bold = IsBold ? 1 : 0;
                    int italic = IsItalic ? 1 : 0;                int count = GETFONTHEX(printText, printFont, 0, height, width,bold, italic, buder);
                    if (count > 0)
                    {
                       
                        result=new ConverFontToImageResult();
                        temp = buder.ToString();
                        string[] data = temp.Split(',');
                        result.ImageName = data[0].Replace("~DG", "") + randrom.ToString();
                        result.Instruction = "~DGR:";
                        result.TotalSize = data[1];
                        result.RowSize = data[2];
                        result.ImageData = data[3];
                    }
                }
                catch (Exception ex)
                {            }            return result;        }
    ConverFontToImageResult pinming = getFontText("打印中文内容", "黑体", Orientation.Orien0,55,20,true, false);
                Writer.WriteLine(pinming.Instruction.ToString() + pinming.ImageName.ToString() + "," + pinming.TotalSize.ToString() + "," + pinming.RowSize.ToString() + ",");
                Writer.WriteLine(pinming.ImageData.ToString());
                Writer.WriteLine("^FO225,220^XG" + pinming.ImageName.ToString() + ",1,1^FS");  //打印品名
    public  class ConverFontToImageResult
        {
            private string imageName;
            /// <summary>
            /// 文件名称
            /// </summary>
            public string ImageName
            {
                get { return imageName; }
                set { imageName = value; }
            }        private string instruction;
            /// <summary>
            /// 图片指令
            /// </summary>
            public string Instruction
            {
                get { return instruction; }
                set { instruction = value; }
            }        private string imageData;
            /// <summary>
            /// 图片数据
            /// </summary>
            public string ImageData
            {
                get { return imageData; }
                set { imageData = value; }
            }        private string totalSize;
            /// <summary>
            /// 总共字节数
            /// </summary>
            public string TotalSize
            {
                get { return totalSize; }
                set { totalSize = value; }
            }
            private string rowSize;
            /// <summary>
            /// 每行字节数
            /// </summary>
            public string RowSize
            {
                get { return rowSize; }
                set { rowSize = value; }
            }        /// <summary>
            /// 获取包装过的数据字符串
            /// </summary>
            /// <returns></returns>
            public string GetDateString()
            {
                return string.Format("{0}{1},{2},{3},{4}", this.Instruction, this.ImageName, this.TotalSize, this.RowSize, this.ImageData);
            }
            /// <summary>
            /// 获取包装过的数据字符串
            /// </summary>
            /// <returns></returns>
            public string GetDateString(string iamgeName)
            {
                return string.Format("{0}{1},{2},{3},{4}", this.Instruction, iamgeName, this.TotalSize, this.RowSize, this.ImageData);
            }    }要是你还没搞定,我有完整的示例。
      

  2.   

    谢谢 我试用了下 现在打印2维码 居然可以了 什么个情况 兄弟我把分全给你吧  谢谢你了 如果你方便的话 把你的完整例子发下我看看 [email protected] 
      

  3.   

    怎么使用fnthex32.dll打印二维码呀,真是无头绪,拜托LZ帮帮忙,指导一下吧~~~~~~~~~~~~
      

  4.   


    是斑马打印机来的,不知道怎么使用FNTHEX32.DLL来打印二维码,现在是只能打印中文字呢~~~
      

  5.   

    longteng670603753很厉害,我亲自测试没问,解决了几天来一直为解决的中文打印问题,多谢了!
      

  6.   

    可以给我传一份完整的代码吗?我这边还是没有调试出来。ConverFontToImageResult pinming = getFontText("打印中文内容", "黑体", Orientation.Orien0,55,20,true, false);
                Writer.WriteLine(pinming.Instruction.ToString() + pinming.ImageName.ToString() + "," + pinming.TotalSize.ToString() + "," + pinming.RowSize.ToString() + ",");
                Writer.WriteLine(pinming.ImageData.ToString());
                Writer.WriteLine("^FO225,220^XG" + pinming.ImageName.ToString() + ",1,1^FS");  //打印品名
    上面这段代码是什么意思,怎么发送给打印机!!!