Síla PowerShellu na příkladu – převod Letter na A4

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.

4 thoughts on “Síla PowerShellu na příkladu – převod Letter na A4
  1. 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čů.

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

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

Leave a Reply

Your email address will not be published. Required fields are marked *

Mete pouvat Markdown: **Tun**, *kurzva*, `kd` atd.