Hạn chế và khác biệt API
Khác biệt API công khai
Danh sách này, sử dụng các đoạn mã mẫu, minh họa một số khác biệt giữa Aspose.Slides for Java và Aspose.Slides for PHP thông qua API Java.
Nhập thư viện (So sánh gói)
Aspose.Slides for Java
import com.aspose.slides.*;
Aspose.Slides for PHP via Java
require_once("Java.inc");
require_once("lib/aspose.slides.php");
use aspose\sldes;
use aspose\sldes\Presentation;
Khởi tạo một bản thuyết trình mới
Aspose.Slides for Java
Presentation presentation = new Presentation();
Aspose.Slides for PHP via Java
$presentation = new Presentation();
Enum hoặc Hằng số
Aspose.Slides for Java
arc2.getLineFormat().setDashStyle(MsoLineDashStyle.SOLID);
Aspose.Slides for PHP via Java
$arc2->getLineFormat()->setDashStyle(slides\MsoLineDashStyle::SOLID);
Ví dụ
Aspose.Slides for Java
import com.aspose.slides.ISlide;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
import com.aspose.slides.ShapeType;
public class Test
{
public static void main(String[] args) throws Exception
{
// Khởi tạo một đối tượng Presentation đại diện cho tệp trình chiếu
Presentation pres = new Presentation();
try
{
// Lấy slide đầu tiên
ISlide slide = pres.getSlides().get_Item(0);
// Thêm một hình tự động với loại được đặt thành đường thẳng
slide.getShapes().addAutoShape(ShapeType.Line, 50, 150, 300, 0);
pres.save("NewPresentation_out.pptx", SaveFormat.Pptx);
}
finally
{
if (pres != null) pres.dispose();
}
}
}
Aspose.Slides for PHP via Java
<?php
require_once("Java.inc");
require_once("lib/aspose.slides.php");
use aspose\slides;
use aspose\slides\Presentation;
use aspose\slides\ShapeType;
use aspose\slides\SaveFormat;
$pres = new Presentation();
try
{
// Lấy slide đầu tiên
$slide = $pres->getSlides()->get_Item(0);
// Thêm một hình tự động với loại được đặt thành đường thẳng
$slide->getShapes()->addAutoShape(ShapeType::Line, 50, 150, 300, 0);
$pres->save("NewPresentation_out.pptx", SaveFormat::Pptx);
}
finally
{
if (!java_is_null($pres)) $pres->dispose();
}
?>
Các hạn chế khác của Aspose.Slides for PHP thông qua API Java so với Aspose.Slides for Java API
Không gian tên Aspose.Slides và các lớp Java mà chúng sử dụng là các wrapper được tạo bởi PhpJavaBridge trên các lớp Java cùng tên trong gói com.aspose.slides.
1. Đóng gói Tham số và Đối số Java
Các tham số và đối số mà chúng trả về và nhận vào là các wrapper dựa trên các lớp Java có cùng tên. Chỉ các chuỗi và kiểu số được chuyển đổi tự động. Mảng, collection, byte và boolean không được chuyển đổi.
Một lỗi thường gặp:
if ($node->isAssistant()) - wrong!
if (java_values($node->isAssistant())) - correct!
2. Kế thừa Lớp Java và Toán tử instanceof
Bạn không thể kế thừa một lớp Java từ một lớp PHP. Để khắc phục, bạn có thể áp dụng composition khi cần.
Toán tử instanceof chỉ hoạt động với một lớp cụ thể. Nó không hoạt động với interface hoặc lớp cha của một lớp.
3. Mảng Java KHÔNG phải là Mảng PHP
Tạo mảng Java trong PHP:
$Array = new JavaClass("java.lang.reflect.Array");
$Integer = new JavaClass("java.lang.Integer");
$IntegerArray = $Array->newInstance($Integer, 2);
$IntegerArray[0] = 1;
$IntegerArray[1] = 0;
4. Độ dài của Mảng Java
$data->length; - không hoạt động
cách khắc phục
$Array = new JavaClass("java.lang.reflect.Array");
$Array->getLength($data);
5. Phương thức Java Files.readAllBytes
$htmlBytes = Files->readAllBytes(Paths->get("embedOle.html")); - does NOT work
cách khắc phục
$file = new Java("java.io.File", "embedOle.html");
$Array = new JavaClass("java.lang.reflect.Array");
$Byte = new JavaClass("java.lang.Byte");
$htmlBytes = $Array->newInstance($Byte, $Array->getLength($file));
try {
$dis = new Java("java.io.DataInputStream", new Java("java.io.FileInputStream", $file));
$dis->readFully($htmlBytes);
} finally {
if (!java_is_null($dis)) $dis->close();
}
6. Phương thức Java Files.write
Files->write(new File($path)->toPath(), $fontData, StandardOpenOption::CREATE); - does NOT work
cách khắc phục
$fstr = new Java("java.io.FileOutputStream", $path);
$Array = new java_class("java.lang.reflect.Array");
try {
$fstr->write($fontData, 0, $Array->getLength($fontData));
} finally {
$fstr->close();
}