Исходный файл верный, фактический отпечаток перемещен вправо и вниз с помощью system.drawing print - PullRequest
0 голосов
/ 18 сентября 2018

Я унаследовал приложение, созданное людьми, которые больше не работают на моего работодателя, и я смотрю на проблему печати, где вывод (слегка) падает со страницы.

Должно быть:

enter image description here

Но получается так:

enter image description here

Я добавил черные границы для удобочитаемости на этой странице.

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

Мой вопрос

Я просматриваю код, ищу варианты, которые могут вызвать это, но сейчас я рисую пробел.

Вариант A (идеальное решение):

Любые идеи о том, что может быть причиной этого сдвига вправо-вниз?

Вариант B

Любая идея, как я могу уменьшить масштаб печатаемого материала, чтобы контент больше не падает со страницы?

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

1 Ответ

0 голосов
/ 26 сентября 2018

Поскольку вы не опубликовали свой код, ответить на ваш вопрос немного сложнее, но вот два решения вашей проблемы:

в вашем классе System.Drawing.Printing.PrintDocument, переопределите стандартный OnPrintPageи измените поля страницы:

protected override void OnPrintPage(System.Drawing.Printing.PrintPageEventArgs e)
{
    base.OnPrintPage(e);
    // Create a new instance of Margins with 1-inch margins.
    e.PageSettings.Margins = new System.Drawing.Printing.Margins(100, 100, 100,100);
}

Вы можете узнать больше о свойстве Margins здесь

Вы также можете поиграть с настройками следующим образом:

        protected override void OnPrintPage(System.Drawing.Printing.PrintPageEventArgs e)
        {
            // Run base code
            base.OnPrintPage(e);

            //Declare local variables needed

            int printHeight;
            int printWidth;
            int leftMargin;
            int rightMargin;
            Int32 lines;
            Int32 chars;

            //Set print area size and margins
            {
                printHeight = base.DefaultPageSettings.PaperSize.Height - base.DefaultPageSettings.Margins.Top - base.DefaultPageSettings.Margins.Bottom;
                printWidth = base.DefaultPageSettings.PaperSize.Width - base.DefaultPageSettings.Margins.Left - base.DefaultPageSettings.Margins.Right;
                leftMargin = base.DefaultPageSettings.Margins.Left;  //X
                rightMargin = base.DefaultPageSettings.Margins.Top;  //Y
            }
        }

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

...