У меня возникают трудности с попыткой выяснить, печатает ли C # несколько страниц.Мое приложение создает список типов объектов, который содержит от 1 до 10 элементов.Каждый объект содержит 2 строковых атрибута: docTypeNumber и docTypeDescription.Переменная под названием flightnumber также передается в конструктор класса.Каждый экземпляр представляет собой тип документа, который должен быть напечатан в виде отдельного листа штрих-кода, который содержит номер типа документа, расшифровку и номер рейса.Большинство примеров многостраничной печати относятся к одному документу, «проливающемуся» на несколько страниц, а не к элементу, составленному из нескольких отдельных страниц.У меня вопрос как этого добиться.
Нужно ли создавать один большой документ на несколько страниц?Нужно ли создавать несколько экземпляров класса PrintDocument?
Буду признателен за любую помощь.
Вот мой код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;
namespace BarcodeTest
{
class BarcodePrinter
{
public BarcodePrinter(List<DocumentType> type, string flightnumber)
{
docType = type;
flightNumber = flightnumber;
}
//Attributes
private List<DocumentType> docType = new List<DocumentType>();
private string flightNumber;
//helper variables
string docTypeNumber;
string docTypeDescription;
int pageNumber = 1;
int numberOfPages;
private static Font barcodeFont = new Font("3 of 9 Barcode", 24);
private static Font printFont = new Font("Arial", 24);
public void Print()
{
numberOfPages = docType.Count;
PrintDocument pd = new PrintDocument();
foreach (DocumentType type in docType)
{
docTypeNumber = type.DocumentTypeNumber;
docTypeDescription = type.DocumentDescription;
pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
}//end foreach
#if DEBUG
PrintPreviewDialog printPreview = new PrintPreviewDialog();
printPreview.Document = pd;
printPreview.Show();
#else
pd.Print();
#endif
}// end Print() method
public void pd_PrintPage(Object sender, PrintPageEventArgs e)
{
Graphics g = e.Graphics;
//e.Graphics.PageUnit = GraphicsUnit.Point;
e.Graphics.PageUnit = GraphicsUnit.Inch;
StringFormat stringFormat = new StringFormat();
stringFormat.Alignment = StringAlignment.Center;
stringFormat.LineAlignment = StringAlignment.Center;
Brush br = new SolidBrush(Color.Black);
RectangleF rec1 = new RectangleF(1.9375f, 0f, 4, 1);
RectangleF rec2 = new RectangleF(1.9375f, .5f, 4, 1);
RectangleF rec3 = new RectangleF(1.9375f, 1f, 4, 1);
RectangleF rec4 = new RectangleF(1.9375f, 2, 4, 1);
RectangleF rec5 = new RectangleF(1.9375f, 2.5f, 4, 1);
g.DrawString("Air - " + docTypeDescription, printFont, br, rec1, stringFormat);
g.DrawString("*" + docTypeNumber + "*", barcodeFont, br, rec2, stringFormat);
g.DrawString(docTypeNumber, printFont, br, rec3, stringFormat);
g.DrawString("*" + flightNumber + "*", barcodeFont, br, rec4, stringFormat);
g.DrawString(flightNumber, printFont, br, rec5, stringFormat);
if (pageNumber < numberOfPages)
{
e.HasMorePages = true;
}
else
e.HasMorePages = false;
pageNumber++;
}//end pd_PrintPage Method
}//end BarcodePrinter Class
}//end namespace