سؤال

أنا أعمل على تطبيق .NET WinForms الذي يحتاج إلى طباعة ملصق شحن FEDEX.كجزء من واجهة برمجة تطبيقات FedEx، يمكنني الحصول على بيانات الملصق الأولية للطابعة.

لا أعرف كيفية إرسال تلك البيانات إلى الطابعة عبر .NET (أنا أستخدم C#).للتوضيح، تم بالفعل تنسيق البيانات مسبقًا في ZPL (لغة طابعة Zebra) وأحتاج فقط إلى إرسالها إلى الطابعة دون أن تفسدها النوافذ.

هل كانت مفيدة؟

المحلول

لا تدعم لغة C# الطباعة الأولية، وسيتعين عليك استخدام التخزين المؤقت لـ win32، كما هو مفصل في مقالة قاعدة المعارف هذه كيفية إرسال البيانات الأولية إلى الطابعة باستخدام Visual C# .NET.

أتمنى أن يساعدك هذا.

-آدم

نصائح أخرى

أعتقد أنك تريد فقط إرسال ZPL (المهمة أدناه) مباشرة إلى الطابعة الخاصة بك.

private void SendPrintJob(string job)
{
    TcpClient client = null;
    NetworkStream ns = null;
    byte[] bytes;
    int bytesRead;

    IPEndPoint remoteIP;
    Socket sock = null;

    try
    {
        remoteIP = new IPEndPoint( IPAddress.Parse(hostName), portNum );
        sock = new Socket(AddressFamily.InterNetwork,
            SocketType.Stream,
            ProtocolType.Tcp);
        sock.Connect(remoteIP);


        ns = new NetworkStream(sock);

        if (ns.DataAvailable)
        {
            bytes = new byte[client.ReceiveBufferSize];
            bytesRead = ns.Read(bytes, 0, bytes.Length);
        }

        byte[] toSend = Encoding.ASCII.GetBytes(job);
        ns.Write(toSend, 0, toSend.Length);

        if (ns.DataAvailable)
        {
            bytes = new byte[client.ReceiveBufferSize];
            bytesRead = ns.Read(bytes, 0, bytes.Length);
        }
    }
    finally
    {           
        if( ns != null )            
            ns.Close();

        if( sock != null && sock.Connected )
            sock.Close();

        if (client != null)
            client.Close();
    }
}

لقد تأخر الأمر قليلًا، ولكن يمكنك استخدام مشروع CodePlex هذا لطباعة ZPL بسهولةhttp://sharpzebra.codeplex.com/

لا تستخدم طابعات Zebra التخزين المؤقت، فهي ليست طباعة خام.إنها علامة تسمى ZPL.إنه يعتمد على النص، وليس ثنائيًا.

لقد كنت أعمل مع طابعة وZPL لفترة من الوقت الآن، ولكن مع تطبيق روبي.يعمل إرسال ZPL إلى الطابعة عبر المقبس بشكل جيد.

للتأكد من أن الأمر يعمل، غالبًا ما أقوم بالاتصال بالطابعة عبر telnet وأكتب ^XA^PH^XZ لتغذية تسمية واحدة.امل ان يساعد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top