Ga naar inhoud
  • 0

Best practice scripting printer settings


Marsau

Vraag

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?

Link naar reactie

7 antwoorden op deze vraag

Aanbevolen berichten

  • 0

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.

Link naar reactie
  • 0

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.

 

 

Link naar reactie
  • 0

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

 

Link naar reactie
  • 0
Geplaatst: (aangepast)

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. 

aangepast door Marsau
Link naar reactie
  • 0
Geplaatst: (aangepast)

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.

aangepast door Marsau
Link naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...