Jump to content
iT4iT.CLUB
Sign in to follow this  
Kitsum

Cвой online конвертер TIFF, JPEG, PNG и BMP в PDF

Recommended Posts

converter_in_pdf_0.jpg

Доброе время суток.

По долгу службы приходится обслуживать не одну сотню пользователей, все они уникальны, у каждого свои проблемы, но объединяет их всех одна из эталонных - необходимость конвертировать различные графические форматы в PDF. Тривиальная задача, ставь виртуальный принтер и в бой, но есть несколько проблем:

  1. Все должно быть совершенно бесплатно т.к используется на предприятии и лишняя головная боль никому не нужна.
  2. Конвертер должен принимать форматы TIFF, JPEG, PNG, ...
  3. Некоторые готовые продукты не способны конвертировать те или иные форматы, например печать (встроенными средствами windows) формата TIFF на виртуальный принтер doPDF.
  4. Разный уровень подготовки пользователей, от "Смотри, как я умею" до "Смотри как надо". Вследствие чего некоторые люди способны интуитивно и самостоятельно понять, что к чему и под каким соусом это подать, а некоторые начинают процесс конвертирования с набора номера Вашего покорного слуги и его коллег. Естественно есть и промежуточные варианты эволюции с непредсказуемым результатом.
  5. Все должно быть просто и понятно, чтобы разобраться был способен даже ребенок.

Все началось в один обыденный день, когда ко мне обратился один из пользователей которому необходимо в промышленных масштабах производить перевод злополучных TIFF файлов в PDF. В этот день было решено организовать собственный online сервис по конвертированию графических форматов в PDF.

Основные болевые точки уже были затронуты выше, есть от чего отталкиваться, осталось только придумать алгоритм:

  1. Пользователь открывает специальную страницу в браузере
  2. Перетаскивает необходимый ему файл в окно
  3. Немного ждет и получает на скачивание готовый PDF

Все очень просто и работает в один клик, все действия за пользователя делает программа на сервере. Самое страшное, что может случиться - человек забудет адрес страницы.

Переходим к реализации

В моем случае используется:

  1. Linux Ubuntu 14.04
  2. Apache/2.4.7
  3. PHP 5.5.9
  4. Библиотека php5-imagick
  5. mySQL сервер

ImageMagick не входит в состав стандартных библиотек PHP (по крайней мере в пакете под Ubuntu), а следовательно:

apt-get install php5-imagick
service apache2 restart

Следующим этапом идет создание базы данных. Сказать честно, это вынужденный пункт т.к необходимо возвращать конвертированный файл с именем идентичным оригиналу, а ведь имя может содержать символы из различных алфавитов (например кириллица). И это вызывает определенные трудности. Зато, как побочный эффект, мы получаем возможность вести логи, следовательно, оптимизировать работу скрипта в будущем.

И так, создаем базу данных converter и таблицу inPDF со следующей структурой:

CREATE TABLE IF NOT EXISTS `inPDF` (
  `id` varchar(40) NOT NULL,
  `time` int(20) NOT NULL,
  `name` varchar(100) NOT NULL,
  `size` int(10) NOT NULL,
  `ip` varchar(15) DEFAULT NULL,
  `dns` varchar(50) DEFAULT NULL,
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Также следует использовать отдельную учетную запись SQL сервера для доступа к б.д.

Все остальные файлы прикреплены к посту. Все конвертируемые файлы загружаются в каталог upload и для этого необходимы соответствующие права, но Вы и так это понимаете.

chmod 0777 ./upload

Отредактируйте настройки базы данных в файле index.php

$settings = array(
    'host'  => 'localhost',
    'db'    => 'converter',
    'login' => 'user',
    'pass'  => 'password'
);

Пользовательский интерфейс

Его необходимо реализовать максимально простым и интуитивно понятным. Я представил его себе в виде обычного перетаскивания файла (TIFF, JPEG, PNG, BMP, можно добавить и другие форматы) в браузер, небольшого ожидания и получения на скачивание конвертированного в PDF файла. Никаких настроек, вопросов и лишних кликов мышкой!

Реализовать подобное поможет jquery. Я не селен в JS, поэтому побродил немного по сети и нашел, в свободном распространении пример реализации Dragon and Drop. После примитивных модификаций получил приемлемый результат.

converter_in_pdf_1.jpg

Главное использовать современный браузер. Данное творение проверено в: Chrome, Firefox, Opera.

PS: Не претендуем на идеал, но как по мне, для первой версии вполне даже пригодно.

converter.7z

 

Edited by Kitsum
Обновлено
  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By Kitsum
      Набросок небольшой программы на PHP для облегчения жизни IT отделу. Позволяет просматривать какие хосты располагаются на портах сетевого оборудования (за основу взято оборудование фирмы Cisco). Для связи используется SNMP протокол. Из информации об узле выводятся:
      MAC IP DNS имя Производитель оборудования Подробное описание можно посмотреть в следующей теме.
       
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...