Не удается заставить принтер печатать бумагу нестандартного размера в проекте C # Windows Form - PullRequest
1 голос
/ 10 сентября 2011

Недавно я пытался напечатать форму в приложении на C #. Снимать изображение с формы было легко, но я застрял в разделе печати.Я прочитал так много статей и так много решений, чтобы напечатать бумагу нестандартного размера (я имею в виду, что моя форма должна быть напечатана на бумаге, которую я указываю для принтера), но, к сожалению, ни одна из них не сработала.

Вотчто у меня есть в моем проекте до сих пор:

//my method for taking a picture form the form , and then printing it .
void PrintImage(object o, PrintPageEventArgs e)
{
    int x = SystemInformation.WorkingArea.X;
    int y = SystemInformation.WorkingArea.Y;
    int width = this.Width;
    int height = this.Height;

    Rectangle bounds = new Rectangle(x, y, width, height);
    Bitmap img = new Bitmap(width, height);

   // e.PageSettings.PaperSize = new PaperSize("62mm", 244, (int)Size.Width) { RawKind = 259 };

    this.DrawToBitmap(img, bounds);
    Point p = new Point(0, 0);
    e.Graphics.DrawImage(img, p);
}

//getting the list of installed printers .  
private void comboBox1_Click(object sender, EventArgs e)
{
    comboBox1.Items.Clear();
    foreach (string printer in PrinterSettings.InstalledPrinters)
    {
        comboBox1.Items.Add(printer);
    }
}




   //Print Button Click event declaration 
    private void btnPrint_Click(object sender, EventArgs e)
    {
        PrintDocument pd = new PrintDocument();
        if (comboBox1.SelectedIndex !=-1)
        {
            pd.PrinterSettings.PrinterName = comboBox1.SelectedItem.ToString();
        }
        pd.DefaultPageSettings.PaperSize = new PaperSize("CardSize", 50, 50);
        pd.PrintPage += new PrintPageEventHandler(PrintImage);
        pd.Print();

    }

1 Ответ

4 голосов
/ 01 октября 2011

хорошо, я выяснил это: для изготовления бумаги нестандартного размера нужно просто сделать:

          PrintDocument pd = new PrintDocument();
          PaperSize paperSize = new PaperSize("MyCustomSize", 200, 200 ); //numbers are optional

           paperSize.RawKind = (int)PaperKind.Custom;

           pd.DefaultPageSettings.PaperSize = paperSize;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...