Установка
Обзор
Aspose.Slides for PHP via Java работает в двух процессах. Ваш PHP‑скрипт использует PHP‑классы, которые передают каждый вызов через PHP/Java Bridge к Aspose.Slides, работающему на Java в Apache Tomcat. В этой статье объясняется, как настроить обе стороны, установить пакет с помощью Composer и выполнить короткий скрипт для проверки установки.
Требования
- PHP 7.0 – 8.3, с
allow_url_include = Onвphp.ini. Ваши скрипты загружают клиентскую библиотеку мостаJava.incиз Tomcat по HTTP. В PHP 8.4 и новееJava.incзавершается ошибкой «end() expects exactly 1 argument», если загружено расширениеxml, а сборки PHP для Windows всегда его загружают. - Composer.
- Java 8 или новее. Достаточно JRE.
- Apache Tomcat 9. PHP/Java Bridge построен на API
javax.servlet, которое больше не предоставляется в Tomcat 10 и новее, поэтому мост не запускается там. - PHP/Java Bridge 7.2.1, последняя версия. Его веб‑приложение
JavaBridge.warработает в Tomcat.
В этой статье Tomcat и ваши PHP‑скрипты запускаются на одном компьютере. Aspose.Slides открывает и сохраняет файлы внутри Tomcat, поэтому каждый путь, передаваемый скриптами, должен быть действителен в этой среде.
Установка на Linux
Эти команды устанавливают всё в ваш домашний каталог на Ubuntu 24.04. На других дистрибутивах установите те же пакеты с помощью менеджера пакетов дистрибутива.
-
Установите PHP, Composer, Java и инструменты загрузки, затем включите
allow_url_includeдля командной строки PHP:sudo apt-get update sudo apt-get install -y php-cli composer default-jre-headless curl unzip sudo sed -i 's/^allow_url_include = Off/allow_url_include = On/' "$(php -r 'echo php_ini_loaded_file();')"
1. Скачайте Apache Tomcat 9 и PHP/Java Bridge, поместите `JavaBridge.war` моста в папку `webapps` Tomcat и запустите Tomcat. Tomcat распаковывает WAR‑файл в `webapps/JavaBridge` при старте:
```bash
cd ~
curl -fsSLO https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.122/bin/apache-tomcat-9.0.122.tar.gz
tar -xzf apache-tomcat-9.0.122.tar.gz
curl -fsSL -o php-java-bridge.zip "https://sourceforge.net/projects/php-java-bridge/files/Binary%20package/php-java-bridge_7.2.1/php-java-bridge_7.2.1_documentation.zip/download"
unzip -o php-java-bridge.zip JavaBridge.war -d apache-tomcat-9.0.122/webapps
apache-tomcat-9.0.122/bin/startup.sh
-
Создайте папку проекта и установите Aspose.Slides for PHP via Java из Packagist:
mkdir ~/hello-slides cd ~/hello-slides composer require aspose/slides -
Остановите Tomcat, скопируйте JAR‑файл Aspose.Slides из пакета в папку моста
WEB-INF/lib, заменитеJava.incмоста версией для PHP 8 из пакета и снова запустите Tomcat:~/apache-tomcat-9.0.122/bin/shutdown.sh cp vendor/aspose/slides/ru/jar/aspose-slides-*-php.jar ~/apache-tomcat-9.0.122/webapps/JavaBridge/WEB-INF/lib/ unzip -o vendor/aspose/slides/ru/Java.inc.php8.zip -d ~/apache-tomcat-9.0.122/webapps/JavaBridge/java/ ~/apache-tomcat-9.0.122/bin/startup.shНа PHP 7 пропустите замену
Java.inc. Tomcat запускается несколько секунд и должен быть запущен каждый раз, когда ваши скрипты используют Aspose.Slides.
Установка на Windows
-
Установите PHP 8.3 для Windows и добавьте его папку в переменную окружения
PATH. Скопируйтеphp.ini-productionвphp.iniв той же папке. Вphp.iniустановитеallow_url_include = Onи раскомментируйте строкиextension_dir = "ext",extension=opensslиextension=zip. Composer нуждается вopensslдля загрузки пакетов и вzipдля их распаковки, если не установлен 7‑Zip или командаunzipнедоступна вPATH. -
Установите Composer.
-
Установите Java и задайте переменную окружения
JAVA_HOME, указывающую на её папку. Без неё Tomcat не стартует. -
В командной строке скачайте Apache Tomcat 9 и PHP/Java Bridge, поместите
JavaBridge.warмоста в папкуwebappsTomcat и запустите Tomcat. Скрипты Tomcat ищут Tomcat через переменнуюCATALINA_HOME, поэтому продолжайте работать в том же окне командной строки для следующих шагов. Tomcat распаковывает WAR‑файл вwebapps\JavaBridgeпри старте:cd %USERPROFILE% curl -fsSLO https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.122/bin/apache-tomcat-9.0.122-windows-x64.zip tar -xf apache-tomcat-9.0.122-windows-x64.zip set CATALINA_HOME=%USERPROFILE%\apache-tomcat-9.0.122 curl -fsSL -o php-java-bridge.zip "https://sourceforge.net/projects/php-java-bridge/files/Binary%20package/php-java-bridge_7.2.1/php-java-bridge_7.2.1_documentation.zip/download" tar -xf php-java-bridge.zip -C "%CATALINA_HOME%\webapps" JavaBridge.war "%CATALINA_HOME%\bin\startup.bat" -
Создайте папку проекта и установите Aspose.Slides for PHP via Java из Packagist:
mkdir %USERPROFILE%\hello-slides cd %USERPROFILE%\hello-slides composer require aspose/slides -
Остановите Tomcat, скопируйте JAR‑файл Aspose.Slides из пакета в папку моста
WEB-INF\lib, заменитеJava.incмоста версией для PHP 8 из пакета и снова запустите Tomcat:"%CATALINA_HOME%\bin\shutdown.bat" copy vendor\aspose\slides\jar\aspose-slides-*-php.jar "%CATALINA_HOME%\webapps\JavaBridge\WEB-INF\lib\" tar -xf vendor\aspose\slides\Java.inc.php8.zip -C "%CATALINA_HOME%\webapps\JavaBridge\java" "%CATALINA_HOME%\bin\startup.bat"На PHP 7 пропустите замену
Java.inc. Tomcat запускается несколько секунд и должен быть запущен каждый раз, когда ваши скрипты используют Aspose.Slides.
Проверка установки
Сохраните этот скрипт как hello.php в папке проекта. Он создаёт презентацию с одним текстовым полем и сохраняет её рядом со скриптом:
<?php
require_once("http://localhost:8080/JavaBridge/java/Java.inc");
require_once(__DIR__ . "/vendor/aspose/slides/ru/lib/aspose.slides.php");
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ShapeType;
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
$shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 50, 400, 100);
$shape->getTextFrame()->setText("Hello, Aspose.Slides!");
$presentation->save(__DIR__ . "/hello.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Запустите его из папки проекта:
php hello.php
Скрипт записывает hello.pptx с одним слайдом, содержащим текстовое поле. Без лицензии на слайде будет отображаться ватермарк оценки; см. Licensing.
Скрипт напрямую включает aspose.slides.php: автозагрузчик Composer не может загрузить эти классы, потому что они все определены в едином файле. Также передаётся абсолютный путь в save, поскольку Aspose.Slides работает внутри Tomcat и разрешает относительные пути относительно рабочей папки Tomcat, а не вашего скрипта.
FAQ
Как убедиться, что Aspose.Slides интегрирован правильно?
Запустите скрипт из раздела Verify the Installation. Если он создал hello.pptx без ошибок, PHP, PHP/Java Bridge и Aspose.Slides работают совместно.
Почему мой скрипт останавливается с ошибкой «Failed opening required ‘http://localhost:8080/JavaBridge/java/Java.inc’»?
PHP не смог загрузить Java.inc из Tomcat. Если сообщение перед этим указывает, что wrapper http:// отключён, включите allow_url_include = On в том php.ini, который используется командой php --ini. Если появляется «Connection refused», Tomcat ещё не запущен: запустите его или подождите несколько секунд, пока он полностью стартует.
Как ограничить потребление памяти при обработке больших презентаций?
Увеличивайте лимиты памяти JVM только настолько, насколько это необходимо, и закрывайте каждый объект Presentation в блоке finally, чтобы своевременно освобождать кэш. Это предотвращает ошибки «out‑of‑memory» и делает использование памяти предсказуемым при пакетных операциях.
Можно ли исключить ненужные форматы экспорта, чтобы уменьшить размер итогового JAR?
Текущие релизы Aspose.Slides поставляются как единый монолитный библиотечный файл, поэтому отключить отдельные экспортеры (например, PDF или SVG) на этапе сборки нельзя.