Свой конвертер документов в swf

Автор: shuranov
05.09.2011 15:52

Разберем немного scribd.com (или его более крупный аналог slideshare.net). Суть сервиса проста, любой пользователь может загрузить документ MS Office или OpenOffice, через короткое время после конвертации получается плеер, который проигрывает его презентацию, позволяя ее масштабировать и размещать на других сайтах. Грубо говоря аналог youtube в мире презентаций. Как создать свой аналог такого сервиса? Я разберу ключевой момент конвертации презентаций, остальное любой здравый программист на PHP может дописать сам.

Для разработки такого сервиса нам понадобится: Linux или Windows (не принципиально), OpenOffice, JRE (в некоторых случаях сгодится GIJ, но я бы рекомендовал в данном случае GNU Java), swftools.

 


1. Качаем JRE: link. Заменяем GIJ на JRE (скачиваем JRE, JDK не надо с официального сайта - sun.com), устанавливаем JRE, после этого:
root#> rm -f /usr/bin/java
root#> ln -s /path/to/installed/java /usr/bin/java

#>java -version


должна показать, что это именно сановская Java.

2. Устанавливаем OpenOffice: link (сбрасываем галочку "Include the Java JRE" перед загрузкой). Устанавливаем стандартно:
./configure
make && make install


3. Запускаем OpenOffice как сервер: /path/to/openoffice/program/soffice.bin -headless -nofirststartwizard -accept="socket,host=localhost,port=9000;urp;StarOf fice.Service"
Безусловно, проверив, чтобы 9000 порт не был занят:
#>netstat -an | grep 9000
(можно запуск OpenOffice прописать в автозапуск, чтобы стартовала при перезагрузках сервера автоматом).

4. Качаем уже готовый конвертер с link
Этот zip файл распаковываем, в нем исходные коды (папка src/edu/uiuc/ideals/conversion/oo) и библиотеки (lib). Собрать этот конвертер несложно, я использовал NetBeans: link (достаточно Java FX версии).
Создаем новый проект (Java -> Java Application), добавляем к нему файлы из src/edu/uiuc/ideals/conversion/oo, затем добавляем JAR архивы: кликаем правой клавишей по Libraties в проекте и выбираем пункт Add Jar/Folder..., где указываем путь к lib.
Собственно проводим саму сборку - Build. Если сборка прошла успешно - отлично, получили jar файл. Этот файл (если вы собирали под Windows) закачиваем на сервер, он и будет заниматься переводом всех документов в pdf.

5. Устанавливаем swftools: link. Внимание, если устанавливаете на Linux, то рекомендую сделать следующую правку: lib/devices/swf.c на строке 251 заменить код:
if(i->currentswfid == 65535) {
на
if(i->currentswfid == 2147483647) {

размерность int безусловно проверить стоит, но скорее всего она будет у вас стандартно 4-х байтовая, поэтому такая замена будет вполне нормальной.
далее стандартно:
./configure
make && make check && make install


6. Все пропущенные файлы через конвертер передаем в swftools:
#>/usr/bin/swftools -o output.swf -z -t file.pdf;

Результатом будет флешка, которую можно встроить в плеер, но лучше будет использовать параметр -B у swftools, и использовать свой плеер (флешка окажется сразу встроенной в ваш плеер и вы сможете использовать функции поиска по ней (думаю, что возможно), так как весь текст в ней сохраняется не как картинка, а текстовыми полями).

Обновлено 05.09.2011 15:56

 

Комментарии  

 
#1 Alex 15.10.2011 12:20
Спасибо)* Помогло))
Цитировать
 
 
#2 a 18.05.2012 08:49
хорошая статья
но не понятно зачем собирать офис, ведь можно поставить пакетом
Цитировать
 
 
#3 nike 29.09.2016 08:18
If the word size is larger than the tackle, then the word referenced for reminiscence-oblique
addressing may itself have an oblique flag set to point one
other memory indirect cycle.
Цитировать
 
 
#4 شرکت فنی مهندسی 01.02.2017 18:19
Do you have a spam problem on this site; I also am a blogger, and I was curious about your situation; we
have developed some nice procedures and we are looking to exchange methods with other folks, why not shoot me an e-mail if interested.
Цитировать
 
 
#5 دستگاه تصفیه آب 01.02.2017 18:21
Hi, I would like to subscribe for this website to take latest updates, thus where can i do it please help.
Цитировать
 
 
#6 دستگاه تصفیه آب 21.02.2017 11:47
Greetings! Very useful advice within this post! It's the little changes that
produce the most significant changes. Many thanks for sharing!
Цитировать
 
 
#7 jnmv 09.05.2017 02:44
This website was... how do you say it? Relevant!! Finally I've found something that helped me.
Appreciate it!
Цитировать
 
 
#8 Delbert 13.05.2017 13:57
Every weeқend i uѕed to go to see this web page,
for the гeason that i wish for enjoyment, since thіs this website conations in fact good funny dаta too.


Herе is my page ... ios 4; Delbert: http://www.kellertrans.ch/UserProfile/tabid/57/userId/406687/Default.aspx,
Цитировать
 
 
#9 how update iphone 18.05.2017 13:04
Ꮋi there јust wanted to give yօu a briеf heads up and let you know a feѡ of the
images aren't loading properly. I'm not ѕure ԝhy
but I think its a linking іssue. I've tried іt in two different intегnet browsers and both shoԝ tɦe same reѕults.


Also visit my web page: ɦⲟw updɑte iphone: http://freekr1.nayana.kr/mysql/ver.php?a%5B%5D=%3Ca%20href%3Dhttp%3A%2F%2Fwww.gsmlover.com%2Fchinese-mobile%2F%3Ehtc%3C%2Fa%3E
Цитировать
 
 
#10 Walter Kaczmarski 01.07.2017 01:13
Hello there, I discovered your web site by way of Google while
looking for a similar topic, your web site got here up, it appears to
be like great. I've bookmarked it in my google bookmarks.

Hello there, simply changed into alert to your weblog through Google, and located that it's really informative.
I'm going to be careful for brussels. I will be
grateful in case you continue this in future. A lot of people might be
benefited from your writing. Cheers!
Цитировать
 

Добавить комментарий


Защитный код
Обновить