Limitaciones y Diferencias en la API
Diferencias en la API Pública
Esta lista, utilizando fragmentos de código de ejemplo, demuestra ciertas diferencias entre Aspose.Slides para Java y Aspose.Slides para PHP a través de las API de Java.
Importando biblioteca (Comparaciones de paquetes)
Aspose.Slides para Java
import com.aspose.slides.*;
Aspose.Slides para PHP a través de Java
require_once("Java.inc");
require_once("lib/aspose.slides.php");
use aspose\sldes;
use aspose\sldes\Presentation;
Instanciando una nueva Presentación
Aspose.Slides para Java
Presentation presentation = new Presentation();
Aspose.Slides para PHP a través de Java
$presentation = new Presentation();
Enums o Constantes
Aspose.Slides para Java
arc2.getLineFormat().setDashStyle(MsoLineDashStyle.SOLID);
Aspose.Slides para PHP a través de Java
$arc2->getLineFormat()->setDashStyle(slides\MsoLineDashStyle::SOLID);
Ejemplo
Aspose.Slides para 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);
// Agrega una forma automática con el tipo establecido en 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 para PHP a través de 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);
// Agrega una forma automática con el tipo establecido en línea
$slide->getShapes()->addAutoShape(ShapeType::Line, 50, 150, 300, 0);
$pres->save("NewPresentation_out.pptx", SaveFormat::Pptx);
}
finally
{
if (!java_is_null($pres)) $pres->dispose();
}
?>
Otras Limitaciones de Aspose.Slides para PHP a través de la API de Java en comparación con la API de Aspose.Slides para Java
Los espacios de nombres de Aspose.Slides y las clases de java que utilizan son envoltorios creados por el PhpJavaBridge sobre las clases de 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 de Java con los mismos nombres. Solo los tipos de cadena y numéricos se convierten automáticamente. Los arreglos, colecciones, bytes y booleanos no se convierten.
Un error común:
if ($node->isAssistant()) - ¡incorrecto!
if (java_values($node->isAssistant())) - ¡correcto!
2. Extendiendo clase de Java y operador instanceof
No puedes extender una clase de Java desde una clase PHP. Como solución alternativa, puedes implementar composición cuando sea necesario. El operador instanceof solo funciona para una clase concreta. No funciona para la interfaz o clase padre de una clase.
3. Un arreglo de Java NO es un arreglo de PHP
Creación de arreglos de 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 de Java
$data->length; - NO funciona
solución alternativa
$Array = new JavaClass("java.lang.reflect.Array");
$Array->getLength($data);
5. El método de Java Files.readAllBytes
$htmlBytes = Files->readAllBytes(Paths->get("embedOle.html")); - NO funciona
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 de Java Files.write
Files->write(new File($path)->toPath(), $fontData, StandardOpenOption::CREATE); - NO funciona
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();
}