Russian Qt Forum

Qt => Кладовая готовых решений => Тема начата: Nimbus от Август 29, 2011, 05:09



Название: Виджет просмотра PDF-файлов
Отправлено: Nimbus от Август 29, 2011, 05:09
Выкладываю своё первое решение.
Какое-то время назад мне пришлось столкнуться с задачей создания просмотрщика PDF-файлов. Казалось бы что проще - использовать ActiveX от Adobe Reader'а? Но есть ситуации, когда его невозможно использовать - когда на клиентской машине его нет, а чтобы установить требуются права администратора, которых у обычных пользователей нет в обычной конторе. Пришлось заморачиваться, долго гуглить на тему бесплатных и открытых решений, в итоге решение было найдено - библиотека Ghostscript. Это, конечно же, не её прямое предназначение, но не всё же в этом мире используется по его прямому назначению ;)

(http://s59.radikal.ru/i165/1108/a1/7b4f6bcec664t.jpg) (http://radikal.ru/F/s59.radikal.ru/i165/1108/a1/7b4f6bcec664.png.html)

В общем, публикую исходники виджета, в связи с частыми вопросами мне в ПМ о том как мне удалось завести это всё дело.
Писал быстро и "на коленке" но работает, правда памяти отъедает немало из-за немалой коллекции пиксмапов, но это оптимизируемо множеством способов, так что, допиливайте по своему желанию как хотите :)
Это только для OS Windows. *nix-оиды могут использовать библиотеку Poppler - с ней меньше изврата

По поводу параметров инстанцирования GS можете почитать тут (http://www.ghostscript.com/doc/8.54/Use.htm).
Задаются в этом фрагменте кода в файле gswidget.cpp
Код
C++ (Qt)
char *gsargv[10];
gsargv[0] = "-o";
gsargv[1] = "-sDEVICE=pngmono";
gsargv[2] = "-r110";
gsargv[3] = "-sOutputFile=img%d.png";
gsargv[4] = "-dSAFER";
gsargv[5] = "-dBATCH";
gsargv[6] = "-dNOPAUSE";
 

Для использования вам будет необходимо ещё подключить к линковщику gsdll32.lib, а деплоить с gsdll32.dll соответственно

Прикрепить не могу из-за большого размера бинарника Ghostscript'а, поэтому заливаю на файлошару (заранее пардоньте).
http://www.mediafire.com/?8bdmgb01y4xzwal (http://www.mediafire.com/?8bdmgb01y4xzwal)


Название: Re: Виджет просмотра PDF-файлов
Отправлено: Пантер от Август 29, 2011, 09:46
Используй нормальные файлошары. Например, http://rghost.ru/


Название: Re: Виджет просмотра PDF-файлов
Отправлено: Nimbus от Август 29, 2011, 09:48
Используй нормальные файлошары. Например, http://rghost.ru/
Я хотел, но там же максимум на 30 дней


Название: Re: Виджет просмотра PDF-файлов
Отправлено: kambala от Август 29, 2011, 12:26
зарегистрируйся на mediafire например


Название: Re: Виджет просмотра PDF-файлов
Отправлено: Nimbus от Август 29, 2011, 12:31
зарегистрируйся на mediafire например
Ок, спасибо. Обновил ссылку


Название: Re: Виджет просмотра PDF-файлов
Отправлено: ритт от Сентябрь 06, 2011, 01:45
а poppler уже немоден, надо с нуля всё писать?


Название: Re: Виджет просмотра PDF-файлов
Отправлено: Nimbus от Сентябрь 06, 2011, 05:59
а poppler уже немоден, надо с нуля всё писать?
Под Виндой его завести не удалось (http://www.prog.org.ru/index.php?topic=14132).


Название: Re: Виджет просмотра PDF-файлов
Отправлено: Sancho_s_rancho от Сентябрь 06, 2011, 07:08
а poppler уже немоден, надо с нуля всё писать?
Под Виндой его завести не удалось (http://www.prog.org.ru/index.php?topic=14132).
http://lists.freedesktop.org/archives/poppler/2010-July/006088.html
http://www.overthere.co.uk/2011/03/06/setup-poppler-windows-pyqt/
Ну у кого-то ведь работает.


Название: Re: Виджет просмотра PDF-файлов
Отправлено: Nimbus от Сентябрь 06, 2011, 07:37
http://lists.freedesktop.org/archives/poppler/2010-July/006088.html
http://www.overthere.co.uk/2011/03/06/setup-poppler-windows-pyqt/
Ну у кого-то ведь работает.
На даты посмотрите - это новое и тогда не нагугливалось. Обошёлся Ghostscrpt'ом, работает и ладно. Никто не жаловался. Займусь на досуге.


Название: Re: Виджет просмотра PDF-файлов
Отправлено: Bloodyhand от Март 12, 2012, 15:22
Спасибо хорошая утилитка, пригодилась на конференции