2013-07-31 9 views
1

извини, мой английскийпечать напечатанной счет-фактура, поле в положении х, Ус # от формата файла

хорошо, я вижу в программе, когда ей нужно напечатать что-то первое, что считывается файл, который содержит строку и столбец полей, которые будут печататься на матричном принтере (принтер точек, я не нашел правильное слово)

моя идея - записать в файл положение полей, которые мне нужно распечатать следующим образом:

(x, y) fields1, (x, y) fields2, (x, y) fields3,

и таким образом напечатать каждое поле, так что моя программа должна прочитать файл для печати, этот способ позволяет мне изменить положение полей в формате, если напечатанной документ, который мне нужно для печати изменить что-то

я хочешь сделать это, потому что у меня есть много отпечатанных с различного счета-фактуры и мне нужно настроить путь принтера

я читал о PrintDocument, но я не нашел что-то хорошо объяснение этого и я прочитал this, но это очень простой пример

Надеюсь, кто-то может вести меня на буровой установке ht direction

ответ

0

Я не думаю, что тип принтера имеет значение (матрица против струйной печати против лазера). Вот более полный пример кода.

http://msdn.microsoft.com/en-us/library/system.drawing.printing.printdocument.printpage.aspx

Для конкретного сценария, вам нужно будет разобрать х, у позиционной информации из вашего файла формата счет для каждого поля. Когда у вас есть x и y, просто нарисуйте его на аргументы события PrintPage Graphics, как в примере кода.

Сложная часть будет обрабатывать файл формата для правильных данных позиции x и y. Вы можете сделать вещи проще для себя, используя очень простой формат. Например, вы можете форматировать файл следующим образом.

x 
    y 
    [field1] 
    x 
    y 
    [field2] 
    ... 

Итак, скажем, вы хотите распечатать простую страницу, которая выглядит так.

07-31-2013   Invoice    Page 1 

    Item    Quantity   Price 
    --------   --------   -------- 
    Sprocket   1     $100.00 
    Cog    2     $ 25.00 

    Total: $150.00 

Ваш фактический файл счет-фактура будет ...

1 
    1 
    07-31-2013 
    1 
    20 
    Invoice 
    1 
    40 
    Page 1 
    3 
    1 
    Item 
    3 
    20 
    Quantity 
    3 
    40 
    Price 
    4 
    1 
    -------- 
    4 
    20 
    -------- 
    4 
    40 
    -------- 
    5 
    1 
    Sprocket 
    5 
    20 
    1 
    5 
    40 
    $100.00 
    6 
    1 
    Cog 
    6 
    20 
    2 
    6 
    40 
    $ 25.00 
    8 
    1 
    Total: $150.00 

И ваш код, чтобы напечатать это было бы что-то вроде этого.

// The PrintPage event is raised for each page to be printed. 
private void pd_PrintPage(object sender, PrintPageEventArgs ev) 
{ 
    int row = 0; 
    int col = 0; 
    float xPos = 0; 
    float yPos = 0; 
    float leftMargin = ev.MarginBounds.Left; 
    float topMargin = ev.MarginBounds.Top; 
    string line = null; 

    // Print each line of the file. 
    while (true) 
    { 
     try 
     { 
      row = Convert.ToInt32(streamToPrint.ReadLine()); 
      col = Convert.ToInt32(streamToPrint.ReadLine()); 
      line = streamToPrint.ReadLine(); 
     } 
     catch 
     { 
      break; 
     } 

     xPos = leftMargin + (col * ev.Graphics.MeasureString(" ", printFont, ev.PageBounds.Width)); 
     yPos = topMargin + (row * printFont.GetHeight(ev.Graphics)); 

     ev.Graphics.DrawString(line, printFont, Brushes.Black, xPos, yPos, new StringFormat()); 
    } 
} 
+0

да что-то вроде этого является то, что мне нужно, теперь я должен реализовать в свою идею, спасибо, вы знаете, как я печатать строку ти размера Diferent и типа письма –

+0

В примере выше, 'printFont 'определяет семейство шрифтов и размер напечатанного текста. Вы можете установить его следующим образом: printFont = new Font («Arial», 10); '. Ознакомьтесь с этой ссылкой для получения дополнительной информации - http://msdn.microsoft.com/en-us/library/system.drawing.font.aspx. –

+0

спасибо, я изучу это –