Drucken aus einer App

Startseite Foren Deutsches LiveCode-Forum Drucken aus einer App

Ansicht von 20 Antwort-Themen
  • Autor
    Beiträge
    • #46594
      sardus
      Teilnehmer

      Guten Morgen

      Ich bin an einer iOS-App für das iPad im Querformat (1024 x 768 px). Nun möchte ich gerne, dass man aus der App auch Arbeitsblätter im Hochformat A4 generieren und ausdrucken kann. Kann ich den Ausdruck auf einem unsichtbaren Substack mit der Grösse 595 x 842 px bereitstellen und anschliessend via Hauptstack zum Drucken aufrufen?

      Besten Dank

    • #46596
      Klaus Major
      Verwalter

      Yep. 🙂

    • #46597
      sardus
      Teilnehmer

      Besten Dank Klaus!

      Ist das ohne Weiters iOS-tauglich oder muss ich da noch etwas speziell beachten?

    • #46598
      Klaus Major
      Verwalter

      „print“ ist auf allen Platforme verfügbar, also sehe ich nichts,
      was dagegen sprechen würde.

    • #46605
      sardus
      Teilnehmer

      Super, herzlichen Dank!

    • #47098
      sardus
      Teilnehmer

      Ich kriege das mit dem Ausdruck via App einfach nicht hin. Vielleicht hat jemand einen Tipp?

      Meine App besteht aus dem Mainstack „App“ (1024 x 768 px). In diesem Stack läuft die eigentliche App. Nun habe einen unsichtbaren Substack „Ausdruck“ (Dimensionen A4) mit der Card „Layout“. Darin werden die Daten für den Ausdruck angeordnet.

      Nun möchte ich, dass man mit einem einfachen Klick auf einen Button im Mainstack der Druckauftrag des Substacks „Ausdruck“ ausgelöst wird. Leider funktioniert das nicht. Es wird auf dem iPad kein Druckdialog aufgerufen.

      Im Hauptstack habe ich geschrieben:

      on openStack
         
         start using stack "Ausdruck"
      
      end openStack

      Das Buttonskript lautet:

      on mouseup
         
         set the printPaperSize to 595,842
         set the printPaperOrientation to "portrait"
         
         open printing with dialog
         if the result is not "Cancel" then
            print card "Layout" of stack "Ausdruck" into 0,0,595,842
            close printing
         end if
         
      end mouseup

      Hat jemand eine Idee? Besten Dank!

    • #47099
      Klaus Major
      Verwalter

      „open printing…“ wird nur auf dem Desktop unterstützt!
      Also mal weglassen und erneut probieren:

      ...
      set the printPaperSize to 595,842
      set the printPaperOrientation to "portrait"
      print card "Layout" of stack "Ausdruck" into 0,0,595,842
      ...
    • #47101
      sardus
      Teilnehmer

      Danke Klaus für deine schnelle Antwort. Leider bringt das auch keine Besserung. Auf dem Macbook läuft alles wie gewünscht. Auf dem iPad funktioniert es leider nicht.

      Ich habe auch auch unterschiedliche iOS-Versionen sowie im Simulator getestet – ebenfalls erfolglos.

    • #47102
      sardus
      Teilnehmer

      Ich habe noch gemerkt, dass die Daten auf der Card „Layout“ im Substack „Ausdruck“ auf dem Macbook nur gedruckt werden, wenn dieser auch wirklich geöffnet wurde.

      Der folgende Code im Mainstack reicht nicht:

      on openStack
         
         start using stack "Ausdruck"
      
      end openStack
    • #47104
      Klaus Major
      Verwalter

      Hi sardus,

      mit „start using stack xyz“ wird nämlicher Stack nur in die Message Hierarchie aufgenommen, also um seine SKRIPTE nutzen zu können. Mit DRUCKEN hat das nichts zu tun.

      Du könntest:

      ...
      go invisible stack "Ausdruck"
      print card "Layout" of stack "Ausdruck" into 0,0,595,842
      ...

      Gruß

      Klaus

    • #47108
      sardus
      Teilnehmer

      Danke Klaus! Ich habe ein bisschen gegoogelt und gemerkt, dass das Drucken via iOS recht umständlich ist. Anscheinend muss ich zuerst ein PDF generieren. Dieses kann anschliessend via „rreHardcopyPrintPDF“ grdruckt werden:

      on mouseUp
         
         -- PDF-Dokument erstellen
         local tPDFFile   
         put specialFolderPath("documents") & "/Arbeitsblatt.pdf" into tPDFFile
         delete file tPDFFile
         open printing to pdf tPDFFile
         
         set the printMargins to 0,0,0,0
         print this card into 0,0,595,842
         
         close printing
         rreHardcopyPrintPDF tPDFFile, "PDF Print"
      
      end mouseUp

      Leider funktioniert nur das Drucken der aktuellen Card. Sobald ich den Substack drucken möchte, passiert nichts …

      print card "Layout" of stack "Ausdruck" into 0,0,595,842

    • #47109
      Klaus Major
      Verwalter

      Leider habe ich kaum Erfahrung mit iOS, speziell drucken.
      Daher kann ich leider auch keinen heissen Tip geben.

    • #47110
      sardus
      Teilnehmer

      Trotzdem vielen Dank Klaus!

      Ich habe nun eine Alternativlösung gefunden. Ich lasse den Substack weg und löse den Ausdruck über eine zusätzliche unsichtbare Card „Ausdruck“. Auf dieser ordne ich alle Objekte an. Beim Generieren der PDF-Datei „blase“ ich einfach einen Bereich der Card auf A4 auf:

      print card "Ausdruck" of stack "App" from 0,0 to 543,768 into 0,0,595,842

      So kann ich auch Arbeitsblätter im Hochfromat A4 drucken, obwohl die App im Landscape-Modus läuft. Die Lösung mit dem Substack wäre natürlich etwas eleganter gewesen.

    • #47124
      sardus
      Teilnehmer

      Hallo zusammen

      Vielleicht kann mir jemand nochmals auf die Sprünge helfen. Der Ausdruck funktioniert soweit gut. Nun möchte ich aber vor dem Ausdruck noch einen QR-Code mit Daten zum Arbeitsblatt generieren und anzeigen. Leider funktioniert das nicht. Könnte das mit der Reihenfolge zu tun haben oder muss ich die beiden Vorgänge separat handhaben?

      on mouseUp
         
         -- Lösung generieren
         put "Lösung 1" into Loesungen
         put textEncode(Loesungen, "UTF-8") into Loesungen
         
         -- QR-Code generieren
         qrCreate "!", Loesungen, "L", 3
         put the result into QRDaten
         delete line 1 of QRDaten
         put QRDaten into image "QRCode" of card "Vorlage" of stack "App"
         set the height image "QRCode" of card "Vorlage" of stack "App" to 60
         set the width image "QRCode" of card "Vorlage" of stack "App" to 60
         
         -- PDF-Dokument erstellen
         local tPDFFile   
         put specialFolderPath("Documents") & slash & "Arbeitsblatt.pdf" into tPDFFile
         delete file tPDFFile
         open printing to pdf tPDFFile
         
         set the printMargins to 0,0,0,0
         set the printPaperSize to 595,842
         set the printPaperOrientation to "portrait"
         
         --print this card into 0,0,595,842
         print card "Vorlage" of stack "Zeiten" from 0,0 to 543,768 into 0,0,595,842
         
         close printing
         rreHardcopyPrintPDF tPDFFile, "Test PDF Print"
         --answer "PrintPDF returned" && the result
         
      end mouseUp

      Ohne den Teil mit dem QR-Code funktioniert alles wunderbar. Was mache ich falsch?

    • #47132
      Klaus Major
      Verwalter

      Hm, ich habe das mal eben simuliert mit diesem Skript und hatte keine Probleme!?
      Stack „s2“ war allerdings geöffnet, falls das eine Rolle spielen sollte.

      Ich würde allerdings erst prüfen, ob die PDF vorhanden ist, bevor ich sie lösche,
      sonst bleibt das Skript in einer Runtime einfach an der Stelle stehen und wir wundern uns. 🙂

      on mouseUp pMouseButton
         put "Lösung 1" into Loesungen
         put textEncode(Loesungen, "UTF-8") into Loesungen
         
         -- QR-Code generieren
         qrCreate "!", Loesungen, "L", 3
         put the result into QRDaten
         delete line 1 of QRDaten
         put QRDaten into image "qr" of card 1 of stack "s2"
         set the height image "qr" of card 1 of stack "s2" to 60
         set the width image "qr" of card 1 of stack "s2" to 60
         
         -- PDF-Dokument erstellen
         put specialFolderPath("desktop") & "/Arbeitsblatt.pdf" into tPDFFile
         ## !!!
         if there is a file tPDFFile then
            delete file tPDFFile
         end if
         open printing to pdf tPDFFile
         
         set the printMargins to 0,0,0,0
         set the printPaperSize to 595,842
         set the printPaperOrientation to "portrait"
         
         --print this card into 0,0,595,842
         print card 1 of stack "s2" from 0,0 to 543,768 into 0,0,595,842
         close printing
      end mouseUp
    • #47133
      Klaus Major
      Verwalter

      Da ich weder Drucker noch iPhone besitze, kann ich das nur auf dem Desktop testen.
      Ein paar Fragen ins Blaue…
      1. Hast Du überprüft, ob Dein Handy drucken kann mit: rreHardcopyIsAvailable()
      2. Was genau funtioniert nicht?
      Ob die PDF erstellt wurde, ist ja leicht zu prüfen -> files(specialfolderpath(„documents“))
      Wir müssen das Problem genau lokalisieren, um es beseitigen zu können.

      Hinweis:
      iOS ist wie Android case-sensitive, daher solltest Du:
      specialfolderpath(„documents“) (mit kleinem D) schreiben!

    • #47175
      sardus
      Teilnehmer

      Klaus, besten Dank für deine Rückmeldung!

      Das Problem liegt irgendwie beim Generieren des QR-Codes. Wenn ich den Code dort ausblende, funktioniert es. Ich muss da wohl nochmals über die Bücher …

      Gibt es eine Möglichkeit, dass die Card mit dem Daten für den Ausdruck nicht angezeigt wird – also invisible ist. Aktuell wird die Card kurz aufgerufen und verschwindet wieder, sobald das Menu für den Druck erscheint.

      Besten Dank!

    • #47178
      Klaus Major
      Verwalter
      ...
      go invisible stack "Ausdruck"
      ## Druck Dein Ding
      ## ...
      close stack "Ausdruck"
      ...

      Sollte hinhauen…

    • #47205
      sardus
      Teilnehmer

      Hallo Klaus

      Besten Dank für deine Hilfe. Ich habe nun endlich den Fehler gefunden. Ich hatte in den „Inclusions“ nicht alle benötigten Erweiterungen ausgewählt … Sorry, das war mein Anfängerfehler …

    • #47206
      Klaus Major
      Verwalter

      Ente gut, alles gut! 🙂

    • #47425
      sardus
      Teilnehmer

      Hallo zusammen

      Kennt jemand einen weg, um Bilder (z. B. SVG), welche sich auf einer Card befinden, in guter Qualität zu drucken (via Umweg über ein PDF)?

      Auf dem ausgedruckten Blatt sehe die Bilder leider sehr unscharf aus …

      Danke!

Ansicht von 20 Antwort-Themen
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.