Masin Al-Dujaili: CHM-Dateien erstellen

Hallo Forum,

ich suche schon seit ein paar Stunden im Netz nach PHP-Skripten, die aus einer Sammlung von HTML-Dateien eine CHM kompilieren. Auch das Forumsarchiv gibt nicht allzuviel her, vermutlich habe ich mittlerweile auch keinen Nerv mehr, die richtigen Suchbegriffe einzugeben.

Wie auch immer: Wer mir einen Hinweis bzgl. eines solches Skriptes geben kann --gerne auch in Perl, das wird dann eben umgeschrieben--, der kann sich meiner kurzfristigen Dankbarkeit sicher sein. :-)

Beste Grüße aus Berlin-Lichtenberg
Masin Al-Dujaili

  1. Hallo!

    Ich habe mich im Rahmen von SELFHTML diesbezüglich mal vor einiger Zeit selbst schlaugemacht (wir wollen von zukünftigen SELFHTML-Versionen automatisch CHM-Dateien generieren lassen).

    Das Problem ist, dass das CHM-Format nirgendwo wirklich dokumentiert ist. Eine inoffizielle Dokumentation, die über Reverse Engineering entwickelt wurde, ist unter http://www.nongnu.org/chmspec/latest/ zu finden. Dort wird auch auf das zu Grunde liegende Binärformat verwiesen (die verlinkte Seite enthält nur die logische Struktur).

    Zumindest vor einigen Monaten habe ich noch nirgends eine brauchbare freie Lösung gefunden, um CHM-Dateien zu erzeugen. Die obige Doku wird im Moment eigentlich nur von Programmierern alternativer CHM-Anzeigeprogramme verwendet. Daher: Die einzige mir bekannte Möglichkeit bleibt weiterhin der Microsoft HTML Help Compiler, der mit dem Microsoft HTML Help Workshop mitkommt.

    Da der Microsoft HTML Help Compiler ein Kommandozeilenprogramm ist, kannst Du ihn auch von PHP aus aufrufen - Du müsstest mit PHP halt nur die Dateien generieren, die der HHC benötigt, um daraus eine CHM zu machen - die Quelldateien sind im INI- (Projekthauptdate) und in einem proprietär erweiterten HTML-Format (Inhalts- und Stichwortverzeichnis) - das müsstest Du zusätzlich zu den Inhaltsdateien selbst generieren, das Format der Dateien ist aber relativ brauchbar beschrieben.

    Der HHC funktioniert auch unter Linux - dort halt im Wine. Die Installation ist etwas komplizierter, da Wine selbst eine DLL bezüglich CHM mitbringt, die aber CHMs nur lesen kann, weswegen der HHC fehlschlägt, wenn man die mit Wine mitgelieferte DLL nutzt - in dem Fall muss man die DLL, die beim HHC mitkommt, verwenden. Wenn Du interesse daran hast, kann ich die genauen Schritte mal etwas ausführlicher Zusammenfassen.

    Wine ist natürlich nur eine Alternative, wenn Du root-Rechte auf dem Server hast (oder sehr viel Ahnung von Linux und zumindest Shell-Zugriff), sonst hast Du keine Chance, das zu nutzen, wenn Du Linux verwendest. Wenn Du dagegen einen Windows-Server hast und mit PHP auch externe Programme ausführen darfst, dann hast Du eine gute Chance, den HHC einfach in ein Verzeichnis nochzuladen und dann ohne Administrator-Rechte direkt auszuführen.

    Zusammengefasst: Eine einfache Lösung gibt es meines Wissens nicht, es besteht aber eine Möglichkeit, wenn Du bereit bist, sehr viel Zeit zu investieren und die Voraussetzungen gegeben sind.

    Viele Grüße,
    Christian

    1. Hallo Christian,

      Zusammengefasst: Eine einfache Lösung gibt es meines Wissens nicht, es besteht aber eine Möglichkeit, wenn Du bereit bist, sehr viel Zeit zu investieren und die Voraussetzungen gegeben sind.

      Vielen Dank für die schnelle Antwort. Leider, leider ist die Voraussetzung nicht gegeben, selber was an der Konfiguration des Webservers zu drehen :-(, da ich momentan mit meinem Projekt in einer Shared-Hosting-Umgebung lebe. Ich werde mir mal dennoch Deinen Link anschauen und gucken, ob man aus der inoffiziellen Doku nicht doch ein PHP-Skript basteln kann, das einem einfache CHMs erstellt. Aber das hat keine hohe Prio im Moment. Hintergrund ist, daß ich für ein Wiki eine Erweiterung zum Export schreiben will. CHM sollte eine der Auswahloptionen sein. Zuerst muß ich mich aber eh auf HTML, PDF und MHT (in der Reihenfolge) konzentrieren -- danach denke ich dann über CHM nach.

      Beste Grüße aus Berlin-Lichtenberg
      Masin

  2. Hellihello

    erzeugt der phpdocumentor nicht auch .chm? - Mal als Denkansatz.

    Dank und Gruß,

    frankx

    --
    tryin to multitain  - Globus = Planet != Welt
    1. Hallo,

      erzeugt der phpdocumentor nicht auch .chm? - Mal als Denkansatz.

      Nein, der generiert die Sourcedateien, die man dann durch den HTML Help Compiler von Microsoft jagen kann (bzw. vielleicht wird der inzwischen auch automatisch aufgerufen, keine Ahnung).

      Viele Grüße,
      Christian

      1. Hellihello Christian,

        Nein, der generiert die Sourcedateien, die man dann durch den HTML Help Compiler von Microsoft jagen kann (bzw. vielleicht wird der inzwischen auch automatisch aufgerufen, keine Ahnung).

        http://manual.phpdoc.org/ - ganz unten "chm".

        Dank und Gruß,

        frankx

        --
        tryin to multitain  - Globus = Planet != Welt
        1. Hallo Frank,

          Nein, der generiert die Sourcedateien, die man dann durch den HTML Help Compiler von Microsoft jagen kann (bzw. vielleicht wird der inzwischen auch automatisch aufgerufen, keine Ahnung).

          http://manual.phpdoc.org/ - ganz unten "chm".

          Ja, schon klar - aber das wird wie gesagt nicht von phpDocumentor selbst generiert. Stattdessen generiert phpDocumentor die Dateien, mit denen man den Microsoft HTML Help Compiler füttern kann und erst der macht dann daraus ein CHM.

          Viele Grüße,
          Christian