Jump to content
  • 0

Printbeperkingen in scripts


Frank ter Braak

Question

Posted

Wat ik nog steeds niet goed snap is hoe ik in een script kan bepalen hoe er geprint wordt.

 

Er is natuurlijk de scriptstap "Page Setup" waarmee je deze instellingen kunt herstellen.

Maar alle keuzes die je in je print dialoog venster krijgt kan ik niet of maar deels (?) vastleggen.

 

Bv. kan ik in een script vastleggen:

 

-- op welke printer ik print

-- of ik er 1, 2 of 100 prints maak

-- welke pagina's ik print bv pag 2 t/m 4

-- of ik via "lay out" kan kiezen of ik meer pagina's verkleint op een A4 kan printen

-- of ik het huidige record print of de hele reeks

-- of ik naar een pdf bestand print

 

 

Als ik bv een lijst van tweedehands fietsen uitdraai zal daarna als ik één bon probeer te printen alle gevonden bonnen geprint. Oeps papier op!!!

 

Het verkleint printen kan je ook in een layout doen met meerdere kolommen per pagina maar dat daat niet even mooi want dan print hij alle records op een stramien terwijl er sommige records meer herhalende velden bevat dan andere. Het verschuiven van lege delen werkt dan niet meer goed.

 

Aantallen die ik print zou ik in een script met loops kunnen maken maar kan dat niet makkelijker op de manier zoals je de "page setup" kan herstellen in één scriptstap.

 

Werken de scriptstappen gelijk vanaf elke computer op het netwerk?

Ik gebruik Filemaker 5.5 op OSX 8.6 en Filemaker 6 op OSX.

 

 

Bij voorbaad dank voor het meedenken.

 

Frank ter Braak

6 answers to this question

Recommended Posts

  • 0
Posted

Standaard heb je in FileMaker niet alle mogellijkheden die je wenst. Je zal dus via een plugin of third party-software moeten gaan (AppleScript, WinBatch en dergelijke).

  • 0
Posted
Wat ik nog steeds niet goed snap is hoe ik in een script kan bepalen hoe er geprint wordt.

Je "Page Setup" instructie legt zowel een aantal parameters vast van je Pagina Opmaak dialoog en je print dialoog. De manier om die parameters vast te leggen is het "voordoen". Je stelt dus de goeie pagina opmaak in, print met de goeie parameters en gaat vervolgens je scriptstap toevoegen of aanpassen (vervang optie bij bevestiging script). Een aantal parameters kan FileMaker onthouden, zoals A4 of Letter, staand of liggend, pagina van-tot, velddefinities of scripts of selectie van records of 1 record, papierbak...

Niet alle PRINTER DRIVERS geven deze informatie correct door, waardoor de vastgelegde parameters beperkt kunnen zijn.

 

Er is natuurlijk de scriptstap "Page Setup" waarmee je deze instellingen kunt herstellen.

Maar alle keuzes die je in je print dialoog venster krijgt kan ik niet of maar deels (?) vastleggen.

Klopt, en dat hangt van je printer driver af. De best ondersteunde drivers zijn die van Apple zelf, en de LaserWriter (en de vroegere ImageWriter driver) zijn het best ondersteund, hoewel er over de versies heen van de LaserWriter driver wel wat toestanden geweest zijn. Apple veranderde een paar jaar geleden (onder MacOS Classic dus nog) onaangekondigd een aantal toolbox parameters waardoor FileMaker niet goed de pagina opmaak kon doorsturen naar de nieuwere versie van hun printer driver.

 

Bv. kan ik in een script vastleggen:

 

-- op welke printer ik print

Kan je niet via jet Page Setup commando. Maar op Mac (OS X) gelukkig nu wel met dit stukje AppleScript code:

 

tell application "Print Center"
 set printerlist to name of printers
 set oldprinter to name of current printer
 set printerchoice to (choose from list printerlist with prompt ¬
   "Which printer to be default?" default items oldprinter)
 set myprinter to printer (printerchoice as string)
 set current printer to myprinter
end tell

 

-- of ik er 1, 2 of 100 prints maak

-- welke pagina's ik print bv pag 2 t/m 4

-- of ik het huidige record print of de hele reeks

ja en ja

 

-- of ik via "lay out" kan kiezen of ik meer pagina's verkleint op een A4 kan printen

nee

 

-- of ik naar een pdf bestand print

Nee maar je kan dit op MacOS 9 verkrijgen door Print2PDF (freeware) - voor MacOS X is er een standaard knop, maar die kan niet scriptmatig aangestuurd worden. Er is ook de commerciele oplossing Acrobat PDF Writer en Distiller. Verder is Murtje (op dit forum te vinden) op de goeie weg met een XML-XSLT oplossing die PDFs genereert door een export instructie te geven vanuit FileMaker.

 

Als ik bv een lijst van tweedehands fietsen uitdraai zal daarna als ik één bon probeer te printen alle gevonden bonnen geprint. Oeps papier op!!!

Steek maximum 1 "page setup" instructie in een script, want je kan er maar 1 vastleggen. Deductie: maak subscripts waar je maar 1 instructie hebt staan, namelijk de "page setup" instructie, en geeft deze beschrijvende namen, zoals "P01.Page Setup A4 landscape selection" en "P02.Page Setup A4 portrait 1 record"... en roep deze scripts altijd als subscripts op vanuit je scripts. Voordeel: als je ooit een andere printer gebruikt moet je alleen deze scripts aanpassen.

 

Aantallen die ik print zou ik in een script met loops kunnen maken maar kan dat niet makkelijker op de manier zoals je de "page setup" kan herstellen in één scriptstap.

De logica die FileMaker hier hanteert, dateert van toen de dieren nog spraken, en de computers nog niet. Van voor dat ScriptMaker bestond, en je in FileMaker alleen die 5 dingen kon vastleggen in een "script": pagina opmaak, zoekopdracht, sorteervolgorde, print al of niet, en layoutkeuze (misschien ben ik wat vergeten, het is nogal lang geleden). De hele problematiek zou opgelost zijn als FileMaker deze commando's eens HELEMAAL herzag. Hou je adem niet in, FileMaker is nogal conservatief op dat gebied.

 

Werken de scriptstappen gelijk vanaf elke computer op het netwerk?

Ik gebruik Filemaker 5.5 op OSX 8.6 en Filemaker 6 op OSX.

Die computers op het netwerk is het probleem niet, eerder je verschillende OS versies - en bijhorende printer driver versies. Moet je toch cross-platform een FileMaker print oplossing voorzien, en wil je het echt perfect doen, maak dan een reeks van (bovengenoemde) print subroutines en doe het volgende:

if status(currentPlatform) = 1    -- MacOS Classic
perform subscript "P01.page setup OS 9"
end if
if status(currentPlatform) = -1    -- MacOS X
perform subscript "P01.page setup OS X"
end if
if status(currentPlatform) = 2    -- Windows
perform subscript "P01.page setup Windows"
end if
print

  • 0
Posted

zo'n lang verhaal, en toch wil ik daar nog iets aan toevoegen.

Misschien is dit wel onbeleefd :?

 

Al de settings die je in een script bewaard, wordt door FileMaker bijgehouden voor 2 verschillende platforms.

Dus je doet je hele ding op een Mac, en doet daarna nog eens hetzelfde op een PC, met datzelfde bestand dus.

FileMaker houdt die 2 settings gescheiden bij en roept ze aan volgens het platform waarop je werkt. Dus gescheiden scripts voor de 2 platformen is niet echt nodig, maar wel een stuk duidelijker in de scripts. ('k zal het zelf maar al zeggen, voor iemand anders er mee komt :-)

  • 0
Posted

Geweldig zo'n uitgebreid antwoord. Het geeft mij weer hoop want er kan kennelijk toch meer dan ik dacht. Dit alles is toch slecht gedocumenteerd, je wordt geacht veel zelf uit te proberen en uit te zoeken.

 

Waarschijnlijk dacht ik dat het allemaal niet mogelijk was door de div OS'en en printerdrivers. Door de onregelmatige resultaten zag ik er geen regelmaat in.

 

Ik kan met jullie aanwijzingen aan de slag maar ik ga ook opzoek naar een vervanging van de Mac met OS 8.6. Dan heb ik tenminste 3 Mac's met het zelfde OS en Driver.

 

Frank ter Braak

  • 0
Posted
tell application "Print Center"

  set printerlist to name of printers

  set oldprinter to name of current printer

  set printerchoice to (choose from list printerlist with prompt ¬

    "Which printer to be default?" default items oldprinter)

  set myprinter to printer (printerchoice as string)

  set current printer to myprinter

end tell

 

Hoe gebruik ik dit stukje code in een printscript?

Ik snap wel hoe ik het in een script plaats maar het vraagt mij op welke printer ik print.

Liever maak ik een script die altijd -dus zonder mijn tussenkomst- op de Laserwriter print en een andere die altijd op de Inktjet print?

 

Frank ter Braak

  • 0
Posted

Dag Frank,

Ben wat later met een antwoord, was een weekje gaan snowboarden...:)

 

Je kan best even eerst de event log window aanzetten in je script editor (ik geloof dat die op een NL systeem script maker heeft).

Als ik die bij mij openzet, en dan het AppleScriptje draai, dan ziet het er zo uit:

428-1.gif

Mijn printer heet dus "10.42.42.101" en het commando "set current printer to printer "10.42.42.201" werkt dus voor mij. Je zal zelf eens moeten kijken hoe dat voor jou is.

 

Verder heb je een "Perform AppleScript" script stap in FileMaker. Die kan je gewoon gebruiken. Ikzelf run het stukje code eerst even vanuit Script Editor om te testen of het goed werkt, en dan kopieer en plak ik het in mijn script stap, want de editor die in FileMaker zit is nogal summier.

 

Verder kan je best na zo'n AppleScript script stap even een Pagina Opmaak subscript oproepen, zodat FileMaker ook helemaal doorheeft dat er van printer gewisseld is op operating systeem niveau.

 

Succes.

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