Wykorzystanie Zoho Remote API w PHP do edycji dokumentów biurowych

Wczoraj opisałem wykorzystanie Zoho Remote API w Pythonie z pomocą biblioteki pycurl. Dzisiaj zaprezentuję przykładowe skrypty PHP wykorzystujące wspomniane API usług zoho.com. Za pomocą Remote API możemy na własnej stronie internetowej wyświetlać i edytować dokumenty biurowe (prezentacje, arkusze, dokumenty tekstowe) za pomocą zdalnych edytorów Zoho. W tym celu należy wysłać dokument i odpowiednie dane na podany adres URL API danego edytora. Warto też zapoznać się z artykułem Przegląd możliwości Zoho API i Zoho CloudSQL.

Wymagania

  • By korzystać z Remote API potrzebujemy wygenerować klucz API ("darmowa" rejestracja)
  • Potrzebujemy także PHP z obsługą biblioteki CURL. Większość hostingów powinna pozwalać na bezproblemowe korzystanie z tej biblioteki (sprawdź w phpinfo jej obecność)

Remote API dla Zoho Writer

Oto przykładowy skrypt otwierający dokument znajdujący się na naszym serwerze w edytorze Zoho Writer:
<?php
$api = 'TWÓJ KLUCZ API ZOHO';

$fields = array();
$fields['content'] = "@/ścieżka/do/plik.odt";
$fields['filename'] = 'plik.odt';
$fields['id'] = '13';
$fields['format'] = 'odt';
$fields['saveurl'] = urlencode('http://localhost/foo.php');

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://export.writer.zoho.com/remotedoc.im?apikey='.$api.'&output=editor');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_VERBOSE,  1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$page = curl_exec($ch);
curl_close($ch);
echo $page;
Stosujemy bibliotekę CURL by wysłać POSTem plik, jak i potrzebne dane. content to zawartość pliku (dla Curl podajemy ścieżkę do pliku poprzedzoną znakiem @), filename to nazwa pliku, id - unikalny ID stosowany np. do identyfikacji pliku przy zapisie. format to format w jakim dokument ma zostać zapisany, a saveurl to pełen adres URL strony w naszym serwisie odbierającej nową wersję dokumentu z zapisu w edytorze (oczywiście localhost nie zadziała, musi to być publicznie dostępny adres URL). Przykładowy kod obsługujący zapis dostępny jest w dokumentacji API. Żądanie, jeżeli się powiedzie zwróci wklejkę JavaScript przekierowującą na edytor.

Remote API dla Sheet i Show

API dla arkuszy i prezentacji jest prostsze. W ich przypadku link do edytora przekazywany jest w nagłówki Location odpowiedzi. Musimy go więc wyłuskać i wykorzystać:
<?php
$api = 'TWÓJ KLUCZ API ZOHO';

$fields = array();
$fields['content'] = "@/ścieżka/do/b.ppt";
$fields['filename'] = 'b.ppt';
$fields['id'] = '13';
$fields['format'] = 'ppt';
$fields['saveurl'] = urlencode('http://localhost/foo.php');

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://show.zoho.com/remotedoc.im?apikey='.$api.'&output=editor');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_VERBOSE,  1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, true);

$content = curl_exec ($ch);
curl_close ($ch);

$headers = explode("
", $content);
foreach($headers as $val)
{
if (stripos($val, 'Location: ') !== false)
	{
	$url = str_replace('Location: ', '', $val);
	echo '<iframe src="'.$url.'" style="width:100%;height:400px;"></iframe>';
	}
}
W powyższym przykładzie pobieramy nagłówki, a nie treść odpowiedzi. Następnie przeszukujemy otrzymane nagłówki by trafić na nagłówek Location. Wyciągamy link i otwieramy edytor w ramce.
RkBlog

PHP w Akcji, 3 October 2009

Comment article
Comment article RkBlog main page Search RSS Contact