Java-Erweiterung
André Laugks
- php
0 dedlfix0 André Laugks0 dedlfix0 André Laugks0 dedlfix
Hallo!
Hat sich hier jemand mal mit PHP und Java beschäftigt? Soll heißen, wie man beide am besten miteinander verbindet.
Nimmt man die PHP/Java-Bridge oder reicht die JVM aus, oder ganz was anderes?
André Laugks
echo $begrüßung;
Hat sich hier jemand mal mit PHP und Java beschäftigt? Soll heißen, wie man beide am besten miteinander verbindet.
Vor einiger Zeit hatte ich die Aufgabe, FOP mit PHP unter Gentoo zu verwenden.
Hier sind meine Notizen von damals (=irgendwann im Jahr 2004). Möglicherweise ist nicht mehr alles davon brauchbar. Beispielsweise ist die env-Geschichte in Gentoos Apache-Startscript mittlerweise geändert worden.
php.ini:
extension = java.so
[Java]
java.class.path = /usr/lib/php/extensions/no-debug-non-zts-20020429/php_java.jar
; java.home wird nicht benötigt
;java.home = /opt/blackdown-jdk-1.4.1/
java.library = /opt/blackdown-jdk-1.4.1/jre/lib/i386/libjava.so
java.library.path = /usr/lib/php/extensions/no-debug-non-zts-20020429
eventuell müssen Pfade in ld.so.conf angepasst werden. Der Apache braucht ein LD_LIBRARY_PATH=/opt/blackdown-jdk-1.4.1/jre/lib/i386 sonst findet er ein paar Bibliotheken nicht (evtl. /etc/init.d/apache2 anpassen, gentoo startet ihn mit env -i).
gentoo-Änderungen:
in Datei /etc/env.d/java/blackdown...
ADDLDPATH=...classic => server
ausführen:
java-config -S blackdown-jdk-1.4.1
java-config -l
java-config -A fop
/usr/sbin/env-update && source /etc/profile
cat 21java-classpath
class.path in php.ini ergänzen
Apache Start-Script erweitern
vi /etc/init.d/apache2
Zeile
env -i PATH=$PATH /sbin/start-stop-daemon...
ändern zu
env -i PATH=$PATH LD_LIBRARY_PATH=/opt/blackdown-jdk-1.4.1/jre/lib/i386 /sbin/start-stop-daemon
echo "$verabschiedung $name";
Hallo!
Vor einiger Zeit hatte ich die Aufgabe, FOP mit PHP unter Gentoo zu verwenden.
Ich habe diese Aufgabe jetzt auch bekommen. Aber ohne Gentoo ;-).
Bei meinen Recherchen habe ich dieser Klasse fo2pdf.phps begegnet. Wie die Klasse funktioniert ist mir soweit klar und wie man auf der Konsole transformiert auch.
Leider habe ich noch nicht raus gefunden, wie ich die XML-Datei durchreichen kann. Hast Du diesbezüglich noch etwas in Deinen Notizen?
Hier sind meine Notizen von damals (=irgendwann im Jahr 2004). [...]
Du hast es also ohne diese PHP/Java-Bridge gemacht, sondern mit der JVM.
André Laugks
echo $begrüßung;
Bei meinen Recherchen habe ich dieser Klasse fo2pdf.phps begegnet. Wie die Klasse funktioniert ist mir soweit klar und wie man auf der Konsole transformiert auch.
Ich habe damals PEARs XML_fo2pdf verwendet. Diese Klasse sieht aus wie die von dir verlinkte, ist aber erweitert worden.
Leider habe ich noch nicht raus gefunden, wie ich die XML-Datei durchreichen kann. Hast Du diesbezüglich noch etwas in Deinen Notizen?
Die XML-Daten habe ich mit einer XSL-Transformation in ein XSL-FO-Dokument (fo:root...</fo:root>) umgewandelt. Daraus hat der FOP dann ein PDF generiert (Methode runFromString($xslFo) der obigen Klasse).
echo "$verabschiedung $name";
Hallo!
Die XML-Daten habe ich mit einer XSL-Transformation in ein XSL-FO-Dokument (fo:root...</fo:root>) umgewandelt. Daraus hat der FOP dann ein PDF generiert (Methode runFromString($xslFo) der obigen Klasse).
Ok, Du hast es also in zwei Schritten gemacht?
1. XML + XSLT(+XSL-FO) -> XSLT-Prozessor = XSL-FO
2. XSL-FO -> XSL-FO-Prozessor = PDF
André Laugks
echo $begrüßung;
Ok, Du hast es also in zwei Schritten gemacht?
- XML + XSLT(+XSL-FO) -> XSLT-Prozessor = XSL-FO
- XSL-FO -> XSL-FO-Prozessor = PDF
Genau. Aufgabe des FOPs ist es ja nur, aus einem XSL-FO-Dokument ein PDF zu generieren. Wenn du Daten in einem Format ungleich XSL-FO hast - was häufig der Fall sein wird - musst du die natürlich erstmal nach XSL-FO transformieren.
echo "$verabschiedung $name";
Hallo!
Genau. Aufgabe des FOPs ist es ja nur, aus einem XSL-FO-Dokument ein PDF zu generieren.
Die FOPs die mir bekannt sind, können das in einem Rutsch. Die nehmen den XSLT-Output dann als XSL-FO an.
Naja, muß vielleicht doch mal die Java-Klasse anschauen. Ansonsten mache ich es auch in zwei Schritten.
André Laugks