Aus dem Alltag: PDF Dateien Öffnen nicht trotz richtiger WebApp Einstellungen im Browser File Handling

Problem

Wie im letzten Beitrag gezeigt, gibt es eine Web Application Level Einstellung für die Problematik, dass PDF Dateien aus SharePoint 2010 nicht geöffnet werden können. Was aber tun, wenn trotz der richtigen Einstellungen im Browser File Handling immer noch die Meldung kommt, Sie sollen die PDF Datei speichern?

Ursache

Es deutet alles darauf hin, dass SharePoint irgendwo ein Setting hat, welches über das GUI nicht erreicht werden kann. Und genau so ist es. Es gibt ein Listpropperty, welches “BrwoserFileHandling” heisst. Dies kann ebenfalls Strict oder Permissive sein.

Lösung

Setzen Sie das Propperty mittels Powershell:

$web = Get-SpWeb(“http://YourWebSite”)
$list = $web.GetList(“http://YourWebSite/ListName”)
$list.BrowserFileHandling

Danach sehen Sie, ob die Einstellung “Strict” oder “Permissive” ist. Nun stellen Sie sicher, dass die Einstellung “Permissive” ist:

$list.browserfilehandling = “Permissive”
$list.update();

Jetzt sollte aus dieser Bibliothek die PDF Datei direkt öffnen.

Diese Einstellung müsste nun für alle Dokumentenbibliotheken gesetzt werden, wenn es nicht da Power Shell gäbe. Sie haben eine ganze SiteCollection die Sie umstellen wollen? Kein Problem, nutzen Sie diesen Code:

PowerShell
  1. $input = ReadHost „Bitte SiteCollection angeben“;
  2. $lib = ReadHost „Bitte DokLib Name eingeben (z.B. Dokumente):“;
  3. $site = GetSpsite(„$input“);
  4. foreach($web in $site.AllWebs)
  5. {
  6.   foreach($list in $web.lists)
  7.   {
  8.     if($list.title match „$Lib“)
  9.     {
  10.       if($list.browserfilehandling eq „Strict“)
  11.       {
  12.         $bfhold=$list.browserfilehandling;
  13.         $list.browserfilehandling = „Permissive“;
  14.         $list.update();
  15.         WriteHost $web.url, $list,$list.browserfilehandling
  16.       }
  17.     }
  18.   }
  19. }

und hier noch der “Oneliner” für die PS Commandline:

$input = Read-Host „Bitte SiteCollection angeben“;$lib = Read-Host „Bitte DokLib Name eingeben (z.B. Dokumente):“;$site = Get-SpSite(„$input“);foreach($web in $site.AllWebs) {foreach($list in $web.lists){if($list.title -match „$Lib“){if($list.browserfilehandling -eq „Strict“){$bfhold=$list.browserfilehandling;$list.browserfilehandling = „Permissive“;$list.update();Write-Host $web.url, $list,Alt: ,$bfhold, Neu: ,$list.browserfilehandling}}}}

So long, Samuel

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s