Главная > IT, js, perl > Perl: Автоматическая печать PDF-документа при открытии [rus]

Perl: Автоматическая печать PDF-документа при открытии [rus]

Поднялся вопрос: "Как добавить авто-старт печати при открытии файла PDF? Сделать всё в Perl"

Это "телодвижение" было нужно для минимизации кол-ва действий, которые должен выполнить пользователь, чтобы увидеть отчёт из системы на бумаге :)

Не буду вдаваться в подробности о том, почему именно такой способ был нужен, и что это за система, но, был вопрос — вот ответ :) Нашёл его, для себя, юзабельным. И очень надеюсь на то, что кому-нибудь он тоже пригодится :)

К делу: как и всегда, немного погуглив, я отыскал вполне себе такой хороший модуль на search.cpan.org :) Называется он — PDF::Reuse. Модуль позволяет совершать не малое кол-во манипуляций с готовыми PDF-файлами (подробнее…)

Модуль очень даже подошёл для моих нужд, т.к. PDF может содержать JavaScript код (что не может не радовать, но оговорка чуть ниже), и диалог печати довольно просто с помощью этого JS вызывается. По сему его и решил использовать, а PDF::Reuse, по счастливой случайности, позволяет добавлять в PDF тот самый JavaScript код :)

Добавлено 9 февраля 2010: сразу оговорюсь, вариант будет выглядеть следующим образом — открывается PDF, если viewer поддерживает JS в PDF, то будет вызван диалог печати (примерно так же поступает Google Docs при попытке напечатать документ из меню File) :) Оговорка прийдётся очень кстати, потому как, допустим, xpdf не оправдает ваших ожиданий :)

Получить нужный результат можно следующим способом

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/perl
 
use strict;
use PDF::Reuse;
use CGI qw/param/;
 
my $path = '/tmp/test/';    # путь до исходного PDF-файла
 
print "Content-type: text/html;charset=utf-8\n\n";
 
unlink($path.'test1.pdf') if (-e $path.'test1.pdf');    # удаляем старый результат
 
if (param('test') eq '1') {
    prFile($path.'test1.pdf');    # открываем файл
    prText(10,300,'Hello,');    # добавляем произвольный текст
    prText(30,340,'WORLD!!!');    # в файл
    prJs('function prn() { this.print(); } prn();');    # добавляем JS-код, который будет вызывать диалог печати
    prEnd();    # открываем PDF
    print "<script>window.open('http://www.sdenix.net/test/test1.pdf')</script>";
}
print "<html><head><title>PDF test</title></head><body>\n";
print "<form action='/test_pdf'><input type='hidden' name='test' value='1'  /><input type='submit' value='Смотрим пример с авто-печатью'  /></form><br  />\n\n";
print "</body></html>";

Вот, собственно, и всё! Посмотреть живой пример можно тут. Теперь включаем фантазию и используем этот модуль в своих целях :)

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

1 звезда2 звезд3 звезд4 звезд5 звезд (3 голосов, средний: 3,33 из 5)
Loading ... Loading ...

Categories: IT, js, perl Tags: Hint, IT, javascript, pdf, perl, usable hints
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.
Необходимо войти на сайт, чтобы написать комментарий.