Batasan dan Perbedaan API

Perbedaan API Publik

Daftar ini, menggunakan segmen kode contoh, menunjukkan beberapa perbedaan antara Aspose.Slides untuk Java dan Aspose.Slides untuk PHP via API Java.

Mengimpor pustaka (Perbandingan Paket)

Aspose.Slides untuk Java

import com.aspose.slides.*;

Aspose.Slides untuk PHP via Java

require_once("Java.inc");
require_once("lib/aspose.slides.php");

use aspose\sldes;
use aspose\sldes\Presentation;

Membuat Presentasi Baru

Aspose.Slides untuk Java

Presentation presentation = new Presentation();

Aspose.Slides untuk PHP via Java

$presentation = new Presentation();

Enum atau Konstanta

Aspose.Slides untuk Java

arc2.getLineFormat().setDashStyle(MsoLineDashStyle.SOLID);

Aspose.Slides untuk PHP via Java

$arc2->getLineFormat()->setDashStyle(slides\MsoLineDashStyle::SOLID);

Contoh

Aspose.Slides untuk 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
    {
        // Membuat objek Presentation yang mewakili file presentasi
        Presentation pres = new Presentation();
        try
        {
            // Mendapatkan slide pertama
            ISlide slide = pres.getSlides().get_Item(0);

            // Menambahkan autoshape dengan tipe garis
            slide.getShapes().addAutoShape(ShapeType.Line, 50, 150, 300, 0);
            pres.save("NewPresentation_out.pptx", SaveFormat.Pptx);
        }
        finally
        {
            if (pres != null) pres.dispose();
        }
    }
}

Aspose.Slides untuk 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
{
    // Mendapatkan slide pertama
    $slide = $pres->getSlides()->get_Item(0);

    // Menambahkan autoshape dengan tipe garis
    $slide->getShapes()->addAutoShape(ShapeType::Line, 50, 150, 300, 0);
    $pres->save("NewPresentation_out.pptx", SaveFormat::Pptx);
}
finally
{
    if (!java_is_null($pres)) $pres->dispose();
}
?>

Keterbatasan Lain dari Aspose.Slides untuk PHP via API Java dibandingkan dengan Aspose.Slides untuk API Java

Namespace Aspose.Slides dan kelas java yang mereka gunakan adalah pembungkus yang dibuat oleh PhpJavaBridge di atas kelas Java dengan nama yang sama dari paket com.aspose.slides.

1. Membungkus Parameter dan Argumen Java

Parameter dan argumen yang mereka kembalikan dan terima merupakan pembungkus di atas kelas Java dengan nama yang sama. Hanya string dan tipe numerik yang dikonversi secara otomatis. Array, koleksi, byte, dan boolean tidak dikonversi.

Kesalahan umum:

if ($node->isAssistant()) - wrong!
if (java_values($node->isAssistant())) - correct!

2. Memperluas Kelas Java dan Operator Instanceof

Anda tidak dapat memperluas kelas Java dari kelas PHP. Sebagai solusi, Anda dapat menerapkan komposisi bila diperlukan.
Operator instanceof hanya berfungsi untuk kelas konkret. Ia tidak berfungsi untuk antarmuka atau kelas induk suatu kelas.

solusi

3. Array Java BUKAN Array PHP

Pembuatan array Java di 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. Panjang Array Java

$data->length; - tidak berfungsi

solusi

$Array = new JavaClass("java.lang.reflect.Array");
$Array->getLength($data);

5. Metode Java Files.readAllBytes

$htmlBytes = Files->readAllBytes(Paths->get("embedOle.html")); - does NOT work

solusi

$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. Metode Java Files.write

Files->write(new File($path)->toPath(), $fontData, StandardOpenOption::CREATE); - does NOT work

solusi

$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();
}