автор Guido Socher (homepage)
Об авторе:
Недавно мы сообщили о том, что linuxfocus планирует предоставить читателям свои заметки
в формате pdf. В ответ мы получили множество сообщений с советами как это сделать и протестировав
их решили написать небольшую заметку на эту тему. Благодарим за ваши сообщения и советы.
Перевод на Русский:
Pukhlyakov Kirill <kirill(at)linuxfocus.org>
Содержание:
|
Совет от LF: преобразование html документов в формат PDF
Резюме:
Это небольшая заметка. Теперь в нашем журнале по крайней мере одна подобная заметка будет в
каждом месяце. Если у Вас есть какие-нибудь идеи для подобных заметок - пишите на мой почтовый
адрес: guido("at" sign)linuxfocus.org
_________________ _________________ _________________
|
Введение
Возможно вы заметили, что теперь заметки нашего журнала доступны в формате PDF для
языков, использующих кодировку iso8859-1. Это была не совсем простая задача, имея в виду
то, что мы хотели генерировать документы автоматически, а также чтобы исходный и преобразованный
документы не отличались.
Рассмотрим как это было сделано.
Идея
В любой Linux системе вы можете найти утилиту ps2pdf, с помощью которой всегда можно
преобразовать postscript файл.
Система печати ОС Linux построена на postscript поэтому вероятно не должно возникнуть
проблем!? На самом деле проблема в том, чтобы найти решение преобразования файлов из скрипта,
запуская его в командной строке. Вы ведь не хотите кликать мышкой для преобразования порядка
2000 заметок например.
Если вам не особо нужны таблицы и изображения в документе используйте следующую
команду "lynx -dump .... | nenscript" и ps2pdf сделает работу. Но если они вам нужны - читайте
дальше.
Варианты
html2ps
Это perl скрипт - мы протестировали версию html2ps 1.0 beta3. Домашняя страница -
http://user.it.uu.se/~jan/html2ps.html
Скрипт работает хорошо, но требует установки определенных дополнительных модулей и
возникают небольшие проблемы когда в документе присутствуют таблицы, формирующие его структуру.
Хороший выбор если ваши документы имеют простой вид.
latex
Существует утилита latex to pdf. Используя xslt вы можете преобразовать html документ в Latex.
Необходимым условием является наличие синтаксически корректного html документа.
Проверить правильность документа можно утилитой tidy:
HTML --(tidy)--> XHTML --(XSLT)--> Latex --(pdflatex)--> PDF
Я не стал рассматривать этот вариант, потому что мне он показался достаточно сложным.
web browser remote control
Если бы была возможность командами управлять браузером, то генерируемый PDF был бы идентичен
тому что вы видите в браузере. Проблема в том, что необходимы X11. Кроме того нет возможности
использовать этот вариант в cron'е.
В проекте mozilla хорошо поработали над печатью и представлением документа, но убрали некоторые
возможности удаленного управления, которые есть в netscape communicator. Следующий вариант
работает только в communicator 4.X
netscape -noraise -remote "openurl(http://somepage)"
sleep(10) # нет возможности узнать загрузилась ли полностью страница
# поэтому делаем небольшую паузу
netscape -noraise -remote saveas(somepage.ps,PostScript)
sleep(10)
ps2pdf somepage.ps
Некоторые читатели сообщили, что удаленная печать возможно будет работать в konqueror, но
никто не смог представить решение.
htmldoc
Htmldoc отличная утилита с http://www.htmldoc.org/. Следующая команда делает именно то, что нам
надо:
htmldoc -t pdf -webpage -f file.pdf file.html
Мы протестировали версию 1.8.24 и остались довольны. Единственная проблема в том, что
размер выходного файла в формате pdf примерно в 10 раз превышает файлы созданные другими
утилитами. Мы попробовали различные опции сжатия, но результат остался прежним. Это вообщем то
проблема если у вас тысячи документов.
Вывод
В настоящее время мы используем решение на основе удаленного управления netscape и htmldoc.
Если у вас есть какие-нибудь идеи насчет уменьшения размера файла или вообще рассматриаемого
преобразования - пишите нам.
Страница отзывов
У каждой заметки есть страница отзывов. На этой странице вы можете оставить
свой комментарий или просмотреть комментарии других читателей
2005-02-03, generated by lfparser version 2.50