C#中扩展的PageSize信息

时间:2011-03-24 17:39:56

标签: c# printing

我必须将自定义标签打印到热敏打印机。我有一切设置和工作有一个例外:标签卷每行有两个标签,但C#打印对象似乎看不到。

当我查询PageSize信息时,它告诉我标签是3.15“x 0.75”。虽然这对于整个标签来说都是正确的,但它并没有向我提供有关每个标签大小或间距之间的任何信息。

深入了解驱动程序ini文件,有一行看起来像PageSize84 = THT-6-423,3150,2,1500,750,150,125,1。我需要的所有信息似乎都列在这一行(2列,1500宽,750高),我只是不知道如何从C#访问它。我今天一直在网上搜索,我没有运气。

我现在总是可以对信息进行硬编码,但是如果制造商更改了标签,那么未来就不会对代码进行验证。

1 个答案:

答案 0 :(得分:3)

如果您正在尝试读取ini文件以获取值,则可以使用此值。

IniFile.ReadIniValue(“[Tag]”,“Server”,@“C:\ my.ini”);

#region Usings

using System.Text;
using System.Runtime.InteropServices;
#endregion

/// <summary>
/// Communicates with ini files
/// </summary>
public static class IniFile
{
    #region Declarations



    #endregion

    #region Constructor/Deconstructor

    /// <summary>
    /// Initializes a new instance of the <see cref="IniFile"/> class.
    /// </summary>
    static IniFile()
    {
    }

    #endregion

    #region Properties



    #endregion

    #region Win32_API

    [DllImport("kernel32")]
    private static extern int GetPrivateProfileString(
        string section,
        string key, string def,
        StringBuilder retVal,
        int size, string filePath);

    [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
    [return: MarshalAs(UnmanagedType.Bool)]
    static extern bool WritePrivateProfileString(string lpAppName,
       string lpKeyName, string lpString, string lpFileName);

    #endregion

    /// <summary>
    /// Reads the ini value.
    /// </summary>
    /// <param name="section">The section.</param>
    /// <param name="key">The key.</param>
    /// <param name="iniFilePath">The ini file path.</param>
    /// <returns>Value stored in key</returns>
    /// <exception cref="FileNotFoundException"></exception>
    public static string ReadIniValue(string section, string key, string iniFilePath)
    {
        if(!File.Exists(iniFilePath))
        {
            throw new FileNotFoundException();
        }

        const int size = 255;
        var buffer = new StringBuilder(size);
        var len = GetPrivateProfileString(section, key, string.Empty, buffer, size, iniFilePath);

        if (len > 0)
        {
            return buffer.ToString();
        }
        return string.Empty;
    }

    /// <summary>
    /// Writes the ini value.
    /// </summary>
    /// <param name="section">The section.</param>
    /// <param name="keyname">The keyname.</param>
    /// <param name="valueToWrite">The value to write.</param>
    /// <param name="iniFilePath">The ini file path.</param>
    /// <returns>true if write was successful, false otherwise</returns>
    public static bool WriteIniValue(string section,string keyname,string valueToWrite,string iniFilePath)
    {
        return WritePrivateProfileString(section, keyname, valueToWrite, iniFilePath);
    }
}