Limitations et différences d'API

Differences de l’API publique

Cette liste, utilisant des segments de code exemples, démontre certaines différences entre Aspose.Slides pour Java et Aspose.Slides pour PHP via des API Java.

Importation de bibliothèque (comparaisons de packages)

Aspose.Slides pour Java

import com.aspose.slides.*;

Aspose.Slides pour PHP via Java

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

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

Instanciation d’une nouvelle présentation

Aspose.Slides pour Java

Presentation presentation = new Presentation();

Aspose.Slides pour PHP via Java

$presentation = new Presentation();

Enums ou constantes

Aspose.Slides pour Java

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

Aspose.Slides pour PHP via Java

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

Exemple

Aspose.Slides pour 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
    {
        // Instantiates a Presentation object that represents a presentation file
        Presentation pres = new Presentation();
        try
        {
            // Gets the first slide
            ISlide slide = pres.getSlides().get_Item(0);

            // Adds an autoshape with type set to line
            slide.getShapes().addAutoShape(ShapeType.Line, 50, 150, 300, 0);
            pres.save("NewPresentation_out.pptx", SaveFormat.Pptx);
        }
        finally
        {
            if (pres != null) pres.dispose();
        }
    }
}

Aspose.Slides pour 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
{
    // Gets the first slide
    $slide = $pres->getSlides()->get_Item(0);

    // Adds an autoshape with type set to line
    $slide->getShapes()->addAutoShape(ShapeType::Line, 50, 150, 300, 0);
    $pres->save("NewPresentation_out.pptx", SaveFormat::Pptx);
}
finally
{
    if (!java_is_null($pres)) $pres->dispose();
}
?>

Autres limitations d’Aspose.Slides pour PHP via l’API Java par rapport à Aspose.Slides pour l’API Java

Les espaces de noms d’Aspose.Slides et les classes Java qu’ils utilisent sont des wrappers créés par le PhpJavaBridge sur les classes Java ayant le même nom à partir du package com.aspose.slides.

1. Enveloppement des paramètres et arguments java

Les paramètres et arguments qu’ils retournent et acceptent sont des wrappers au-dessus des classes Java ayant les mêmes noms. Seules les chaînes et les types numériques sont convertis automatiquement. Les tableaux, collections, octets et booléens ne sont pas convertis.

Une erreur courante :

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

2. Étendre une classe Java et opérateur instanceof

Vous ne pouvez pas étendre une classe Java à partir d’une classe PHP. Comme solution de contournement, vous pouvez mettre en œuvre la composition si nécessaire. L’opérateur instanceof ne fonctionne que pour une classe concrète. Il ne fonctionne pas pour l’interface d’une classe ou la classe parente.

solution de contournement

3. Un tableau Java n’est PAS un tableau PHP

Création de tableau Java en 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. Longueur d’un tableau Java

$data->length; - ne fonctionne PAS

solution de contournement

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

5. La méthode Java Files.readAllBytes

$htmlBytes = Files->readAllBytes(Paths->get("embedOle.html")); - ne fonctionne PAS

solution de contournement

$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. La méthode Java Files.write

Files->write(new File($path)->toPath(), $fontData, StandardOpenOption::CREATE); - ne fonctionne PAS

solution de contournement

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