การติดตั้ง
ภาพรวม
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 ของ PHP จะโหลดเสมอ - 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 ดังนั้นทุกพาธที่สคริปต์ของคุณส่งให้ต้องเป็นพาธที่ใช้ได้ใน 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();')" -
ดาวน์โหลด Apache Tomcat 9 และ PHP/Java Bridge ใส่ไฟล์
JavaBridge.warของบริดจ์ลงในโฟลเดอร์webappsของ Tomcat แล้วเริ่ม Tomcat Tomcat จะแตกไฟล์ WAR ไปยังwebapps/JavaBridgeขณะเริ่มทำงาน: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/th/jar/aspose-slides-*-php.jar ~/apache-tomcat-9.0.122/webapps/JavaBridge/WEB-INF/lib/ unzip -o vendor/aspose/slides/th/Java.inc.php8.zip -d ~/apache-tomcat-9.0.122/webapps/JavaBridge/java/ ~/apache-tomcat-9.0.122/bin/startup.shสำหรับ PHP 7 ให้ข้ามขั้นตอนการเปลี่ยนไฟล์
Java.incTomcat จะใช้เวลาไม่กี่วินาทีในการเริ่มทำงาน และต้องทำงานตลอดเวลาที่สคริปต์ของคุณใช้ Aspose.Slides
การติดตั้งบน Windows
-
ติดตั้ง PHP 8.3 for Windows และเพิ่มโฟลเดอร์ของมันเข้าไปในตัวแปรสภาพแวดล้อม
PATHคัดลอกphp.ini-productionไปเป็นphp.iniในโฟลเดอร์เดียวกัน ในphp.iniตั้งค่าallow_url_include = Onและยกเลิกการคอมเมนต์บรรทัดextension_dir = "ext"extension=opensslและextension=zipComposer ต้องการopensslเพื่อดาวน์โหลดแพคเกจและzipเพื่อแตกไฟล์ เว้นแต่คุณติดตั้ง 7‑Zip หรือมีคำสั่งunzipอยู่ในPATH -
ติดตั้ง Composer.
-
ติดตั้ง Java และตั้งค่าตัวแปรสภาพแวดล้อม
JAVA_HOMEให้ชี้ไปที่โฟลเดอร์ของ Java Tomcat จะไม่เริ่มทำงานถ้าไม่มีตัวแปรนี้ -
ใน Command Prompt ดาวน์โหลด Apache Tomcat 9 และ PHP/Java Bridge ใส่ไฟล์
JavaBridge.warของบริดจ์ลงในโฟลเดอร์webappsของ Tomcat แล้วเริ่ม Tomcat สคริปต์ของ Tomcat จะค้นหา Tomcat ผ่านตัวแปรCATALINA_HOMEดังนั้นควรใช้หน้าต่าง Command Prompt เดียวกันสำหรับขั้นตอนต่อไป 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_5.2.1/php-java-bridge_5.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.incTomcat จะใช้เวลาไม่กี่วินาทีในการเริ่มทำงาน และต้องทำงานตลอดเวลาที่สคริปต์ของคุณใช้ Aspose.Slides
ตรวจสอบการติดตั้ง
บันทึกสคริปต์นี้เป็น hello.php ในโฟลเดอร์โปรเจกต์ จะสร้างงานนำเสนอที่มีกล่องข้อความเดียวและบันทึกไว้ใกล้ไฟล์สคริปต์:
<?php
require_once("http://localhost:8080/JavaBridge/java/Java.inc");
require_once(__DIR__ . "/vendor/aspose/slides/th/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 ไม่ใช่ของสคริปต์คุณ
คำถามที่พบบ่อย
ฉันสามารถตรวจสอบได้อย่างไรว่า Aspose.Slides ถูกรวมเข้าด้วยกันอย่างถูกต้อง?
เรียกสคริปต์ใน ตรวจสอบการติดตั้ง หากมันเขียน 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 ของคุณโหลด; ใช้ php --ini เพื่อตรวจสอบไฟล์ที่ใช้ หากแสดงข้อความ “Connection refused” หมายความว่า Tomcat ยังไม่ได้รัน: ให้เริ่ม Tomcat หรือรอไม่กี่วินาทีจนกว่าจะพร้อม
ฉันจะจำกัดการใช้หน่วยความจำเมื่อประมวลผลงานนำเสนอขนาดใหญ่ได้อย่างไร?
เพิ่มขีดจำกัดหน่วยความจำของ JVM เพียงเท่าที่ต้องการและปิดแต่ละอินสแตนซ์ของ Presentation ในบล็อค finally เพื่อปล่อยแคชอย่างทันท่วงที วิธีนี้จะป้องกันข้อผิดพลาด out‑of‑memory และทำให้การใช้หน่วยความจำโดยรวมคาดเดาได้ในระหว่างการประมวลผลแบบแบตช์
ฉันสามารถยกเว้นฟอร์แมตการส่งออกที่ไม่ต้องการเพื่อทำให้ขนาดไฟล์ JAR สุดท้ายเล็กลงได้หรือไม่?
รุ่นปัจจุบันของ Aspose.Slides จะจัดจำหน่ายเป็นไลบรารีแบบโมโนลิธิคเดียว จึงไม่สามารถปิดฟีเจอร์ผู้ส่งออกเฉพาะเช่น PDF หรือ SVG ในขั้นตอนการสร้างได้.