Drukowanie A5 w poziomie.

Drukowanie A5 w poziomie.
HI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1863
0

Witam.

Próbuję wydrukować coś na kartce formatu A5 w poziomie.
Wyklepałem coś takiego:

Kopiuj
private void Print()
{
	PrintDocument printDocument1 = new PrintDocument();
	var paperSize = printDocument1.PrinterSettings.PaperSizes.Cast<PaperSize>().FirstOrDefault(e => e.PaperName == "A5");
	printDocument1.PrinterSettings.DefaultPageSettings.PaperSize = paperSize;
	printDocument1.PrinterSettings.DefaultPageSettings.Landscape = true;
	printDocument1.PrintPage += printDocument1_PrintPage;
	printDocument1.Print();
}

        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            e.Graphics.DrawRectangle(new Pen(Color.Black, (float)0.2), new Rectangle(5, 5, 500, 60));
            e.Graphics.DrawString("TEST WYDRUKU", new Font("Tahoma", 13, FontStyle.Bold), new SolidBrush(Color.Black), new Rectangle(5, 10, 500, 50));
        } 

Jednak wydruk jest na A4 i w pionie (przykładowy z drukarki PDF w załączniku).

Pytanie standardowe: co zrobiłem źle?

maniutek20
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 138
0

prawdopodobnie (nie wiem jak w tym języku się drukuje), najbardziej podejrzany jest fragment "PaperName == "A5");" tzn. nie wiadomo czy taki rozmiar jest zdefiniowany w drukarce. Np. przy korzystaniu z GhostScripta, w przypadku błędnego polecenia wszystko leci w opcji "deflault" -pionowe A4

HI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1863
0

Problem był banalny (wstyd się przyznać).

Kopiuj
private void Print()
{
	PrintDocument printDocument1 = new PrintDocument();
	var paperSize = printDocument1.PrinterSettings.PaperSizes.Cast<PaperSize>().FirstOrDefault(e => e.PaperName == "A5");

	// tak było
	//printDocument1.PrinterSettings.DefaultPageSettings.PaperSize = paperSize;
	//printDocument1.PrinterSettings.DefaultPageSettings.Landscape = true;

	// tak powinno być
	printDocument1.DefaultPageSettings.PaperSize = paperSize;
	printDocument1.DefaultPageSettings.Landscape = true;

	printDocument1.PrintPage += printDocument1_PrintPage;
	printDocument1.Print();
}

        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            e.Graphics.DrawRectangle(new Pen(Color.Black, (float)0.2), new Rectangle(5, 5, 500, 60));
            e.Graphics.DrawString("TEST WYDRUKU", new Font("Tahoma", 13, FontStyle.Bold), new SolidBrush(Color.Black), new Rectangle(5, 10, 500, 50));
        } 

Próbowałem zmienić ustawienia drukarki (na co ona sama pewnie "ot tak" nie pozwala), a nie ustawienia swojego wydruku.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.