powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перехват печати из другого приложения для обработки документа.
31 сообщений из 31, показаны все 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
Перехват печати из другого приложения для обработки документа.
    #38541063
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К примеру.
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38541101
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эм... тоже решил глянуть в этот файлик повнимательнее. Если я правильно понял, перед каждым символом с глифом /afii***** идет поиск затребованного шрифта. В данном случае Courier. Но вот чего не совсем понял, текс

%%DocumentNeededResources:
%%+ font Courier

означает, что он найден или нет?
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38542045
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почитал еще, что поиск необходимых шрифтов возлагается на интерпретатор Postscript. Я юзаю Ghostscript. Как ему помочь найти требуемый шрифт? Или может есть какой-нидь другой интерпретатор?
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38542060
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nickopoll,

Help не помогает?
http://ghostscript.com/doc/5.50/Fonts.htm
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38542118
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lelouch,

я тоже это нашел, но, во-первых, там говорится за старые версии (5.5 - 7), во-вторых, на указаном фтп в папках с предполагаемыми шрифтами для скачки пусто.
...
Рейтинг: 0 / 0
Перехват печати из другого приложения для обработки документа.
    #38542605
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Короче, пообщавшись с "ненашими" выяснил с горем пополам, что

"if its RUssian (имеется ввиду текст в postript) and there is no TOUnicode information then there is no possible fallback, so the text is emitted 'as is' in the hope that it is comprehensible"

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


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