C# 实现调用fnthex.32dll进行斑马打印机打印汉字打印出来为什么是空白的?
本帖最后由 u010319735 于 2013-05-28 17:32:05 编辑 如题:
C# 实现调用fnthex.32dll进行斑马打印机打印汉字打印出来为什么是空白的?
贴上代码:
[DllImport("FNTHEX32.DLL")]
public static extern int GETFONTHEX(
string BarcodeText,
string FontName,
string FileName,
int Orient,
int Height,
int Width,
int IsBold,
int IsItalic,
StringBuilder ReturnBarcodeCMD);
//调用
private void button1_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(comboBox1.Text))
{
string sBarCodeCMD = ""; //条码打印命令
StringBuilder sb1 = new StringBuilder(21 * 1024);
//sb1.Length = ;
int ceshi;
ceshi = GETFONTHEX("测试", "宋体", "temp1", 0, 30, 20, 0, 0, sb1);
sBarCodeCMD = sb1.ToString() + "^XA^MD30^LH20,20^FO20,20^XGtemp1,1,1^FS^XZ";
// 发送一个打印指令到打印机 cmbInstalledPrinters.Text打印机名称, this.richTextBox2.Text(指令)
RawPrinterHelper.SendStringToPrinter(comboBox1.Text, sBarCodeCMD);
}
}
}
我的机型是GT800(EPL)望大家伸出援助之手帮下,被这问题磨了4天了,英文数字能打印 就是中文 不可以,前面还会报错 现在不报错 执行打印程序 打印出来是空白 如果有大神有小例子的话发我375135264@qq.com 非常感谢啊
C# 斑马打印机 fnthex32.dll 打印机打印
[解决办法]
估计是打印区设置的问题,没有打到正经的地方
[解决办法]
[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);
}
}
要是你还没搞定,我有完整的示例。