Печать с RichTextBox или RTF файла

ActiveX, .NET, DLL
Ответить
Mad!sson
beginner
beginner
Сообщения: 22
Зарегистрирован: 21 янв 2015, 10:46
Версия LabVIEW: 2013
Контактная информация:

Печать с RichTextBox или RTF файла

Сообщение Mad!sson »

Ребятки, есть следующая проблема.

Нужно напечатать страничку на которой есть рисунки и тест (шрифты, выделения и т.д.). Было принято решение использовать для этого РТФ файл, внести в него нужную информацию и распечатать. Для внесения информации в файл использовался RichTextBox. Информация благополучно внесена, но стандартными инструментами :labview: адекватно файл не печатается + появилось понимание, что нужно каким-то образом сказать принтеру размеры страницы (ширина 80 мм, длинна 150 мм), отступы и т.д.

На мдсн было найдено решение печати на прямую с RichTextBox, но реализовать все функции на :labview: не получилось, т.к. некоторые классы или методы полностью отсутствуют + плоховатое понимание кода C#.

Следующий этап: создание библиотеки с нужными методами.
Сразу подвернулась статья об этом на том же мдсн (https://support.microsoft.com/en-us/kb/812425). Библиотеку создал, и программу для проверки тоже. Все напечатало. Но саму библиотеку не получается использовать в :labview: , т.к. выпадает ошибка "ссылка на объект не указывает на экземпляр объекта". Что дает понимание, что какой-то из объектов не был инициализирован, но понять, что это у меня не получается.

Могли бы более знающее люди помочь в решении этой проблемы? Если вы знаете как реализовать печать другим способом, поделитесь, пожалуйста :wink:
Вложения
Test.vi
(7.94 КБ) 201 скачивание

[Расширение dll было запрещено, вложение больше недоступно.]

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Печать с RichTextBox или RTF файла

Сообщение dadreamer »

А чем не угодил RGT? Там задаются свойства для печати: http://digital.ni.com/public.nsf/allkb/ ... 1D006826DC
Mad!sson
beginner
beginner
Сообщения: 22
Зарегистрирован: 21 янв 2015, 10:46
Версия LabVIEW: 2013
Контактная информация:

Re: Печать с RichTextBox или RTF файла

Сообщение Mad!sson »

Дело в том, что печать мне нужна на разных языках (в том числе китайский, греческий, тайский и т.д.). У :labview: с этим серьезные проблемы. Даже если все эти языки разместить в файле, а потом просто загнать их в печать через RGT получается все очень плохо. Так же не получается нормально напечатать картинку (она получается какая-то сжатая, хотя по тексту видно, что до отступа еще есть место). По этому этот инструмент мне не подходит. А вот в C# текст можно загнать в юникоде, и будет нормальная печать (тоже самое что печать с текстового файла).
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Печать с RichTextBox или RTF файла

Сообщение dadreamer »

У меня, к сожалению, ваша библиотека вообще не подцепляется. Выдаёт ошибку "An error occured trying to load the assembly" при выборе конструктора. Там какие-то доп. зависимости? Или, может, у меня какой-то FW не установлен. :dntknw:
Могу попробовать помочь на уровне допущений.
- мне кажется, что для PrintPageEventArgs нужно создать все входные объекты, хотя б константами, если для них не предусмотрено своего конструктора; но ещё больше мне кажется, что Print в таком виде не должен вызываться.
- в тестовом приложении на C# у вас вызывается диалог на печать и после метод Print, а в :labview: вы сразу вызываете Print... Скорее всего, ещё тут есть загвоздка, т.к. "снаружи" System.Drawing.Printing.PrintEventArgs не должны "светиться", по идее. То есть, когда создаём обработчики событий печати, они далее сами вызывают нужные функции, передавая нужные аргументы. Этот код транслировать в :labview: трудновато, т.к. там везде обработчики событий используются, а в :labview: так просто процедуру/функцию в обработчик не загонишь.
- Paste и AppendText - это ваши собственные функции? Попробуйте напечатать без них, с любым случайным текстом. Вообще, нужно максимально упростить код, чтобы выловить ошибку.
Если вообще ничего не поможет, то стоит поискать альтернативные решения. Какой-то сложный вариант вы выбрали для довольно простой задачи. Если именно RTF надо печатать, то можно "помучать" командную строчку:
http://www.computerhope.com/forum/index ... 031.0.html (через Word)
http://stackoverflow.com/questions/2988 ... e-from-cmd (через WordPad)
Или же перейти на WinAPI: http://forum.vingrad.ru/topic-19017.html (что несколько проще, чем создание библиотеки с переопределением RTB)
На крайняк можно переконвертировать содержимое файла в другой формат, например PDF (или с нуля создать PDF в LV) или целиком в картинку.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Коммуникация с приложениями»