Pull to refresh

Comments 47

человек радуется тому, что хабр все еще тот, каким мы его помним и хотим видеть в дальнейшем.

ваш КО
Очень полезная штука. Спасибо. Даже и не думал, что настроить настолько легко
UFO just landed and posted this here
Зря вы так. Если написан — это значит, что написан и ничего более ) Работает? Нужен ли? Это все вопросы другого плана ))))
UFO just landed and posted this here
почесать репой что? голову?
<trollstyle>почесать репой что? голову? </trollstyle>
Права можно раздавать по ip клиентов который по теории должен быть в $ENV.
Эта технология может пригодиться для экономии трафика, когда печать идет через vpn/интернет. Сделать этот веб-принтер локально, а на стороне принтера сделать скрипт который будет брать эти pdf-ки и печатать.
У нас в компании сейчас на принтер летят raw-данные через vpn, в pdf виде экономия в районе 10..100 раз.
Раздавать права по IP — хорошая идея. В скрипт не включил только из-за того, что IP-адреса у многих провайдеров динамические. А в локальной сети ограничения, наверное, не нужны…

Ну вот и применение нашлось :-). А Вы правда посчитали экономию? Дело в том, что PDF-документы, генерируемые скриптом, содержат не текст, написанный шрифтами, а, фактически, картинки. Поэтому они больше, чем обычные PDF-ки.
>А Вы правда посчитали экономию?
да, конвертировал raw данные в pdf. тут конечно сильно влияет печатаемое содержимое, я проверял на «не тяжелых», офисных документах.
А, ну здорово.
Если, конечно, правда большой трафик через VPN на принтер идет
получилось, очень рад, зачем это, не знаю :)
спасибо
web-pdf имеет достаточно узкое применение.
Вы просто замечательный обфускатор. Надеюсь для обычной работы вы используете более разумные имена у переменных, а то я не завидую вашим коллегам.
По поводу имен переменных — Вы правы, конечно.
Но, на мой взгляд, написать вместо $d что-нибудь типа $input_data — это превратить легкий компактный скрипт в более громоздкий.
Поэтому удобочитаемыми сделал только имена функций. А классы не стал делать за ненадобностью :-)
Очень спорный момент, вы выкладываете код для людей, а им обычно сложно читать такое.

Вот для себя подобное можно писать, но лишь очень изредка…
в своё время писал веб-приложение на asp.net, там была поставлена задача конвертирования html-страницы в формат pdf. выкрутился я используя сторонний софт, консольную софтину wkhtmltopdf, найденную на code.google.com.
так что с уверенностью могу утверждать — задача весьма актуальная. поэтому я весьма благодарен вам за решение, приведённое в топике, весьма вероятно что оно пригодится и не раз.
Пожалуйста, пользуйтесь :-)
А по моему, очень даже не бесполезная вещь. Вот к примеру, есть газета, где часть авторов работают удалённо. Так вот, наверняка этим авторам, печатающим статьи в ворде, будет проще посылать статьи в редакцию, просто отправляя их на печать похожего скрипта, нежели возится с электронной почтой, атачтментами, загрузкой по фтп итд итп…
Я думал об этом. Но есть несколько проблемок:

— Нужно сделать в скрипте какую-никакую авторизацию (ну, это дело техники)
— Нужно объяснять авторам, как настроить принтер (это посложнее будет)
— Из «напечатанного» файла невозможно извлечь текст…
Интересно! Появилась пара вопросов.

>Нам понадобится (кроме головы и рук) только работающий web-сервер с поддержкой cgi-bin, к которому у нас есть доступ по FTP

FTP — это опечатка ( м.б. HTTP? ), или же я чего-то не понял?

> Фактически, нужны только Perl и программа gs, которые есть практически везде.

Ну, perl я у себя на рабочей Windows XP нашел :), а с gs вот так вот с ходу проблема. Никогда не задавался целью, правда, эту gs как-то использовать.
Скрипт будет работать на web-сервере (сервер действительно, по определению, поддерживает HTTP). Разместить скрипт на сервере — через протокол FTP. Не опечатка :-)

На рабочей машине Perl и gs не нужны. Так как скрипт работает на сервере, то нужны они именно на сервере. Именно поэтому и обещано, что «за 10 минут»
А мне проще aptitude install cups-pdf.
Обещано было за 10 минут, причем такой вариант работает под Windows и под Linux. Не знаю, как в Debian и Ubuntu, но в Fedora и Mandriva с PDF backend'ом для cups надо еще повозиться — права там поставить какие-то, то-сё… Но вообще, как локальное решение, cups, конечно, лучше
кстати, выкладывайте версию на PHP интересно!
Присоединяюсь, выложите, пожалуйста, если есть PHP версию.
Спасибо автору! На днях попробую скриптик. Есть принтеры, драйвера на которые отсутствуют для win7/winvista, а печатать по сети они не дают без них.
Если с драйверами проблема — можете попробовать вот так. Сам в свое время помучался…
кстати, есть похожий (частично) сервис — BlueMailCentral (я как-то ради интереса пользовался пару раз)
он тоже ставит в систему свой принтер, и когда вы посылаете документ на печать, он отсылается на их сервер

отличие в том, что печатается не pdf — документ реально печатают на бумаге,
и посылают в конверте по указанному вами адресу
добавлю (а то кто-то подумает, что мой коммент — реклама BlueMailCentral):
я имел в виду, что вы, возможно, могли бы (захотели бы?) сделать подобный сервис
Такая штука может быть полезна для электронного документооборота. Например, у вас в формате MS Word есть куча документов. Вы их махом печатаете на Web-принтере, который закидывает эти документы в систему документохранения. А человек, ответственный за порядок в документохранении, затем добавляет заголовки, права и тому подобное.
Ага, при этом действительно полезно, что у каждого документа есть «жесткая» копия. В отличие от системы хранения документах в общих папках, где любой может залезть и поправить документ «задним числом».
Спасибо, работает на УРА!
а вот только нельзя ли сделать так, чтобы имена файлов сохраняемых на сервере, соответствовали именам файлам — оригиналам.
есть ли gs для Windows? (веб-сервер поднят на рабочей машине с WinXP)
Прошу прощения, в первый раз плохо погуглил.
Последняя версия gs под Win есть здесь: pages.cs.wisc.edu/~ghost/doc/GPL/gpl864.htm
Однако, скрипт всё равно не работает, т.к. в perl для Windows не реализован pipe-open :( Вероятно, можно как-то решить эту проблему используя модуль Win32::Fork
Можете попробовать вариант на PHP
Кстати, насколько я помню, pipe-open в Perl для Windows работает, только команда со всеми аргументами должна состоять из одной строки. List, как в Perl для Linux, не допускается
Вы правы, небольшая правка скрипта заставила его работать. Большое спасибо :)
Можно еще давать пользователям доступ только к тем файлам, которые «распечатали» они сами, добавив пару строк кода:
if (!(-e "../pdf/".$ENV{'REMOTE_ADDR'}."/.htaccess"))
{
mkdir "../pdf/".$ENV{'REMOTE_ADDR'};
open (AF, "> ../pdf/".$ENV{'REMOTE_ADDR'}."/.htaccess");
print AF qq[Order allow,deny\nallow from 127.0.0.1 10.103.224.171 ].$ENV{'REMOTE_ADDR'};
close AF;
}

А сохранять файлы, соответственно, в директорию, имя которой равно ИПшнику пользователя.
Sign up to leave a comment.

Articles