Beperkingen en API-verschillen
Publieke API-verschillen
Deze lijst, met voorbeeldcodefragmenten, toont enkele verschillen tussen Aspose.Slides voor Java en Aspose.Slides voor PHP via Java-API’s.
Bibliotheek importeren (pakketvergelijkingen)
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;
Een nieuwe presentatie instantieren
Aspose.Slides for Java
Presentation presentation = new Presentation();
Aspose.Slides for PHP via Java
$presentation = new Presentation();
Enums of constanten
Aspose.Slides for Java
arc2.getLineFormat().setDashStyle(MsoLineDashStyle.SOLID);
Aspose.Slides for PHP via Java
$arc2->getLineFormat()->setDashStyle(slides\MsoLineDashStyle::SOLID);
Voorbeeld
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
{
// Instantieert een Presentation‑object dat een presentatie‑bestand vertegenwoordigt
Presentation pres = new Presentation();
try
{
// Haalt de eerste dia op
ISlide slide = pres.getSlides().get_Item(0);
// Voegt een autovorm toe met type ingesteld op lijn
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
{
// Haalt de eerste dia op
$slide = $pres->getSlides()->get_Item(0);
// Voegt een autovorm toe met type ingesteld op lijn
$slide->getShapes()->addAutoShape(ShapeType::Line, 50, 150, 300, 0);
$pres->save("NewPresentation_out.pptx", SaveFormat::Pptx);
}
finally
{
if (!java_is_null($pres)) $pres->dispose();
}
?>
Andere beperkingen van Aspose.Slides voor PHP via Java-API vergeleken met Aspose.Slides voor Java-API
Aspose.Slides‑namespaces en de Java‑klassen die ze gebruiken, zijn wrappers die door de PhpJavaBridge zijn gemaakt bovenop de Java‑klassen met dezelfde naam uit het com.aspose.slides‑pakket.
1. Omhullen van Java‑parameters en -argumenten
De parameters en argumenten die ze retourneren en accepteren, zijn wrappers bovenop de Java‑klassen met dezelfde namen. Alleen strings en numerieke types worden automatisch geconverteerd. Arrays, collecties, bytes en booleans worden niet geconverteerd.
Een veelgemaakte fout:
if ($node->isAssistant()) - wrong!
if (java_values($node->isAssistant())) - correct!
2. Java‑klasse uitbreiden en instanceof‑operator
U kunt geen Java‑klasse uitbreiden vanuit een PHP‑klasse. Als tijdelijke oplossing kunt u compositie implementeren wanneer dat nodig is.
De instanceof‑operator werkt alleen voor een concrete klasse. Hij werkt niet voor een interface of een bovenliggende klasse.
3. Een Java-array is GEEN PHP-array
Java‑arraycreatie in 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. De lengte van een Java-array
$data->length; - does NOT work
omweg
$Array = new JavaClass("java.lang.reflect.Array");
$Array->getLength($data);
5. De Java-methode Files.readAllBytes
$htmlBytes = Files->readAllBytes(Paths->get("embedOle.html")); - does NOT work
omweg
$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. De Java-methode Files.write
Files->write(new File($path)->toPath(), $fontData, StandardOpenOption::CREATE); - does NOT work
omweg
$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();
}