Конвертация Linux HOWTO в формат, подходящий для печати
Автор: © Марк Нильсен [Mark Nielsen]
|
ВведениеМне хотелось распечатать Linux HOWTO в виде книги. Но перспектива конвертировать все HOWTO вручную мне не улыбалась. Вместо этого, поскольку тексты HOWTO есть в формате Postscript, я подумал, что можно регулярно скачивать Postscript-файлы и с помощью разных инструментов преобразовывать их в подходящим образом отформатированный PDF или Postscript. Мне удалось сделать это с помощью сравнительно небольшого скрипта на Perl и других утилит Unix. В планах у меня создать задание для cron, выполняемое по крайней мере раз в неделю для обновления получившихся книг. Скрипт на Perl для конвертации файлов PostscriptСкрипт представлен здесь, при желании можно взять текстовую Perl-версию здесь. #!/usr/bin/perl # ftp://ftp.tardis.ed.ac.uk/users/ajcd/psutils.tar.gz # http://www.dcs.ed.ac.uk/home/ajcd/psutils/ # cp Makefile.unix Makefile # ln -s /usr/bin/perl /usr/local/bin/perl # mkdir -p /usr/local/share/man/man1 # /usr/local/bin/psbook #system ("lynx -- исходники на ftp://ftp.tardis.ed.ac.uk/users/ajcd/psutils.tar.gz > /tmp/psutils.tar.gz)"; # system ("cd /tmp; tar -zxvf psutils.tar.gz; cd psutils; cp Makefile.unix Makefile"); # system ("ln -s /usr/bin/perl /usr/local/bin/perl; mkdir -p /usr/local/share/man/man1"); # system ("cd /tmp/psutils; make; make install; ln -s /usr/local/bin/psutils /usr/bin/psutils"); # Если у Вас установлены psutils, строки выше можно не смотреть. # Я их сохранил просто чтобы не забыть, как я устанавливал psutils. my $TempFile1 = "/tmp/HOWTO_Convert_1.ps"; my $TempFile2 = "/tmp/HOWTO_Convert_1.pdf"; my $SourceDir = "/root/HOWTO"; my $Destination = "/root/HOWTO_Books"; my $ZippedPDF = "/root/HOWTO_books_pdf.tgz"; my $ZippedPS = "/root/HOWTO_books_ps.tgz"; if (!(-d $Destination)) {system "mkdir $Destination";} print "Загружаем HOWTO с http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/ps/Linux-ps-HOWTOs.tar.gz\n"; system ("lynx --source http://www.ibiblio.org/pub/Linux/docs/HOWTO /other-formats/ps/Linux-ps-HOWTOs.tar.gz > $SourceDir/Linux-ps-HOWTOs.tar.gz"); system ("cd $SourceDir; tar -zxvf Linux-ps-HOWTOs.tar.gz"); my @Files = <$SourceDir/*.ps.gz>; foreach my $File (@Files) { my $command="gunzip -c $File | /usr/bin/psbook -s4 | mpage -2 > $TempFile1"; print "Вызываем psbook и mpage для $File\n$command\n"; system ($command); $command = "ps2pdf $TempFile1 $TempFile2"; print "Выполняем ps2pdf\n$command\n"; system ($command); my (@Temp) = split(/\//,$File); my $NamePDF = pop @Temp; my $NamePS = $NamePDF; $NamePDF =~ s/\.ps\.gz$/\.pdf/; $NamePS =~ s/\.ps\.gz$/\.ps/; my $NewPS = "$Destination/$NamePS"; my $NewPDF = "$Destination/$NamePDF"; system ("mv $TempFile2 $NewPDF"); print "Создаем в виде книги HOWTO, $NewPDF\n"; system ("mv $TempFile1 $NewPS"); print "Отформатирован отформатирован HOWTO, $NewPS\n"; } print "Создание zip файлов $ZippedPDF and $ZippedPS\n"; system ("tar -zcvf $ZippedPDF $Destination/*.pdf"); system ("tar -zcvf $ZippedPS $Destination/*.ps"); ЗаключениеЭто всего лишь простой скрипт на Perl, позволяющий загрузить и переформатировать HOWTO в формате Postscript. В будущем я собираюсь сделать следующее:
До сих пор мой простой "перловый" скрипт меня не подводил. Мне было бы интересно конвертировать "для народа" и другие документы, если конечно они подпадают под действие какуй-нибудь свободной лицензии наподобие представленных на www.gnu.org лицензий для документации. Ссылки
Марк работает независимым консультантом, добровольно работает в проектах
наподобии GNUJobs.com, пишет статьи, свободные программы и работает добровольцем
в проекте eastmont.net.
|
Copyright © 2001, Mark Nielsen. Copying license http://www.linuxgazette.com/copying.html Published in Issue 66 of Linux Gazette, May 2001 |
Вернуться на главную страницу |