Принтер с надписью начинает печатать пустые страницы на больших рабочих местах

Я сталкиваюсь с чрезвычайно странной проблемой, о которой сообщает мой пользователь: Отчет Crystal Reports печатает пустые страницы за определенную точку. Мое устранение неполадок несколько сократилось, но в то же время показало некоторые непоследовательные результаты.

Здесь низкий уровень:

  • Приложение представляет собой приложение VB.NET, используя .NET 4.
  • В решении есть несколько отчетов Crystal Report, и для отображения и печати любого отчета используется одна форма.
  • Какой отчет для отображения обрабатывается через бэкэнд кода и назначается объекту формы CrystalReportViewer перед тем, как показывать форму.
  • Для отчета о проблеме источник данных поступает из SQL-запроса, запускаемого в коде, а затем назначается в качестве источника данных отчета, а затем отчет присваивается как источник отчетов для объекта CRV в форме.
  • Принтер этикеток подключается через USB к соответствующему компьютеру, а установщик используется для предоставления драйверов.
  • Если это имеет значение, это принтер для этикеток Citizen CLP-7201e.

Код, который присваивает источнику данных отчету, следующий:

    myCommand = New SqlClient.SqlCommand(strSQL, conPlanning)
    myCommand.ExecuteNonQuery()

    Da = New SqlClient.SqlDataAdapter(myCommand)

    Da.Fill(dsData, "TempPrintLabels")

    rptPrintLabels.SetDataSource(dsData.Tables(0))
    rptPrintLabels.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.Portrait

    frmReports.rptViewer.ReportSource = rptPrintLabels

    frmReports.Show()

strSQL - это базовый оператор SQL, основанный на том, какой отчет выбран из этой конкретной формы. SQL-запрос отчета - SELECT * FROM TempPrintLabels.


Вот основная информация. Отчет генерируется отлично, а для отчетов с ~ 100 ярлыками он отлично печатает. Странность возникает, когда отчет превышает этот предел; это где-то в диапазоне этикеток 95-120. Кажется, что это непротиворечиво. Отчет будет печататься, пока он не достигнет определенного момента. В то время для остальной части отчета он ничего не будет печатать, кроме пробелов. Там будет столько пробелов, сколько должно быть оставшихся страниц. Если вы снова запустите задание в том месте, где начались пробелы, он отлично отпечатывается.

Когда я смотрю на этот отчет в CrystalReportViewer, он выглядит хорошо; все ярлыки отображаются правильно. Когда я печатаю его в PDF или текстовом файле, все страницы есть. Таким образом, отчет и генерация печати, похоже, работают со мной.

Я думал, что это принтер. Чтобы проверить это, я напечатал 185-страничное задание в формате PDF, а затем распечатал его на принтере. Это напечатано абсолютно нормально.

Я затрудняюсь объяснить это или даже диагностировать это дальше. В форме для печати нет кода; он использует объект CrystalReportViewer для обработки всего. Если бы это был объект CRV, печать в PDF должна была дать мне пустые страницы. Это не так. Если это был принтер, он должен был начать печатать пробелы из PDF прямо в том же месте, что и печать непосредственно с объекта CRV. Это не так.

Что еще я могу найти?

Ответ 1

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

  • Может ли длина ширины вашей метки превышать размер страницы. Таким образом, вы можете проверить, что все ярлыки и страницы не пустые, когда вы сокращаете ширину меток (даже метки не отображаются должным образом, мы можем обрабатывать отдельно). Если он не показывает (как в данный момент вы получаете), тогда вы просто обрабатываете ширину меток с помощью параметра "Может вырасти" до значения true для всех меток.

  • Если все в порядке, то я думаю, что вы можете проверить настройки/поля страницы на вашем принтере.

  • Если выше не работает, то либо создайте новый отчет, либо существующий отчет, просто добавив статические метки и значения, а затем сначала просмотрите, а затем вызовите из кода. Что-то вы найдете с этим.

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