Ребятки, есть следующая проблема.
Нужно напечатать страничку на которой есть рисунки и тест (шрифты, выделения и т.д.). Было принято решение использовать для этого РТФ файл, внести в него нужную информацию и распечатать. Для внесения информации в файл использовался RichTextBox. Информация благополучно внесена, но стандартными инструментами адекватно файл не печатается + появилось понимание, что нужно каким-то образом сказать принтеру размеры страницы (ширина 80 мм, длинна 150 мм), отступы и т.д.
На мдсн было найдено решение печати на прямую с RichTextBox, но реализовать все функции на не получилось, т.к. некоторые классы или методы полностью отсутствуют + плоховатое понимание кода C#.
Следующий этап: создание библиотеки с нужными методами.
Сразу подвернулась статья об этом на том же мдсн (https://support.microsoft.com/en-us/kb/812425). Библиотеку создал, и программу для проверки тоже. Все напечатало. Но саму библиотеку не получается использовать в , т.к. выпадает ошибка "ссылка на объект не указывает на экземпляр объекта". Что дает понимание, что какой-то из объектов не был инициализирован, но понять, что это у меня не получается.
Могли бы более знающее люди помочь в решении этой проблемы? Если вы знаете как реализовать печать другим способом, поделитесь, пожалуйста
Печать с RichTextBox или RTF файла
-
- beginner
- Сообщения: 22
- Зарегистрирован: 21 янв 2015, 10:46
- Версия LabVIEW: 2013
- Контактная информация:
Печать с RichTextBox или RTF файла
- Вложения
-
- Test.vi
- (7.94 КБ) 203 скачивания
-
[Расширение dll было запрещено, вложение больше недоступно.]
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Печать с RichTextBox или RTF файла
А чем не угодил RGT? Там задаются свойства для печати: http://digital.ni.com/public.nsf/allkb/ ... 1D006826DC
-
- beginner
- Сообщения: 22
- Зарегистрирован: 21 янв 2015, 10:46
- Версия LabVIEW: 2013
- Контактная информация:
Re: Печать с RichTextBox или RTF файла
Дело в том, что печать мне нужна на разных языках (в том числе китайский, греческий, тайский и т.д.). У с этим серьезные проблемы. Даже если все эти языки разместить в файле, а потом просто загнать их в печать через RGT получается все очень плохо. Так же не получается нормально напечатать картинку (она получается какая-то сжатая, хотя по тексту видно, что до отступа еще есть место). По этому этот инструмент мне не подходит. А вот в C# текст можно загнать в юникоде, и будет нормальная печать (тоже самое что печать с текстового файла).
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Печать с RichTextBox или RTF файла
У меня, к сожалению, ваша библиотека вообще не подцепляется. Выдаёт ошибку "An error occured trying to load the assembly" при выборе конструктора. Там какие-то доп. зависимости? Или, может, у меня какой-то FW не установлен.
Могу попробовать помочь на уровне допущений.
- мне кажется, что для PrintPageEventArgs нужно создать все входные объекты, хотя б константами, если для них не предусмотрено своего конструктора; но ещё больше мне кажется, что Print в таком виде не должен вызываться.
- в тестовом приложении на C# у вас вызывается диалог на печать и после метод Print, а в вы сразу вызываете Print... Скорее всего, ещё тут есть загвоздка, т.к. "снаружи" System.Drawing.Printing.PrintEventArgs не должны "светиться", по идее. То есть, когда создаём обработчики событий печати, они далее сами вызывают нужные функции, передавая нужные аргументы. Этот код транслировать в трудновато, т.к. там везде обработчики событий используются, а в так просто процедуру/функцию в обработчик не загонишь.
- 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) или целиком в картинку.
Могу попробовать помочь на уровне допущений.
- мне кажется, что для PrintPageEventArgs нужно создать все входные объекты, хотя б константами, если для них не предусмотрено своего конструктора; но ещё больше мне кажется, что Print в таком виде не должен вызываться.
- в тестовом приложении на C# у вас вызывается диалог на печать и после метод Print, а в вы сразу вызываете Print... Скорее всего, ещё тут есть загвоздка, т.к. "снаружи" System.Drawing.Printing.PrintEventArgs не должны "светиться", по идее. То есть, когда создаём обработчики событий печати, они далее сами вызывают нужные функции, передавая нужные аргументы. Этот код транслировать в трудновато, т.к. там везде обработчики событий используются, а в так просто процедуру/функцию в обработчик не загонишь.
- 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) или целиком в картинку.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение