Limitaciones y Diferencias de la API

Diferencias de la API Pública

Esta lista, usando fragmentos de código de ejemplo, muestra ciertas diferencias entre Aspose.Slides for Java y Aspose.Slides for PHP a través de las API de Java.

Importar biblioteca (Comparaciones de paquetes)

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;

Instanciar una nueva presentación

Aspose.Slides for Java

Presentation presentation = new Presentation();

Aspose.Slides for PHP via Java

$presentation = new Presentation();

Enumeraciones o Constantes

Aspose.Slides for Java

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

Aspose.Slides for PHP via Java

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

Ejemplo

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
    {
        // Instancia un objeto Presentation que representa un archivo de presentación
        Presentation pres = new Presentation();
        try
        {
            // Obtiene la primera diapositiva
            ISlide slide = pres.getSlides().get_Item(0);

            // Añade una forma automática con el tipo establecido como línea
            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
{
    // Obtiene la primera diapositiva
    $slide = $pres->getSlides()->get_Item(0);

    // Añade una forma automática con el tipo establecido como línea
    $slide->getShapes()->addAutoShape(ShapeType::Line, 50, 150, 300, 0);
    $pres->save("NewPresentation_out.pptx", SaveFormat::Pppt);
}
finally
{
    if (!java_is_null($pres)) $pres->dispose();
}
?>

Otras limitaciones de Aspose.Slides for PHP a través de la API Java comparada con la API de Aspose.Slides for Java

Los espacios de nombres de Aspose.Slides y las clases java que utilizan son envoltorios creados por PhpJavaBridge sobre las clases Java con el mismo nombre del paquete com.aspose.slides.

1. Envolviendo parámetros y argumentos de Java

Los parámetros y argumentos que devuelven y aceptan son envoltorios sobre las clases Java con los mismos nombres. Sólo las cadenas y los tipos numéricos se convierten automáticamente. Los arreglos, colecciones, bytes y booleanos no se convierten.

Un error común:

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

2. Extender una clase Java y el operador instanceof

No puedes extender una clase Java desde una clase PHP. Como solución alternativa, puedes implementar composición cuando sea necesario. El operador instanceof sólo funciona para una clase concreta. No funciona para la interfaz o clase padre de una clase.

workaround

3. Un arreglo Java NO es un arreglo PHP

Creación de un arreglo 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. Longitud de un arreglo Java

$data->length; - does NOT work

solución alternativa

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

5. El método Java Files.readAllBytes

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

solución alternativa

$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. El método Java Files.write

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

solución alternativa

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