Это мой * .prn файл:Zebra Принтер C# код для печати штрих-код этикетки
I8,A,001 Q0001,0 q831 rN S5 D10 ZT JF O R20,0 f100 N B775,188,2,1,2,6,160,B,"SM00020000" X0,199,1,0,200 P1
SM00020000
быть штрих-код.
string s = "I8,A,001\n\n\nQ0001,0\nq831\nrN\nS5\nD10\nZT\nJF\nO\nR20,0\nf100\nN\nB775,188,2,1,2,6,160,B,\"SM00020000\",199,1,0,200\nP1\n";
PrintDialog pd = new new PrintDialog();
pd.PrinterSettings = new System.Drawing.Printing.
pd.PrinterSettings.PrinterName = "ZDesigner GT800 (EPL)";
RawPrinterHelper.SendStringToPrinter(pd.PrinterSettings.PrinterName, s);
public static bool SendStringToPrinter(string szPrinterName, string szString)
{
IntPtr pBytes;
Int32 dwCount;
// How many characters are in the string?
dwCount = szString.Length;
// Assume that the printer is expecting ANSI text, and then convert
// the string to ANSI text.
pBytes = Marshal.StringToCoTaskMemAnsi(szString);
// Send the converted ANSI string to the printer.
SendBytesToPrinter(szPrinterName, pBytes, dwCount);
Marshal.FreeCoTaskMem(pBytes);
return true;
}
public static bool SendBytesToPrinter(string szPrinterName, IntPtr pBytes, Int32 dwCount)
{
Int32 dwError = 0, dwWritten = 0;
IntPtr hPrinter = new IntPtr(0);
DOCINFOA di = new DOCINFOA();
bool bSuccess = false; // Assume failure unless you specifically succeed.
di.pDocName = "My C#.NET RAW Document";
di.pDataType = "RAW";
// Open the printer.
if (OpenPrinter(szPrinterName.Normalize(), out hPrinter, IntPtr.Zero))
{
// Start a document.
if (StartDocPrinter(hPrinter, 1, di))
{
// Start a page.
if (StartPagePrinter(hPrinter))
{
// Write your bytes.
bSuccess = WritePrinter(hPrinter, pBytes, dwCount, out dwWritten);
EndPagePrinter(hPrinter);
}
EndDocPrinter(hPrinter);
}
ClosePrinter(hPrinter);
}
// If you did not succeed, GetLastError may give more information
// about why not.
if (bSuccess == false)
{
dwError = Marshal.GetLastWin32Error();
}
return bSuccess;
}
Этот код не помогает мне печатать мою этикетку. Документ отправляется в очередь печати, но после этого ничего не происходит. Хотя принтер настроен правильно, и я успешно распечатал его с помощью Zebra Designer.
Кроме того, я бы хотел, чтобы приведенный выше код был напечатан 3 ярлыка в одной строке, так как у меня есть носитель, который содержит 3 наклейки в одной строке. Как это можно достичь?
Модель моего принтера - ZDesigner GT800 (EPL).
Вам не нужно 'StringToCoTaskMemAnsi', используйте [' System.Text.Encoding.Ascii.GetBytes'] (https://msdn.microsoft.com/en-us/library/ds4kkd55%28v= vs.110% 29.aspx). Вам также не нужно запускать страницы, вы печатаете необработанные данные печати на принтер, используйте только «StartDocPrinter» и «WritePrinter». – GSerg
«\ n» может быть неоднозначным в зависимости от вашей среды. Принтеры EPL ожидают, что LINEFEED завершит линию, а не CR. Попробуйте поменять местами «\ x0A» (или C# equivilent) – charlesbridge