Jump to content
  • 0

Best practice scripting printer settings


Marsau

Question

Posted

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

  • 0
Posted

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.

  • 0
Posted

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.

  • 0
Posted

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.

 

 

  • 0
Posted

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

 

  • 0
Posted (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 by Marsau
  • 0
Posted (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 by Marsau

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...