powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перехват печати из другого приложения для обработки документа.
25 сообщений из 31, страница 1 из 2
Перехват печати из другого приложения для обработки документа.
    #38533485
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть приложение, которое печатает документы, но нету к нему исходников и править вручную эти документы нет возможности. В этой проге есть только возможность выбора принтера из списка установленных... Поэтому необходимо как-то обработать документы в отдельном приложении.

Есть какие-то предложения?
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38533491
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nickopoll,

в XPS или PDF печатай
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38533517
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил,

Видно, я не до конца объяснил цель. Нужно, чтобы при печати из исходной программы запускалась другая с документом в качестве аргумента. Если печатать в файл, то программа-обработчик с компонентом на вроде SystemFileWatcher должна быть запущенна постоянно. Этот вариант на крайний случай...
Я думал, поставить какой-нидь левый принтер на ком-порт и слушать этот ком в программе-обработчике. Но сообщения не приходят. Наверно, я не совсем понимаю технологию передачи данных на принтер.
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38533526
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38534107
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lelouch,

Спасибо. Оно самое. Только вот ничего не выходит в применении.
Установил. Настроил порт на запуск моего приложения, аргументы оставил пустыми, Program handles output. В своем приложении пытаюсь считать из стандартного потомка ввода. Пробовал и Console.In, и Console.OpenStandardInput() - везде пустая строка на входе.
Может, от драйвера подключенного к порту принтера зависит? Стоит Epson 300+. Поменял на HP1320 - прочитал из потока кучу какой-то белиберды @PJL Set ... (я так понял, настройки RedMon).
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38534168
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nickopollкучу какой-то белиберды @PJL Set
это не билебирда, а команды принтера HP1320

если выбрать Postscript иди PDF принтер - команды будут постскиптными
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38534210
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил,

Поставил Ghostscript PDF в качестве принтера. Если в настройках прописать программу-обработчик сам Ghostscript (gswin32c.exe), то окно с содержимым документа показывается. Если прописать мой обработчик, то на входе опять пусто? Скорее всего, я не правильно считываю. И я понятия не имею как считать правильно.
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38538866
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем, получилось перенаправить документ на обработку в мое приложение. Но полученный текст в непонятной мне кодировке, определенной виндой, как 1200.
ЏЋ‘‹“ѓ€ „‹џ Џ…Ќ‘IЋЌ…ђI‚ |

| - Ѓ…‡ЉЋ’Ћ‚Ќ… ‚I„Љђ€’’џ ’Ђ ЋЃ‘‹“ѓЋ‚“‚ЂЌЌџ ђЂ•“ЌЉ“ „‹џ ‡ЂђЂ•“‚ЂЌЌџ Џ…Ќ‘Iф |

| ’Ђ IЌ€• ‘Ћ–IЂ‹њЌЋ-ЋђIтЌ’€ђЋ‚ЂЌ€• ‚€Џ‹Ђ’ |

| - Ѓ…‡ЉЋ’Ћ‚ЌЂ ‚€„Ђ—Ђ Џ‹Ђ’I†ЌЋф ЉЂђ’Љ€ Ќ‘Њ…Џ |

| - „Ћ„Ђ’ЉЋ‚€‰ Џђ€Ѓ“’ЋЉ ЌЂ ‡Ђ‹€ЋЉ ѓђЋЋ‚€• ЉЋ’I‚ - 10% |


Найти нужную кодировку не выходит. Пляска с Encoding толку не дала.
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38538911
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CP1251 → CP866

БЕЗКОТОВНЕ ВIДКРИТТЯ ТА ОБСЛУГОВУВАННЯ РАХУНКУ ДЛЯ ЗАРАХУВАННЯ

...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38539302
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NickopollВообщем, получилось перенаправить документ на обработку в мое приложение. Но полученный текст в непонятной мне кодировке, определенной виндой, как 1200.
ЏЋ‘‹“ѓ€ „‹џ Џ…Ќ‘IЋЌ…ђI‚ |

| - Ѓ…‡ЉЋ’Ћ‚Ќ… ‚I„Љђ€’’џ ’Ђ ЋЃ‘‹“ѓЋ‚“‚ЂЌЌџ ђЂ•“ЌЉ“ „‹џ ‡ЂђЂ•“‚ЂЌЌџ Џ…Ќ‘Iф |

| ’Ђ IЌ€• ‘Ћ–IЂ‹њЌЋ-ЋђIтЌ’€ђЋ‚ЂЌ€• ‚€Џ‹Ђ’ |

| - Ѓ…‡ЉЋ’Ћ‚ЌЂ ‚€„Ђ—Ђ Џ‹Ђ’I†ЌЋф ЉЂђ’Љ€ Ќ‘Њ…Џ |

| - „Ћ„Ђ’ЉЋ‚€‰ Џђ€Ѓ“’ЋЉ ЌЂ ‡Ђ‹€ЋЉ ѓђЋЋ‚€• ЉЋ’I‚ - 10% |


Найти нужную кодировку не выходит. Пляска с Encoding толку не дала.
Не понимаю, как я получил текст в этой кодировке, но воспроизвести его для перекодировки в 866 не могу уже...
Теперь получаю текст вот такой:
- АѓвЂ¦вЂЎА‰А‹вЂ™А‹вЂљАЊвЂ¦ ‚I„А‰А’€’’Аџ ’А‚ А‹АѓвЂ˜вЂ№вЂњА“А‹вЂљвЂњвЂљА‚АЊАЊАџ
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38539442
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nickopoll Есть приложение, которое печатает документы, но нету к нему исходников и править вручную эти документы нет возможности. В этой проге есть только возможность выбора принтера из списка установленных... Поэтому необходимо как-то обработать документы в отдельном приложении.

Есть какие-то предложения?

на чем написано то исходное приложение?
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38539585
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На С++.
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38539811
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickopollТеперь получаю текст вот такой:
- АѓвЂ¦вЂЎА‰А‹вЂ™А‹вЂљАЊвЂ¦ ‚I„А‰А’€’’Аџ ’А‚ А‹АѓвЂ˜вЂ№вЂњА“А‹вЂљвЂњвЂљА‚АЊАЊАџ
Это уже похоже на двойную-тройную конвертацию, в результате которой потерялась половина байтов.

Может проще новое приложение написать, чем плясать так с бубном?
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38540067
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy,

Это не двойная-тройная конвертация. Считываю c потока код Postscript:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
                        StringBuilder sb = new StringBuilder();
			while (Console.In.Peek() > -1){
				char[] userInput = new char[count];
				Console.In.ReadBlock(userInput, 0, count);//если юзать ReadToEnd - приложение виснет почему-то
				sb.Append(userInput);
			}
			Process proc = new Process();
			proc.StartInfo.FileName = @"d:\Progi\gs9.10\bin\gswin32c.exe";
			proc.StartInfo.Arguments = @"-sDEVICE=txtwrite -q -dNOPAUSE -sOutputFile=- - -c quit";//берем данные из перенаправленного потока ввода, результат записываем в перенаправленный поток вывода
			proc.StartInfo.UseShellExecute = false;
			proc.StartInfo.RedirectStandardOutput = true;
			proc.StartInfo.RedirectStandardError = true;
			proc.StartInfo.RedirectStandardInput = true;
			proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
			proc.Start();

			proc.StandardInput.Write(sb.ToString());
			proc.StandardInput.Flush();
			proc.StandardInput.Close();

                        //string stderr = process.StandardError.ReadToEnd(); здесь тоже повиснет 
                        //if (stderr != string.Empty)
                        //    throw new System.InvalidOperationException(stderr);	
		
			MessageBox.Show(proc.StandardOutput.ReadToEnd()); 



На выходе получаю нечитаемый текст...
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38540118
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний приведенный текст появился в результате выполнения этого кода? Или еще какие-то манипуляции были?
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38540125
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nickopoll,

если данные для gswin32c берутся из входного потока, зачем его предварительно вычитывать?
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38540313
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy,

Никаких больше манипуляций.

Изопропил,

потому что не выходит напрямую Ghostscript'ом считать Postscript, пересылаемый Redmon'ом - получаю лишь, как ты и сказал, команды принтера либо вообще ничего.
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38540382
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nickopollполучаю лишь, как ты и сказал, команды принтера либо вообще ничего.
это не повод писать код, лишённый смысла.

Принтер потскриптный выбран для перехвата?
просто в файл записать входной поток пробовал?
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38540543
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ИзопропилNickopollполучаю лишь, как ты и сказал, команды принтера либо вообще ничего.
это не повод писать код, лишённый смысла.

Принтер потскриптный выбран для перехвата?
просто в файл записать входной поток пробовал?

Наверно, раньше я не те аргументы ставил, так как получал команды принтера или пустую строку. Сейчас получил нужный текст без лишнего кода, но опять же - в нечитаемой кодировке. Принтер постскриптный выбран. В файл писал. В MessageBox'е текст в кодировке 866, в файле AkelPad определяет его как в 1251 - и там, и там прочитать его невозможно.
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38540558
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел что-то по поводу печати абракадабры и отсутствия шрифтов кодировки 866 для принтеров.
Может и у меня та же проблема с принтером Ghostscript PDF (загружал со страницы Ghostscript).

Вот эта тема.
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38540839
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в постскрипт ни 1251, ни 8666 не используются.
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38540879
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил,

В каком смысле? Сгенерированый текст Postscript в анси-кодировке, который, собстно, читается.
Я больше склонен думать, что проблема все же в шрифтах, так как нашел инфу о том, что постскрипт использует шрифты, отличные от шрифтов винды. Следовательно, нужно закинуть как-то в постскриптный принтер необходимый шрифт.
В модулях, загружаемых исходным приложением, помимо файлов unicode.nls и locale.nls видел еще и c_1252.nls - сомневаюсь, что Ghostscript PDF знает об украинской (вроде) кирилице, если юзает свои шрифты, а не системные.
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38540925
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nickopollанси-кодировке
Latin-1 точнее. и в ней далеко не всё

для всего остального используется отдельные словари, описывающие кодировку(привязывающие коды к именам глифов)


http://www.adobe.com/content/dam/Adobe/en/devnet/font/pdfs/5013.Cyrillic_Font_Spec.pdf
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38541018
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все равно не понял, как спецификация поможет решить проблему...

Думал даже, что это из-за обработчика печати - исх. программа печатает TEXT напрямую. Проверил печать из Ворда (RAW) - то же самое.

Открывал файл с полученным текстов в Ворде, перебирал все кодировки - нужной не нашел.
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38541023
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nickopoll,

выложи постскриптный файл
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перехват печати из другого приложения для обработки документа.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]