André Laugks: Java-Erweiterung

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

--
Die Frau geht, die Hilti bleibt!
  1. 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";

    1. 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

      --
      Die Frau geht, die Hilti bleibt!
      1. 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";

        1. 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

          --
          Die Frau geht, die Hilti bleibt!
          1. echo $begrüßung;

            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

            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";

            1. 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

              --
              Die Frau geht, die Hilti bleibt!