Как распечатать несколько графиков ioComp Plotx на принтере Nova PDF? - PullRequest
2 голосов
/ 20 мая 2019

Я пытаюсь распечатать изображения из объекта ioComp iPlotX на принтере PDF. Этот объект имеет iPlotX.SaveToBitmap, который работает, и я могу «отправить» файл на принтер PDF, но изображение размытое, растровое изображение 96 DPI.

Элемент управления имеет метод iPlotX.PrintChart, который должен идти непосредственно к принтеру. Существует также способ указать, на какой принтер Windows направить вывод. Я нащупал, чтобы посмотреть, смогу ли я заставить что-нибудь работать, и пару раз я создал изображение в файле PDF, которое было очень четким. Но другие элементы, напечатанные на странице, исчезли, и у меня была только одна страница вместо 3 страниц. В большинстве случаев в файле PDF ничего нет.

Ниже приведен фрагмент моего кода.

Me.SinglePlotObject1(iIndex).PlotControl.PrintShowDialog = False
Me.SinglePlotObject1(iIndex).PlotControl.Printername = modNovaPDFConstants.NOVAPDF_PRINTER_NAME
Me.SinglePlotObject1(iIndex).PlotControl.PrintOrientation = poLandscape
Me.SinglePlotObject1(iIndex).PlotControl.PrintChart

Это примечание от ioComp.Help:

Примечание. Если для PrintShowDialog установлено значение TRUE, а для параметра Имя_принтера в непустую строку, затем принтер, выбранный пользователь будет проигнорирован! Свойство PrinterName всегда будет переопределено выбор принтера пользователя, если вы используете наш диалог принтера Если вы планируете показать наш диалог выбора встроенного принтера до конца пользователь, тогда вы должны установить свойство PrinterName в пустую строку чтобы все работало правильно.

Также из их справки:

свойство PrintXStart: Double Используется для указания начальной оси X Мин. значение при реализации многостраничной печати. ​​

Описание: Используйте PrintXStart, чтобы получить или установить начальную ось X Мин. значение при реализации многостраничной печати. По умолчанию PrintXStart и PrintXStop инициализируются минимальным и максимальным значением ось X отображается на экране и будет распечатывать только одну страницу. Вы должен манипулировать PrintXStart и PrintXStop в OnBeforePrint или Событие OnBeforePrintPage для распечатки нескольких страниц во время один сеанс печати. ​​

Единственный пример, который они показывают, - это установить для свойства XStart значение 0. Я не уверен, означает ли это, что для одного и того же графика это несколько страниц, то есть график растягивается на несколько страниц или это связано с разными iPlots на отдельных страницах. В прошлом мы всегда просто использовали iPlotX.SaveToBitmap для печати. В то время сюжеты и текст были достаточно хорошими.

Если у кого-то есть опыт управления печатью ioComp и печати, я готов попробовать любые предложения.

Сейчас я пытаюсь создать тестовое приложение с как можно меньшим количеством кода, чтобы проверить все остальные параметры принтера.

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

DaveInCaz: хорошая идея. Я попробовал другой принтер PDF и результаты те же. Я попробовал метод управления, называемый iPrintToDC, передавая в Printer.hDC. Это сделало некоторый прогресс. Я могу напечатать два графика на двух страницах, но они размером с мой большой палец. Если я изменю ширину или высоту, это только усугубляет ситуацию, помещая нижнюю часть графика «над» заголовком и удаляя все содержимое самого графика; это как если бы график был обернут вокруг цилиндра, и все, что я вижу, это то, где встречаются верх и низ. Когда я использовал метод .PrintChart, была напечатана только последняя из двух диаграмм, и больше ничего не печаталось.

Спасибо.

...