2012-03-23 14 views
5

Używam this device do drukowania kodu kreskowego, ale drukarka nie przerywa drukowania, dając mi puste tagi, dopóki nie wyłączy się. Znalazłem this question, ale określenie rozmiaru papieru nie pomogło mi.Nie można zatrzymać drukowania

Kod używam:

PrintDocument document = new PrintDocument(); 
document.DefaultPageSettings.PaperSize = 
    new PaperSize("Custom", Centimeters(7), Centimeters(5)); 
document.PrintPage += (s, a) => 
{ 
    a.Graphics.DrawString("*123456*", 
          BarcodeFont, 
          new SolidBrush(Color.Black), 
          new Point(0, 0)); 
} 
document.Print(); 

Centymetry Metoda:

// Converts the unit "Hundredths of an inch" to centimeter. 
int Centimeters(int centimeters) 
{ 
    return (int)((centimeters * 100)/2.54); 
} 

wypisuje kod kreskowy do pierwszego znacznika poprawnie, ale nie zatrzymać. Tagi mają wymiary 7 x 5 cm. i ustawiłem rozmiar papieru zgodnie z tym, nie mam pojęcia, co jeszcze mogę zrobić.

Edit: Otoczenie HasMorePages false nie pomogło i wiem, że to nie dlatego, że urządzenia używam: Istnieje kilka innych programów Obecnie używać do drukowania kodów kreskowych i wszystkie one działają.

+0

pomocą debuggera. Ustaw punkt przerwania w kodzie lambda PrintPage * i * w wywołaniu Print(). Przy znaczących szansach, że punkt przerwania wywołania Print() trafi więcej niż raz. Spójrz na stos wywoławczy, aby zobaczyć, jak to się stało. –

+0

@Hans, nie, trafia tylko raz. –

+0

Czy zmieniasz wydruk? (Większość) Drukarki termiczne muszą zostać ponownie skalibrowane, zanim zauważy zmianę rozmiaru etykiety. (sManual_Polish.pdf p27) – charlesbridge

Odpowiedz

5

ustawić właściwość HasMorePages z eventArgs false:

document.PrintPage += (s, a) => 
{ 
    a.Graphics.DrawString("*123456*", 
          BarcodeFont, 
          new SolidBrush(Color.Black), 
          new Point(0, 0)); 
    a.HasMorePages = false; 
} 
+0

Dziękuję za odpowiedź, ale nie zadziałała. Ciągle trwa, dopóki nie wyłączyłem przełącznika zasilania. –

+0

To już jest fałsz, to nie jest powód. –