PDF oder Dateien integrieren

Startseite Foren Deutsches LiveCode-Forum PDF oder Dateien integrieren

Schlagwörter: 

Ansicht von 9 Antwort-Themen
  • Autor
    Beiträge
    • #1291
      HeikoH
      Teilnehmer

        Hallo Hauke, hallo Community,

        in LiveCode kann ich ja per Import as Control Image, Audio, Video und Text auf Cards platzieren und bei Bedarf visible etc setzen. Geht das auch mit anderen Dateien?

        Beispiel:
        Ich möchte eine PDF Datei anzeigen lassen, die nicht Extern irgendwo liegt (Festplatte), sondern in der Anwendung integriert ist. Zum Beispiel eine PDF, die dann im Viewer gezeigt wird.

        Meine Idee war
        launch document “pfad auf Card”

        Wie geht das genau?

        Viele Grüße

        Heiko

      • #1293
        Klaus Major
        Administrator

          Hallo Heiko,

          leider geht das gar nicht!

          Du könntest zur Not einen externe Datei (z.B. PDF) in eine Custom Property einlesen, dann wäre sie IM Stack, aber zur Anzeige müsstest Du sie wieder auf die Platte “ausspucken”.

          Aber vielleicht reicht es Dir ja, die Datei nur im TEMP Ordner zu speichern und anzuzeigen?
          Beim nächsten Neustart wäre sie dann wieder weg, oder Du löscht sie einfach selber nach Gebrauch.

          Gruß

          Klaus

        • #1295
          HeikoH
          Teilnehmer

            Hallo Klaus,

            hast du ein kleinen Beispiel Code oder Link,
            wo ich das mit der Temp Variante mal verinnerlichen kann?

            Wie genau lautet dann das Skript für die temp Variante?

            Danke für deine Mühe.

            Gruß

            Heiko

          • #1297
            Klaus Major
            Administrator

              Hi Heiko,

              OK, here we go!

              1. Einlesen einer Datei in eine Custom Property:

              ...
              set the cPDFFile of this stack to URL("binfile:path/to/pdffile.pdf")
              ...
              ## Oder:
              answer file "PDF auswählen:" with type "PDF|pdf|"
              set the cPDFFile of this stack to URL("binfile:" & it)
              ...

              2. “Ausspucken” der Datei in den TEMP Ordner, die Datei kannst Du natürlich auch anders benennen:

              ...
              put specialfolderpath("temporary") & "/el_tempo.pdf" into tPDFPath
              put the cPDFFile of this stack into url("binfile:" & tPDFPath)
              launch document tPDFPath
              ...

              Bei weiteren Fragen, einfach fragen 🙂

              Gruß

              Klaus

            • #1299
              HeikoH
              Teilnehmer

                Danke Klaus, für die Turbo Antworten.

                im ersten und zweiten Kasten erläutere ich das mal mit meinen Worten:

                cPDFFILE mit dem Pfad wird dem Stack zugeordnet und wenn es gebraucht wird kommt es in den temp Ordner und wird mit launch aufgerufen.

                Die Datei wird von Pfad A zugeordnet und im temp Pfad mit launch gestartet.

                Ich will folgendes erreichen:
                Mein Nutzer klickt auf ein Button einer Card und bekommt eine PDF angezeigt. Nach dem Lesen klickt er auf einen weiteren Button und das PDF wird geschlossen. Das PDF Dokument soll aber nicht eingelesen werden, sondern fester Bestandteil meines Programmes sein.

                Bisher habe ich PDF Verarbeitung mit Livecode in zwei Varianten entdeckt.
                1. Deine
                2. PDF aus dem Programm heraus erstellen und anzeigen.

                Angenommen ich habe eine fertige Broschüre, ein Flyer und ein Brief in PDF Format und diese sollen per Button entsprechend angezeigt werden. Das muss doch gehen…

                Vielleicht denke ich zu kompliziert…..???

              • #1301
                hauke
                Administrator

                  Du könntest das PDF auch in eine Grafik umwandeln, zum Beispiel PNG, dann hast Du die geringsten Probleme. Wenn das PDF eh nur betrachtet werden soll und nicht als PDF gebraucht wird. Mit entsprechend guter Auflösung ist das dann gleichwertig.

                  Zum Anzeigen kannst Du ein PDF natürlich auch, statt es zu “launchen”, im Browser-Widget anzeigen. Das geht überall, außer bei Android.

                  Gruß

                  Hauke

                • #1303
                  HeikoH
                  Teilnehmer

                    Hi, Hauke,

                    hast du ein Beispiel Code Block oder Link wo ich das verständlich mit dem Browser Widget nachlesen kann?

                    Danke dir.

                  • #1305
                    Klaus Major
                    Administrator

                      Vielleicht denke ich zu kompliziert?

                      Vielleicht! 🙂

                      Ich weiß nicht, ob und wie Du mit Custom Properties vertraut bist, aber das ist ähnlich wie eine Variable, kann also Text und binäre Daten aufnehmen. Die ist in LC aber immer einem LC Objekt (Stack, Karte, jeglisches Control) zugeordnet und wird mit dem Stack gespeichert!

                      Sobald eine Datei oder was auch immer in einer CP liegt, ist diese Teil des Stacks, es wird sozusagen eine KOPIE der Datei im Stack abgelegt und NICHT der Pfad zur originalen Datei!

                      Mein erstes Codeschnipsel zeigt den Vorgang, wie man eine Datei im Stack abpseichert.
                      Mein zweiter Codeschnipsel zeigt Dir, wie man eine CP wieder als Datei auf der Platte speichert.

                      Du müsstest Deine PDFs in den Stack einlesen und bei Bedarf wieder auf Platte (im TEMP Ordner) speichern, wenn Du sie anzeigen möchtest. Du kannst die Datei im TEMP Ordner immer wieder mit Deinen anderen PDFs überschreiben, da ja offensichtlich immer nur eine Datei gleichzeitig angezeigt werden soll.

                      Nach dem Lesen klickt er auf einen weiteren Button und das PDF wird geschlossen.

                      Das wird etwas komplizierter, da “launch document xyz” ein externes Programm (Acrobat Reader o.ä.) aufruft, auf das wir in LC ohne weiteres keinen Einfluss haben!

                      Das PDF Dokument soll aber nicht eingelesen werden, sondern fester Bestandteil meines Programmes sein.

                      Die PDF Datei(en) SIND ja Teil des Stacks/Standalone, aber zum Anzeigen MUSS es auf der Platte (temporär) gespeichert werden. Vielleicht ändert sich das in kommenden Versionen von LC, aber im Moment ist das unumgäglich.

                      Gruß

                      Klaus

                    • #1307
                      HeikoH
                      Teilnehmer

                        AHHH – *KLICK,KLACK, JETZT JA EINE INSEL*

                        Bin gerade dabei LiveCode mit Haukes Buch zu lernen. Meine Basic Kenntnisse vom C64 sind da nicht
                        hilfreich… (nur ein bisschen). Aber ich glaube jetzt hab ich es kapiert. (Zumindest bis zum nächsten Fragezeichen)

                        Ich werde das mal testen….

                      • #1309
                        Klaus Major
                        Administrator

                          So geht es mit einem Browser Wiedget, das natürlich schon auf der Karte sein sollte.
                          Dann setzt Du die URL des Widgets zum Pfad der PDF Datei.

                          Wichtig: Für URLs müssen Leerzeichen mit %20 ersetzt werden!

                          ...
                          put specialfolderpath("temporary") & "/el_tempo.pdf" into tPDFPath
                          replace " " with "%20" in tPDFPath
                          set the url of widget "Dein Browser Widget hier..." to tPDFPath
                          ...
                      Ansicht von 9 Antwort-Themen
                      • Du musst angemeldet sein, um auf dieses Thema antworten zu können.