Luca Annuiti

il mio Blog personale su Virtualizzazione, SharePoint, Programmazione e ...

Indicizzare il contenuto di file PDF in SharePoint Foundation 2010

Il contenuto di file PDF non viene indicizzato da SharePoint; è possibile aggiungere tale funzionalità con pochi forzi e qualche piccola operazione manuale.

Ecco i passaggi da seguire :

  1. Installare il PDF iFilter 9.0 (versione a 64 bit) disponibile a questo link : 
    http://www.adobe.com/support/downloads/detail.jsp?ftpID=4025
  2. Scaricare il file immagine dell'icona PDF in formato 16x16 pixel da http://www.adobe.com/misc/linking.html e salvarla in C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\IMAGES\;
  3. aggiungere il riferimento alla nuova icona nel file docIcom.xml che si trova in C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\XML inserendo la riga:
    <Mapping Key="pdf" Value="miaicona.ext" /> avendo cura di cambiare il nome miaicona.ext con l'effettivo nome del file salvato nel passaggio precedente
  4. Creare sul server SharePoint un file VBS nominandolo AddExtension.vbs con il seguente contenuto:

    Sub Usage

        WScript.Echo "Usage:    AddExtension.vbs extension"

        WScript.Echo

    end Sub

     

    Sub Main

        if WScript.Arguments.Count < 1 then

                    Usage

                    wscript.Quit(1)

       end if

        dim extension

        extension = wscript.arguments(0)

        Set gadmin = WScript.CreateObject("SPSearch4.GatherMgr.1", "")

        For Each application in gadmin.GatherApplications

            For Each project in application.GatherProjects

                        project.Gather.Extensions.Add(extension)

                    Next

        Next

    End Sub

    call Main

  5. Lanciare il file VBS dal prompt dei comandi :
    WScript AddExtension.vbs pdf
  6. Modificare il Registro di Sistema per associare il PDF iFilter:
    trovare la chiave "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\14.0\Search\Setup\ContentIndexCommon\Filters\Extension\" ,
    cliccare col tasto destro e selezionare Nuovo->Chiave inserendo ".pdf" come nome ,
    cliccare col tasto destro, nella sezione di destra, sulla voce Predefinito della chiave appena creata e selezionare Modifica ,
    aggiungere il valore "{E8978DA6-047F-4E3D-9C78-CDBE46041603}"
  7. Riavviare il servizio SharePoint Foundation Search V4 
  8. Eseguire una reindicizzazione completa tramite il seguente comando :
    stsadm -o spsearch -action fullcrawlstart 

Aprire i file PDF contenuti in SharePoint 2010 direttamente nel browser

In SharePoint 2010 un file PDF non può essere aperto all’interno del browser e viene richiesto, al momento del click, di salvarlo, obbligandoci quindi ad un ulteriore passaggio per visualizzarne il contenuto; questo in quanto i file con PDF non sono considerati "sicuri" da SharePoint.

Questo comportamento è da attribuire ad un nuovo Security Header che è gestito dal browser (in particolare da IE8 in poi) e che permette di aprire nel browser solo alcuni MIME Types riconosciuti come "sicuri".

Sarebbe possibile “disabilitare” questo controllo a livello di Web Application, permettendo così a tutti i tipi di file di essere aperti via browser, ma a livello di sicurezza è meglio aggiungere il tipo "PDF" nell'elenco dei MIME Types "autorizzati" utilizzando questi comandi PowerShell :

$webapp = Get-SPWebApplication http://MyWebappURL
$webapp.AllowedInlineDownloadedMimeTypes.Add(“application/pdf”)
$webapp.Update()
iisreset

Ovviamente lo stesso procedimento può essere utilizzato anche per altri tipi di file.

Nel caso sia necessario rimuovere un tipo di file dall'elenco questo è il comando da utilizzare : 

$webApp.AllowedInlineDownloadedMimeTypes.Remove("application/pdf")

Aggiungere colonne personalizzate (meta dati) alle cartelle di SharePoint Foundation

In SharePoint foundation non è possibile modificare il Tipo di contenuto predefinito "Cartella" per poterci aggiungere delle colonne personalizzate in quanto lo stesso risulta bloccato.

Il modo migliore per "aggirare" questa limitazione è quello di creare un tipo di contenuto personalizzato basato sul tipo "Cartella", al quale potremo poi aggiungere tutte le colonne personalizzate che ci servono.

Ecco come fare :

Prosegue...

Aggiungere stili personalizzati al ribbon in un sito di pubblicazione di SharePoint 2010

Ecco come aggiungere degli stili personalizzati al pulsante "Stili" del ribbon per la formattazione dei testi :

  • Creare nella "Raccolta stili" un nuovo foglio di stile che andrà incluso nella masterpage
  • Aggiungere per ogni stile che vogliamo creare un tag che dovrà avere necessariamente il presiffo  ms-rteStyle- , ad esempio :
    .ms-rteStyle-MioStile

      -ms-name:"Questo è il titolo"; 
      color:#CC0000; 
      font-size:14px;
     

A questo punto, dopo aver archiviato e pubblicato il nuovo foglio di stile e la master page modificata, quando andremo a modificare i nostri contenuto avremo a disposizione i nuovi stili :

Aggiungere e modificare Colonne del sito in SharePoint utilizzando PowerShell

Questi utili comandi PowerShell ci permettono di aggiungere e modificare Colonne del sito in SharePoint.

Aggiungere un nuovo campo speficando le proprietà in formato XML ( definizione dello schema XML disponibile all'indirizzo http://msdn.microsoft.com/en-us/library/ms437580.aspx ) :

$site = Get-SPSite -Identity "http://mywebapplication/"
$web = $site.RootWeb 

$fieldXML = '<Field Type="Text"
Name="CustomSiteColumn"
Description="This is a my Site Column."
DisplayName="my Site Column"
Group="my Site Column"
Hidden="FALSE"
Required="FALSE"
ShowInDisplayForm="TRUE"
ShowInEditForm="TRUE"
ShowInListSettings="TRUE"
ShowInNewForm="TRUE"></Field>' 

$web.Fields.AddFieldAsXml($fieldXML)
$web.Dispose()
$site.Dispose()

Aggiungere un nuovo campo specificando solo nome e tipo :

$site = Get-SPSite -Identity "http://mywebapplication/"
$web = $site.RootWeb 
$web.Fields.Add("CustomSiteColumn",[Microsoft.SharePoint.SPFieldType]::Text,$true)
$web.Dispose()
$site.Dispose()

Modificare le proprietà di un campo ( fare sempre riferimento allo schema XML disponibile all'indirizzo http://msdn.microsoft.com/en-us/library/ms437580.aspx in quanto alcune delle proprietà non sono modificabili ) :

$site = Get-SPSite -Identity "http://mywebapplication/"
$web = $site.RootWeb 
$field=$web.Fields["my Site Column"]
$field.Type= "Choice"
$field.Update($true)
$web.Dispose()
$site.Dispose()

Riporto inoltre questo script che ci permette di esportare in formato XML tutte le Colonne del nostro sito :

$sourceWeb = Get-SPWeb http://mywebapplication
$xmlFilePath = "C:\SharePoint\my-SiteColumns.xml"

#Create Export Files
New-Item $xmlFilePath -type file -force

#Export Site Columns to XML file
Add-Content $xmlFilePath ""
Add-Content $xmlFilePath "`n"
$sourceWeb.Fields | ForEach-Object {
   if ($_.Group -eq "Custom Columns") {
       Add-Content $xmlFilePath $_.SchemaXml
   }
}
Add-Content $xmlFilePath ""

$sourceWeb.Dispose()