Модераторы: Akella, bartram

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [FireFox] Сохранить данные в файл и запустить bat, Печать через текстовый файл: copy prn 
:(
    Опции темы
Akella
Дата 9.12.2010, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 35
Всего: 329



Может я сейчас глупость скажу, но всё же  smile 

Предисловие.
В общем на филиалах установлены только матричные принтеры. Из виндовой программы печатать в ТЕКСТОВОМ режиме шрифтами самого принтера проблем не составляет.
Но вот незадача. Организация переходит на ВЕБ. Т.е. пользователи будут работать в браузере. Почти все в Firefox.
В программе есть такое понятие, как конструктор печати для создания всевозможных отчётов.
Отчёты создаются ввиде текстовых файлов, которые отображаются в браузере моноширным шрифтом с разделителями.
вот так примерно выглядит это в браузере:
user posted image

Теперь вопрос.
Было бы неплохо, если бы программно из браузера можно было выполнить сохранение этого файла на диск, в какую-нибудь временную папку и потом запустить BAT (CMD) файл, для распечатывания такой командой:
Код
copy file.txt prn


Но на сколько мне известно, браузер из-за соображений безопасности не может такое сделать.
Какие есть варианты. Может есть готовые дополнения??

И ещё. Если у кого есть возможность разработать расширение для Firefox под заказ, готовы оплатить.
PM MAIL   Вверх
Akella
Дата 9.12.2010, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 35
Всего: 329



На данный момент работает из виндовой программы так:

есть командный файл в папке программы вида:
Код

net use lpt5 "\\localhost\Epson LX-300-"
copy %1 lpt5
net use lpt5 /delete


и вот так запускаем на печать:
Код
toprn.cmd file.txt

PM MAIL   Вверх
Snowy
Дата 9.12.2010, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 6
Всего: 484



Можно написать крохотную програмку без интерфейса, которая будет выводить файл, передаваемый в коммандной строке в порт дефолтового принтера.
Далее, создать ей ассоциацию с файлами с расширением, например, ".prn"
Таким образом, можно всем отчётам назначаем расширение ".prn"
и, при открытии в любом браузере, они автоматом уйдут на печать...

Добавлено через 39 секунд
Разумеется, придётся всем пользователям её установить.
Но плагин тоже ведь ставить нужно.
PM MAIL   Вверх
Akella
Дата 9.12.2010, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 35
Всего: 329



Цитата(Snowy @  9.12.2010,  13:36 Найти цитируемый пост)
Можно написать крохотную програмку без интерфейса, которая будет выводить файл, передаваемый в коммандной строке в порт дефолтового принтера.

это не проблема, это и cmd файл сейчас может, я выше написал как

Добавлено через 6 минут и 33 секунды
Цитата(Snowy @  9.12.2010,  13:36 Найти цитируемый пост)
Далее, создать ей ассоциацию с файлами с расширением, например, ".prn"
Таким образом, можно всем отчётам назначаем расширение ".prn"
и, при открытии в любом браузере, они автоматом уйдут на печать...

хмм, надо подумать
PM MAIL   Вверх
Akella
Дата 9.12.2010, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 35
Всего: 329



а на Firefox можно что-то похожее провернуть?

Код

<script LANGUAGE="JavaScript">
new ActiveXObject("Scripting.FileSystemObject")
var fso = new ActiveXObject("Scripting.FileSystemObject");
var file = fso.CreateTextFile("d:\\test.txt", true); //имя файла
file.WriteLine("текст для записи в файл");
file.Close();
</SCRIPT>

PM MAIL   Вверх
Xenag
Дата 10.12.2010, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 51
Регистрация: 6.3.2010

Репутация: нет
Всего: нет



Для старого фирефокса был плагин для подключения ActiveX.
Правда глючноватый...
А сейчас рекомендуют только IE.
Точнее плагины, которые открывают IE во вкладке фирефокса.
Но это всё не вкусно.
Не вижу разницы между IE и IE в виде вкладки фирефокса.
Только заморочки с тем, как открывать страницу - в фоксе или в IE.
Вобщем активикс - только для IE. 
Если хочешь - пересаживайте всех с фокса на IE.
Но в последнем IE с активиксами тоже не всё просто. Капризный он стал.
Нужно бороться с настройками безопасности.

Я вообще с фоксом не дружу - тормозной он слишком.
Но, если сравнивать с хромом или оперой, то работа с портами на уровне плагинов - задача подозрительная.
Не факт, что реализовать просто.
В отличие от IE, тут ограничения безопасности параноидальные.
PM   Вверх
Akella
Дата 10.12.2010, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 35
Всего: 329



Тем не менее, FF мне кажется наиболее перспективным.

Вот наши разработчики пишут код и он нормально работает только в FF. А для остальных браузеров нужно допиливать напильниками. Я был немного шокирован. Оказывается в вебе тоже не так всё просто с кроссплатформенностью, если так можно назвать. В вебе оно зовётся кроссбраузерность.
PM MAIL   Вверх
bilbobagginz
Дата 21.12.2010, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 3
Всего: 317



Akella, Акелла, а разьве нельзя через политики безопасности или логон скрипт определить всем принтер НЕ ПО УМОЛЧАНИЮ, 
и просто тупо печатать на него отчет ? разьве в JS нет функции печати через браузер printWithDialog(), print() ?
там еще можно определить CSS для печати, чтобы было fixed-width (и предполагаю, что функции можно передать путь на принтер)



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Akella
Дата 21.12.2010, 10:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 35
Всего: 329



я не понимаю о чём ты

Добавлено через 1 минуту и 52 секунды
Представь, что к компьютеру подключен к LPT матричный принтер Epson. Нужно на него отправить текст в DOS кодировке. Текст, а не графику. На всякий случай скажу, что печать данных виндовыми шрифтами - это не текст и печать из Word`а и даже Блокнота - это тоже не текст.
PM MAIL   Вверх
Sibit
Дата 23.12.2010, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 6.10.2009
Где: NSK

Репутация: нет
Всего: 1



Сохранять файлы в FireFox можно, только это делается по-другому чем в експлорере

Код

    function cf_random(){

        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
        var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);

        path="c:\\file.txt"

        file.initWithPath(path);

        if(!file.exists()) file.create(0,0664);
/*
        var out = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
        out.init(file,0x20|0x02,00004,null);
        out.write(content,content.length);
        out.flush();
        out.close();
*/

        document.writeln("Создан файл с именем:" + path);

        return true;
    } 


Сам пример выдрал из проекта Tiddlywiki сохранение данных закомментировал что бы работало как есть.

А распечатку сделать через задание, т.е. браузер сохраняет файл в определенную папку, а скрипт по заданию заглядывает туда и если она не пуста - отправляет не печать.



PM MAIL   Вверх
Akella
Дата 23.12.2010, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 35
Всего: 329



дело не только в сохранении, а дело ещё в отправке этого файла на prn

Добавлено через 1 минуту и 12 секунд
Цитата(Sibit @  23.12.2010,  10:13 Найти цитируемый пост)
А распечатку сделать через задание, т.е. браузер сохраняет файл в определенную папку, а скрипт по заданию заглядывает туда и если она не пуста - отправляет не печать.

какой скрипт, по какому заданию?
PM MAIL   Вверх
Sibit
Дата 23.12.2010, 11:38 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 6.10.2009
Где: NSK

Репутация: нет
Всего: 1



Скрипт простой, типа 

copy $PATH/file.txt LPT1  
del .\file.txt

Дело же в винде происходит? 

Тогда Пуск>Панель управления>Назначенные задания>Добавить задания 

Там выбрать свой скрипт и настроить его запуск раз в минуту
PM MAIL   Вверх
Snowy
Дата 23.12.2010, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 6
Всего: 484



Отправлять через задание - потоконебезопасное занятие.
Тут вступают в игру две крайности - Увеличивая интервал, заставляем пользователя дольше ждать начала печати, сокращая интервал, рискуем увеличить шанс того, что документ уйдёт на печать не полностью.
Можно, конечно, пойти по принципу, как делали в DOS, добавляя файл-флаг, что сильно усложняет алгоритм.
Но, если интервал будет достаточно мал, то событие может наступить повторно ещё до окончания печати (не забываем - принтер матричный), особенно, если документ на N количество страниц.
Конечно, если взять большой и широкий напильник, то можно победить многозадачность винды...  smile 
PM MAIL   Вверх
Sibit
Дата 23.12.2010, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 6.10.2009
Где: NSK

Репутация: нет
Всего: 1



Ну тут можно навыдумывать всякого, например, сначала переносить файл с уникальным именем в спец папку а оттуда уже отправлять на печать.

PM MAIL   Вверх
Akella
  Дата 23.12.2010, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 35
Всего: 329



Цитата(Sibit @  23.12.2010,  11:38 Найти цитируемый пост)
Тогда Пуск>Панель управления>Назначенные задания>Добавить задания 

Там выбрать свой скрипт и настроить его запуск раз в минуту 

 smile и ждать пошло на печать или нет? Не смеши.

Добавлено через 1 минуту и 56 секунд
Ребята плагин уже написан. Я не знаю Kefir выложил его на паблик в mozdev или нет.  Но если что, вот он, прикрепил к письму:

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  sendtoexecutable.zip 6,92 Kb
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программное обеспечение"
Deface
Akella

Запрещается!

1. Обсуждение крэков, кейгенов и других подобных программ

Пробуйте искать сами или обращайтесь в приват к участникам форума.

Темы с подобными вещами будут немедленно удаляться, а нарушители - получать предупреждения.

Также запрещается обсуждение проблем работы этих программ (что куда вписать, куда что скопировать и т.п...)

2. Давать ссылки на взломанные продукты

  • Пожалуйста, пользуйтесь поиском перед тем, как задать вопрос - возможно ответ уже есть на форуме.
  • Название темы должно отражать её суть
  • Действия модераторов можно обсудить здесь

С уважением, Akella, bartram.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программное обеспечение | Следующая тема »


 




[ Время генерации скрипта: 0.0679 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.