Už leta se vztekám s domácí tiskárnou, která některé dokumenty ořízne třeba v půlce posledního řádku, a vůbec mi vadí, že všude tlačí formát papíru Letter, když přece v ČR používáme A4. No jo, Hewlett-Packard, říkal jsem si, Amíci se vykašlali na pořádnou lokalizaci svého produktu, #fail #fail #fail.
Až jsem zjistil, že cca od roku 2010 všechny dokumenty ve Wordu zakládám na šabloně, která skutečně Letter používá. No jo, jsem fakt kardinální vůl.
Šablonu jsem tedy opravil a říkal jsem si, že by bylo dobré opravit i starší dokumenty, protože občas nějaký tisknu a vztekal bych se znovu a znovu. Dal jsem tomu tedy chvíli času a výsledkem je PowerShell skript, který je tak roztomile krátký, že se o něj musím podělit:
param( [parameter(position=0)] [string] $Path ) $docFiles = (Get-ChildItem $Path -Include *.docx,*.doc -Recurse) $word = New-Object -com Word.Application foreach ($docFile in $docFiles) { $doc = $word.Documents.Open($docFile.FullName) $doc.PageSetup.PaperSize = [Microsoft.Office.Interop.Word.WdPaperSize]::wdPaperA4 $doc.Save() $doc.Close() } $word.Quit()
Možná se někomu bude hodit přesně tohle, ale hlavně si všimněte, co všechno a na jak málo řádcích se dá s PowerShellem udělat. Mám tu věcičku rád.
PowerShell je skutečně krásná věcička!
PS: HP většinou instaluje ovladače dle jazyka systému a dle tohoto volí i nejen jazyk, kterým komunikuje, ale i mění výchozí systémový formát stránky pro tisk. Takže na anglických Windows se formát změní na Letter a na českých na A4. Řešením je dočasně přepnout jazyk systému při instalaci ovladačů.
Dobrý tip, snad si ho do příště zapamatuju :)
Pěkný skript, ale jak se k němu dojde? Je někde nějaká dokumentace?
Mohl by to někdo z druhé strany barikády porovnat s AppleScriptem? Mám totiž dojem, že tam to je pořešené nějak víc systémově a ovládat jde každá aplikace, zatímco v MS světě jen ty, které s tím předem počítají (tj. typicky jen MS produkty)
Dobrá poznámka a trochu záměrně jsem publikoval až výsledný skript, který je elegantní, na rozdíl od procesu jeho tvorby :) Ohledně dokumentace existují dvě zprávy, jedna dobrá – je to na MSDN, a jedna špatná – je to na MSDN. Takže se člověk musí prodírat něčím takovým, ale v kombinaci se Stack Overflow se to dá.
Příklad ze světa Apple by mě taky zajímal, protože je pravda, že na Windowsech se dělá podpora per-app. Většina věcí od MS skriptovatelných je, většina ostatních věcí není (nebo aspoň ne nijak přímočaře).