Plone2Pdf - Mehrere Dokumente in ein PDF umwandeln

  • Hallo zusammen,

    ich habe einen eigenen CT geschrieben, der sich aus verschiedenen Textelementen zusammensetzt. Den CT hab ich bei Plone2Pdf integriert, sodass die Umwandlung nach PDF funktioniert.

    Nun möchte ich noch eine Funktion implementieren, die es mir möglich macht, alle erstellten Elemente des CTs in ein einziges PDF zu konvertieren.

    Wie kann ich das machen?
    Ich müsste dafür ja irgendwie sequenziell auf die Objekte zugreifen können. Aber von welcher Stelle geschieht das?
    Hat jemand das vielleicht schon jemand gemacht und Code-Schnipsel für mich parat?

    Bin noch ein ziiiemlicher Plone-Anfänger und für jede Hilfe dankbar :)

    Vielen Dank schonmal!
    Greets, Moerz

  • Alles was du im PDF sehen willst, muss das Template viewpdf.pt (aus dem Plone2PDF-Produkt) zusammenstellen. Dabei ist zu beachten, dass CSS nicht unterstützt wird, weswegen man Tabellen mit den alten HTML-Attributen ala width, font, align etc. verwendet.

    Bei komplizierteren CT's muss das Template z.B. auch durch Hilfe von eigenen Scripten den nötigen Inhalt zusammentragen und ausgeben.
    Ich möchte mal ein Bsp. geben.

    Zitat

    Ein eigener CT mit namen ATMediaPage enthält Bilder, die auf verschiedene Weise mit dem ebenfalls enthaltenem Text kombiniert werden können. Eine halbwegs entsprechende PDF-Ausgabe soll erreicht werden.


    Da in dem Fall die Ausgabe jedoch immer auf small_right-view steht (kleine Bilder [200*200] rechts neben dem Text), kann man das Script etwas vereinfachen.
    Das prinzipielle Vorgehen ist dies:
    * im viewpdf.pt feststellen welchen portal_type der aktuelle Context (here) besitzt
    * wenn portal_type == 'MediaPage' dann eigenen Code ausführen
    * Tabelle erzeugen die links Text und rechts die enthaltenen Bilder ausgibt

    Ok, schauen wir also in die originale viewpdf.pt. Dort finden sich die Teil-Macros, die sich um die Ausgabe bestimmter Inhalte kümmern.

    Code
    ...
        <tal:ifZWikiPage tal:condition="python: here.portal_type == 'Wiki Page'">
            <div tal:define="content_wiki python: here.ploneChar2SystChar(here.renderMidsectionIn(here.renderMarkedLinksIn(here.preRendered())))">
                <div tal:replace="structure string: $content_wiki"></div>
            </div>
        </tal:ifZWikiPage>
    ...


    Nun wird ein entsprechendes Teil-Macro eingesetzt


    ^^ Dies soll dir nur verdeutlichen wie man die Sache angehen kann. Der Code muss nicht fehlerfrei sein, denn ich schreib das hier eher zwischen Tür und Angel.

    Ok - wenn weitere Fragen, dann posten! ;)

    Torty

    "Carpe Diem" powered by positiv Feelings

  • Danke für die Hilfe!

    Aber wie kann man die gleichzeitige Ausgabe mehrerer Objekte realisieren?

    Also um bei deinem Beispiel ATMediaPage zu bleiben. Nehmen wir an, es wurden 20 solche MediaPagesauf der Plone-Site erstellt. Diese sollen nun mit nur einem Klick in ein einziges PDF-File ausgegeben werden, welches dann die 20 MediaPages enthält.

    Dazu müsste man ja irgendwie über alle vorhandenen Objekte der Datenbasis iterieren können.

    Greets, Moerz

  • Kannst du zu dieser Vorgabe noch etwas detailierter werden? Also z.B. wo soll der Link stehen, der die Ausgabe anstößt und welche Struktur/Usecase liegt dem zu Grunde?
    Daraus kann man dann evtl. besser erkennen, wie es bei dir zu realisieren wäre.

    Torty

    "Carpe Diem" powered by positiv Feelings