Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Мелочи —> pdf в html

Конвертирование pdf в html

Автор: serge.


Данный материал может пригодится для организации веб-доступа к большому архиву pdf документов. Причем исключается необходимость передачи самого pdf документа клиенту.
Для осуществления этого понадобится утилита pdftohtml, которая имеется в портах FreeBSD.
[serge@server /usr/ports]$ make search name=pdftohtml
Port:   pdftohtml-0.36_4
Path:   /usr/ports/textproc/pdftohtml
Info:   A command-line tool for converting pdf-files into html
Maint:  erwin@FreeBSD.org
B-deps:
R-deps: expat-2.0.0_1 fontconfig-2.3.2_3,1 freetype2-2.1.10_3 ghostscript-gnu-7.07_15
gsfonts-8.11_2 jpeg-6b_4 libdrm-2.0.1_1 pkgconfig-0.20 png-1.2.8_3
xorg-libraries-6.9.0
WWW:    http://sourceforge.net/projects/pdftohtml/

Устанавливаем pdftohtml. Установка из портов удобна тем, что проверяется наличие всех необходимых пакетов для работы программы. И если чего-то нет, то это так же будет установлено автоматически.
[serge@server /usr/ports]$ cd /usr/ports/textproc/pdftohtml
[serge@server /usr/ports]$ make install clean

Для того чтобы иметь возможность создавать html документы в кодировке koi8-r дополнительно устанавливаем языковой пакет для xpdf.
[serge@server /usr/ports]$ cd /tmp
[serge@server /tmp]$ wget ftp://ftp.foolabs.com/pub/xpdf/xpdf-cyrillic.tar.gz
[serge@server /tmp]$ tar xzf xpdf-cyrillic.tar.gz
[serge@server /tmp]$ cd xpdf-cyrillic

Необходимо скопировать файлы кодировок в /usr/local/share/xpdf/cyrillic. У меня такой диры не оказалось, значит создаем ее.
[ /tmp/xpdf-cyrillic]$  mkdir -p /usr/local/share/xpdf/cyrillic
[ /tmp/xpdf-cyrillic]$  cp Bulgarian.nameToUnicode /usr/local/share/xpdf/cyrillic/
[ /tmp/xpdf-cyrillic]$  cp KOI8-R.unicodeMap /usr/local/share/xpdf/cyrillic/

Так же необходимо добавить содержимое файла add-to-xpdfrc в файл конфигурации xpdfrc. Такой файл оказался в /usr/X11R6/etc/xpdfrc, но все в нем было закоментировано. Рекомендуемое место расположения конфига xpdfrc - это /usr/local/etc. Туда его и создаем.
[serge@ /tmp/xpdf-cyrillic]$  cat add-to-xpdfrc > /usr/local/etc/xpdfrc

Пробуем. Создает в директории вэб-сервера следующий каталог. В моем случае так:
[serge@ /tmp/xpdf-cyrillic]$  mkdir /usr/local/www/apache/data/testpdf
[serge@ /tmp/xpdf-cyrillic]$  cd /usr/local/www/apache/data/testpdf
[serge@ /usr/local/www/apache/data/testpdf]$ pdftohtml -q -c -enc KOI8-R -dev jpeg \
? -noframes -nomerge /data/eBooks/test.pdf ./test.html

-q - не выводит сообщения и ошибки (удобно при работе из php)
-с - создание комплексного документа (с изображениями)
-enc KOI8-R - кодировка html документа
-dev jpeg - формат для изображений
-nomerge - не соединять параграфы (учитывает отступы от обзацев)
-noframes - html страница без фреймов (имхо так удобнее читать)
/data/eBooks/test.pdf - откуда брать pdf
./test.html - как сохранять html
Проверяем
http://localhost/testpdf/test.html
Все должно работать.
PHP скрипт для конвертирования pdf на лету с подсчетом времени работы.
<?php 
function time_start() 
{ 
$mtime = microtime(); 
$mtime = explode(" ",$mtime); 
$mtime = $mtime[1] + $mtime[0]; 
$start_time = $mtime; 
return $start_time; 
} 
function time_end() 
{ 
$mtime2 = microtime(); 
$mtime2 = explode(" ",$mtime2); 
$mtime2 = $mtime2[1] + $mtime2[0]; 
$end_time = $mtime2; 
return $end_time; 
} 

$t1 = time_start(); 
system("pdftohtml -q -c -enc KOI8-R -dev jpeg -noframes -nomerge
 /data/eBooks/test.pdf ./test.html"); 
include("test.html"); 
$t2 = time_end(); 
$time = substr($t2 - $t1,0,4); 
echo "Время работы скрипта ".$time." сек"; 
?>

В скрипте показан только сам процесс конвертирования pdf в html и вывод страницы пользователю. Далее уже каждый дополнит под свои нужды.
Хотелось бы отметить, что время конвертирования с ключем -c на много больше чем без него. Для документа объемом 50 листов формата А5 с изображениями составляет почти 20 сек (AthlonXP 2.5ГГц), без -с всего 4 секунды.
Все изложенное в статье проверялось на ОС FreeBSD 6.1, apache 2.2.2, php 5.1.4.



размещено: 2006-10-06,
последнее обновление: 2006-10-25,
автор: serge


100kg, 2006-10-07 в 11:16:28

вот у меня есть udc(universal document convertor), конвертит почти всё, джву в пдф! кароче весчь под винь канечно едёт :) но вот кряка нету и на каждои страничке после конверта стоит логотип компании :((

ymsssg, 2006-10-12 в 12:32:42

Спасибо за наводку на интересную утилиту! Так держать!



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0438 секунд
Из них PHP: 23%; SQL: 77%; Число SQL-запросов: 86 шт.
У Вас отключено GZIP-сжатие в браузере. Размер страницы 18934