Как предотвратить перевод строки после завершения печати на параллельный принтер в C # - PullRequest
0 голосов
/ 27 сентября 2019

Я сделал код для печати строк текста на параллельном принтере, используя класс PrintDocument.Эти текстовые строки всего 5 строк.Он хорошо печатается, но всегда прокручивается (перевод строки) на одну страницу.Я хочу запретить перевод строки.Как я мог это сделать?Вот код, который немного изменен из примера кода класса PrintDocument.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;
using Microsoft.Win32.SafeHandles;
using System.Drawing.Printing;
namespace ParallelPortTest
{
    public partial class Form1 : Form
    {
        FileStream filestream;
        string strTicket = "DOE / JOHN     MR                        " + Environment.NewLine +
                           "                                         " + Environment.NewLine +
                           "HEATHROW - LONDON  AA 1234  C 25MAR 21:00" + Environment.NewLine +
                           "FRANKFURT                                " + Environment.NewLine +
                           "                                      28G";
        private StreamReader streamToPrint;
        private Font printFont;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.tbSendText.Text = strTicket;

        }

        private void bttnSpool_Click(object sender, EventArgs e)
        {
            try
            {
                // convert string to stream
                byte[] byteArray = Encoding.UTF8.GetBytes(this.tbSendText.Text);
                //byte[] byteArray = Encoding.ASCII.GetBytes(contents);
                MemoryStream stream = new MemoryStream(byteArray);
                // convert stream to string
                streamToPrint = new StreamReader(stream);
                try
                {
                    printFont = new Font("Lucida Console", 12);
                    PrintDocument pd = new PrintDocument();
                    pd.PrintPage += new PrintPageEventHandler
                       (this.pd_PrintPage);
                    pd.Print();
                }
                finally
                {
                    streamToPrint.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

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

            // Calculate the number of lines per page.
            linesPerPage = Convert.ToSingle(this.tbSendText.Text.Split('\n').Length) + 1;

            // Print each line of the file.
            while (count < linesPerPage &&
               ((line = streamToPrint.ReadLine()) != null))
            {
                yPos = topMargin + (count *
                   printFont.GetHeight(ev.Graphics));
                ev.Graphics.DrawString(line, printFont, Brushes.Black,
                   leftMargin, yPos, new StringFormat());
                count++;
            }
            ev.HasMorePages = false;
        }
    }
}
...