2014-01-03 3 views
1

У меня есть проверка, и я пытаюсь распечатать ее данные вручную - инструменты отчетов не разрешены - и моя цель - это принтер PDF и проверка бумаги, и я должен использовать принтер формата A4.Печатать текст по вертикали

Вот иллюстрация:

Мои шаги:

  1. Укажите проверить размер, как мой фактический размер бумаги.
  2. написать данные.
  3. Печатать результат на принтере.

На шаге 1, я создал PrintDocument экземпляр и установить DefaultPageSettings.PaperSize в соответствии с размерами входного бумаги, установив RawKind в 120, что означает пользовательский размер бумаги, то я настроить PrintPage обработчик, тогда я называю Print.

На этапе 2 данные, записанные на e.Graphics без проблем.

В шаге 3 при печати на принтер PDF результат будет таким, как ожидалось, и строки можно скопировать, а также ручной просмотр на контрольном изображении.

Проблемы при печати на принтер формата А4 - HP Laserjet 1018 - я установил линейку верхнего лотка к середине, чтобы он мог держать чек, который я ставлю вертикально, теперь при печати две вещей случились:

  1. текст напечатан горизонтально.
  2. поскольку линейка принтеров установлена ​​в середину, место печати недействительно (или я думаю, что на самом деле у меня не было возможности проверить этот результат).

Как устранить проблемы с принтером?

+1

Я отредактировал ваше название. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

+0

получил, не забудет его снова, спасибо –

ответ

0
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) 
    { 
     float vlblControlWidth; 
     float vlblControlHeight; 
     float vlblTransformX; 
     float vlblTransformY; 

     Color controlBackColor = BackColor; 
     Pen labelBorderPen; 
     SolidBrush labelBackColorBrush; 

     if (_transparentBG) 
     { 
      labelBorderPen = new Pen(Color.Empty, 0); 
      labelBackColorBrush = new SolidBrush(Color.Empty); 
      } 
      else 
      { 
       labelBorderPen = new Pen(controlBackColor, 0); 
       labelBackColorBrush = new SolidBrush(controlBackColor); 
      } 

     SolidBrush labelForeColorBrush = new SolidBrush(base.ForeColor); 
     base.OnPaint(e); 
     vlblControlWidth = this.Size.Width; 
     vlblControlHeight = this.Size.Height; 
     e.Graphics.DrawRectangle(labelBorderPen, 0, 0, 
           vlblControlWidth, vlblControlHeight); 
     e.Graphics.FillRectangle(labelBackColorBrush, 0, 0, 
           vlblControlWidth, vlblControlHeight); 
     e.Graphics.TextRenderingHint = this._renderMode; 
     e.Graphics.SmoothingMode = 
        System.Drawing.Drawing2D.SmoothingMode.HighQuality; 

     if (this.TextDrawMode == DrawMode.BottomUp) 
     { 
      vlblTransformX = 0; 
      vlblTransformY = vlblControlHeight; 
      e.Graphics.TranslateTransform(vlblTransformX, vlblTransformY); 
      e.Graphics.RotateTransform(270); 
      e.Graphics.DrawString(labelText, Font, labelForeColorBrush, 0, 0); 
     } 
     else 
     { 
       vlblTransformX = vlblControlWidth; 
       vlblTransformY = vlblControlHeight; 
       e.Graphics.TranslateTransform(vlblControlWidth, 0); 
       e.Graphics.RotateTransform(90); 
       e.Graphics.DrawString(labelText, Font, labelForeColorBrush, 0, 
            0,StringFormat.GenericTypographic); 
      }    
     } 

     SetStyle(System.Windows.Forms.ControlStyles.Opaque, true); 

    } 

protected override CreateParams CreateParams 
{ 
    get 
    { 
     CreateParams cp = base.CreateParams; 
     cp.ExStyle |= 0x20; // Turn on WS_EX_TRANSPARENT 
     return cp; 
    } 
} 
+0

не могли бы вы объяснить? –

Смежные вопросы