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
        Administrator

          Yep. 🙂

        • #46597
          sardus
          Teilnehmer

            Besten Dank Klaus!

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

          • #46598
            Klaus Major
            Administrator

              „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
                  Administrator

                    „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
                        Administrator

                          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
                            Administrator

                              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
                                  Administrator

                                    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
                                    Administrator

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

                                              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.