Marsau Posted March 11 Posted March 11 Beste guru's, Wat is de beste wijze om dynamisch tot een printerkeuze/instelling te komen, zodat je deze per machine/job en wellicht zelfs gebruiker kan aansturen? Zijn we echt nog steeds aangewezen op dure plugin's? Ik kom niet verder dan per machine een eigen script vast te leggen; niet bepaald dynamisch dus. Any thoughts? Quote
0 andries Posted March 11 Posted March 11 nope... toch niet dat ik weet... ik doe het nog altijd met de eerste keer "vragen" (dus met dialoog), en dan als global instellen dat ik het heb bewaard en dan altijd daar printen. Maar dat gaat natuurlijk enkel goed als je telkens voor die gebruiker tijdens de sessie op dezelfde printer wil printen. Quote
0 bigbadwolf Posted March 12 Posted March 12 Printen blijft altijd een heikel punt met inregelen. Zelf gebruik ik (zoveel mogelijk) een basisscript. Dat moet je dan 1 keer inrichten, maar door middel van parameters kun je dan wel zoveel mogelijk sturen. Quote
0 Marsau Posted March 12 Author Posted March 12 Dank voor jullie reacties. Wat ik nu doe: - inderdaad één enkel centraal basisscript met een $printtype (labeltje, papierformaat) als parameter, volledig gericht op de print-opdracht. - dit script stuurt een subscript aan op naam: "print " & $printtype & " " & get ( persistentID) - het subscript moet dan bestaan, anders wordt een generieke printopdracht uitgevoerd met open dialogen. - het subscript stelt de Printer-instelling en voert vervolgens de eigenlijke printopdracht uit, als de persistentID ook klopt. Geen dialogen. Dit werkt op zich goed. Het nadeel is natuurlijk dat je voor elk werkstation waar specifieke printers zijn gewenst een apart script moet maken voor de prints. Je zou dit soort configuratie-dingetjes natuurlijk liever in de interface regelen. Quote
0 bigbadwolf Posted March 12 Posted March 12 Op zich denk ik dat je 1 script kan inrichten (kan een groot script worden). Ik probeer het in ieder geval zoveel mogelijk centraal te houden. En gebruik JSON parameters om de verschillende opties te verwerken. Dit is een voorbeeld van één van de versies die ik gebruik. Ik sleutel er nog regelmatig aan als ik weer tegen wat extra opties aanloop. # General | Print v2 in file Base (DFMO2) # ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- # Function : GENERAL PRINT/PDF COMMAND # Modified : 14-09-2023 # ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- // # ##### DO NOT RENAME THIS SCRIPT IT IS REFERENCED IN THE SCRIPTS TABLE BY SERIAL NO. XXX # ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- Allow User Abort [ On ] Set Error Capture [ On ] // Set Error Logging [ On ] # ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- # Notes: # ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- # ----- PARAMETER STRING # JSONSetElement ( "" ; [ "dialog" ; false ; 5 ] // OPTIONS: true / false ; [ "output" ; "print" ; 1 ] // OPTIONS: print / pdf ; [ "record" ; "current" ; 1 ] // OPTIONS: current / browsed ; [ "pdf.append" ; false ; 5 ] // OPTIONS: true / false ; [ "pdf.open" ; false ; 5 ] // OPTIONS: true / false ; [ "pdf.file" ; "filename" ; 1 ] // Complete filepath // PDF OPTIONS ; [ "pdf.option.title" ; "" ; 1 ] ; [ "pdf.option.subject" ; "" ; 1 ] ; [ "pdf.option.author" ; "" ; 1 ] ; [ "pdf.option.keywords" ; "" ; 1 ] ; [ "pdf.option.startpage" ; "" ; 2 ] ; [ "pdf.option.allpages" ; true ; 5 ] // OPTIONS: true / false ; [ "pdf.option.firstpage" ; "" ; 2 ] ; [ "pdf.option.lastpage" ; "" ; 2 ] ) // 14-09-2023 # ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- # ----- PARAMETER(S) # [record] : What are we printing? OPTIONS: current / browsed # [dialog] : Show dialog for selecting printer? OPTIONS: true / false # ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- // Perform Script [ Specified: From list ; “General | Print v2” ; Parameter: JSONSetElement ( "" ; [ "dialog" ; False ; 1 ] // OPTIONS: true / false ; [ "record" ; "current" ; 1 ] // OPTIONS: current / browsed ) // 14-12-2021 ] Set Variable [ $scriptparams ; Value: Get ( ScriptParameter ) ] # ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- # If [ JSONGetElement ( $scriptparams ; "record" ) = "current" ] If [ JSONGetElement ( $scriptparams ; "output" ) = "print" ] If [ JSONGetElement ( $scriptparams ; "dialog" ) ] Print [ Restore: HP OfficeJet Pro 7740 series ; With dialog: On ] Else Print [ Restore: HP OfficeJet Pro 7740 series ; With dialog: Off ] End If # Else If [ JSONGetElement ( $scriptparams ; "output" ) = "pdf" ] If [ JSONGetElement ( $scriptparams ; "dialog" ) ] If [ JSONGetElement ( $scriptparams ; "append" ) ] If [ JSONGetElement ( $scriptparams ; "open" ) ] Save Records as PDF [ Restore ; Append ; With dialog: On ; “$pdf” ; Automatically open ; Current record ; Create folders: On ] Else Save Records as PDF [ Restore ; Append ; With dialog: On ; “$pdf” ; Current record ; Create folders: On ] End If Else If [ JSONGetElement ( $scriptparams ; "open" ) ] Save Records as PDF [ Restore ; With dialog: On ; “$pdf” ; Automatically open ; Current record ; Create folders: On ] Else Save Records as PDF [ Restore ; With dialog: On ; “$pdf” ; Current record ; Create folders: On ] End If End If Else If [ JSONGetElement ( $scriptparams ; "append" ) ] If [ JSONGetElement ( $scriptparams ; "open" ) ] Save Records as PDF [ Restore ; Append ; With dialog: Off ; “$pdf” ; Automatically open ; Current record ; Create folders: On ] Else Save Records as PDF [ Restore ; Append ; With dialog: Off ; “$pdf” ; Current record ; Create folders: On ] End If Else If [ JSONGetElement ( $scriptparams ; "open" ) ] Save Records as PDF [ Restore ; With dialog: Off ; “$pdf” ; Automatically open ; Current record ; Create folders: On ] Else Save Records as PDF [ Restore ; With dialog: Off ; “$pdf” ; Current record ; Create folders: On ] End If End If End If End If # Else If [ JSONGetElement ( $scriptparams ; "record" ) = "browsed" ] If [ JSONGetElement ( $scriptparams ; "output" ) = "print" ] If [ JSONGetElement ( $scriptparams ; "dialog" ) ] Print [ Restore: HP OfficeJet Pro 7740 series ; With dialog: On ] Else Print [ Restore: HP OfficeJet Pro 7740 series ; With dialog: Off ] End If # Else If [ JSONGetElement ( $scriptparams ; "output" ) = "pdf" ] If [ JSONGetElement ( $scriptparams ; "dialog" ) ] If [ JSONGetElement ( $scriptparams ; "append" ) ] If [ JSONGetElement ( $scriptparams ; "open" ) ] Save Records as PDF [ Restore ; Append ; With dialog: On ; “$pdf” ; Automatically open ; Records being browsed ; Create folders: On ] Else Save Records as PDF [ Restore ; Append ; With dialog: On ; “$pdf” ; Records being browsed ; Create folders: On ] End If Else If [ JSONGetElement ( $scriptparams ; "open" ) ] Save Records as PDF [ Restore ; With dialog: On ; “$pdf” ; Automatically open ; Records being browsed ; Create folders: On ] Else Save Records as PDF [ Restore ; With dialog: On ; “$pdf” ; Records being browsed ; Create folders: On ] End If End If Else If [ JSONGetElement ( $scriptparams ; "append" ) ] If [ JSONGetElement ( $scriptparams ; "open" ) ] Save Records as PDF [ Restore ; Append ; With dialog: Off ; “$pdf” ; Automatically open ; Records being browsed ; Create folders: On ] Else Save Records as PDF [ Restore ; Append ; With dialog: Off ; “$pdf” ; Records being browsed ; Create folders: On ] End If Else If [ JSONGetElement ( $scriptparams ; "open" ) ] Save Records as PDF [ Restore ; With dialog: Off ; “$pdf” ; Automatically open ; Records being browsed ; Create folders: On ] Else Save Records as PDF [ Restore ; With dialog: Off ; “$pdf” ; Records being browsed ; Create folders: On ] End If End If End If End If # End If # # ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- // Set Error Logging [ Off ] # ----- HISTORY of CHANGES ---- # 04-11-2015 Initial script # 14-12-2021 Rebuild to JSON parameters # Changed default printer # 14-09-2023 Added pdf option Quote
0 Marsau Posted March 13 Author Posted March 13 (edited) Ha, leuk om te zien, dank je wel. Vind het steeds een fascinerende vraag: hoe organiseer je de logica binnen een applicatie? Het is prachtig om voor een bepaald stuk functionaliteit een generieke, herbruikbare module te bouwen met gedetailleerde (json) parameterisering. De voordelen zijn duidelijk. Tegelijk is er ergens een omslagpunt: dat je beter wat kunt opsplitsen om meer complexe routines snel neer te zetten, of dat je bepaalde logica gewoon elders moet neerleggen, omdat het dan beter aansluit op andere zaken. Ik geef hier toch de voorkeur aan aparte sub-scriptjes, omdat de print-instellingen in de scriptstappen worden opgeslagen. Eén keer de verkeerde openen op een bepaalde machine, en je moet terug naar het betreffende werkstation om te herstellen.. Het is toch wel stom dat we dit niet dynamisch kunnen scripten. In serieuze productieomgevingen met meerdere labelwriters en printers heb je dit gewoon nodig. Volgens mij is er t.a.v. deze scriptstappen sinds begin jaren 90 helemaal niets veranderd. Edited March 13 by Marsau Quote
0 MarcAlmelo Posted March 18 Posted March 18 Als je handig bent met API's is het ook wel interessant om gebruik te maken van software als https://www.printnode.com/en hiermee worden ook computers apart opgeslagen en de daaronder liggende printers en papierformaten. Quote
0 Marsau Posted March 19 Author Posted March 19 (edited) Inderdaad interessant, en wellicht ook precies een oplossing voor dit probleem. Maar vind het toch weinig aanlokkelijk. Maar toch: in FileMaker hebben we alle bouwstenen om dit zelf te bouwen, op dit laatste stukje na. Edited March 19 by Marsau Quote
Question
Marsau
Beste guru's,
Wat is de beste wijze om dynamisch tot een printerkeuze/instelling te komen, zodat je deze per machine/job en wellicht zelfs gebruiker kan aansturen?
Zijn we echt nog steeds aangewezen op dure plugin's?
Ik kom niet verder dan per machine een eigen script vast te leggen; niet bepaald dynamisch dus.
Any thoughts?
7 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.