Sunday, October 9, 2011

SharePoint 2010 PDF Configuration

SharePoint 2010 Standard/Enterprise

  1. Install PDF iFilter 9.0 (64 bit) from
  2. Download PDF icon picture from Adobe web site and copy to C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\IMAGES\ 
  3. Add the following entry in docIcon.xml file, which can be found at: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\XML
  4. Add pdf file type on the File Type page under Search Service Application
  5. Open regedit
  6. Navigate to the following location:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\14.0\Search\Setup\ContentIndexCommon\Filters\Extension
  7. Right-click > Click New > Key to create a new key for .pdf
  8. Add the following GUID in the default value
  • Restart the SharePoint Server Search 14
  • Reboot the SharePoint servers in Farm
  • Create a Test site (with any out-of-box site template) and create a document library upload any sample PDF document(s).
  • Perform FULL Crawl to get search result.
Once the crawl is completed we will get search results.

SharePoint 2010 Foundation
1. Copy the below content to a VBS file and save it (I.E save file name as AddExtension.vbs)


Sub Usage

    WScript.Echo "Usage:    AddExtension.vbs extension"

end Sub

Sub Main

    if WScript.Arguments.Count < 1 then
   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

End Sub

call Main


2. Copy the above script file to Sharepoint Foundation 2010 Server

3. Run it from Command Prompt
> WScript AddExtension.vbs pdf

4.  Register PDF ifilter as below:
4-1.       Find regkey "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\14.0\Search\Setup\ContentIndexCommon\Filters\Extension\"
4-2.       Right-Click – [New]-[Key]. Then specify key name ".pdf"
4-3.       Right-Click (Default) of above ".pdf" key then click "Modify"
4-5.       Specify value "{E8978DA6-047F-4E3D-9C78-CDBE46041603}"
4-6.       Restart SPSearch4

5. Run crawl as below
>stsadm –o spsearch –action fullcrawlstart

6. Confirm the pdf files can be found in search results

PowerShell Configuration
Here is what you need to do:
  • Download and install the Adobe PDF iFilter
  • Configure SharePoint Foundation search service via Central Admin (or PowerShell)
  • Download the Adobe PDF icon (select Small 17 x 17) and save it to a folder on your SharePoint server as pdficon_small.gif
  • Download the script below and place it to the same folder as Adobe PDF Icon
  • Run the script as administrator from Powershell shell
function Get-FileFormatDate {
    param( [DateTime]$Date = [DateTime]::now )
    return $Date.ToUniversalTime().toString( "yyyy-MM-dd_hh-mm-ss" )
if((Get-PSSnapin | Where {$_.Name -eq "Microsoft.SharePoint.PowerShell"}) -eq $null) {
        Add-PSSnapin Microsoft.SharePoint.PowerShell;
$continue = Read-Host "This script will change SharePoint configuration files, registry and will restart your IIS! Would you like to continue (Y/N)"
if($continue -eq "Y")
    Write-Host -ForegroundColor Yellow "Configuring PDF Icon..."
    $SharePointRoot = "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14";
    $DocIconFolderPath = "$SharePointRoot\TEMPLATE\XML";
    $DocIconFilePath = "$DocIconFolderPath\docicon.xml";
    Write-Host "Creating backup of DocIcon.xml file..."
    $dateNow = Get-FileFormatDate
    $backupFile = "$DocIconFolderPath\Backup_DocIcon_" + $dateNow + ".xml"
    Copy-Item $DocIconFilePath $backupFile
    $pdfIcon = "pdficon_small.gif";
    while((Get-Item $pdfIcon) -eq $null)
        Read-Host "$pdfIcon is missing. Download it from and place it to this folder. Press any key to continue...";
    Copy-Item $pdfIcon "$SharePointRoot\Template\Images";
    $pdfNode = select-xml -path $DocIconFilePath -xpath "/DocIcons/ByExtension/Mapping[@Key='pdf']" | select-object -expandProperty Node
    if($pdfNode -eq $null)
         $xml= [xml] (Get-Content $DocIconFilePath)
         $a = $xml.selectSingleNode("/DocIcons/ByExtension")
         $addnode = $xml.createElement("Mapping")
         $keyAttribute = $xml.CreateAttribute("Key")
         $valueAttribute = $xml.CreateAttribute("Value")
    Write-Host -ForegroundColor Yellow "Configuring search crawl extension..."
    $searchServiceApp = Read-Host "Type the name of your search service application (e.g. Search Service Application)"
    $searchApplicationName = Get-SPEnterpriseSearchServiceApplication $searchServiceApp
    if($searchApplicationName -ne $null)
        if(($searchApplicationName | Get-SPEnterpriseSearchCrawlExtension "pdf") -eq $null)
            $searchApplicationName | New-SPEnterpriseSearchCrawlExtension "pdf"
    Write-Host -ForegroundColor Yellow "Updating registry..."
    if((Get-Item -Path Registry::"HKLM\SOFTWARE\Microsoft\Office Server\14.0\Search\Setup\Filters\.pdf") -eq $null)
        $item = New-Item -Path Registry::"HKLM\SOFTWARE\Microsoft\Office Server\14.0\Search\Setup\Filters\.pdf"
        $item | New-ItemProperty -Name Extension -PropertyType String -Value "pdf"
        $item | New-ItemProperty -Name FileTypeBucket -PropertyType DWord -Value 1
        $item | New-ItemProperty -Name MimeTypes -PropertyType String -Value "application/pdf"
    if((Get-Item -Path Registry::"HKLM\SOFTWARE\Microsoft\Office Server\14.0\Search\Setup\ContentIndexCommon\Filters\Extension\.pdf") -eq $null)
        $registryItem = New-Item -Path Registry::"HKLM\SOFTWARE\Microsoft\Office Server\14.0\Search\Setup\ContentIndexCommon\Filters\Extension\.pdf";
        $registryItem | New-ItemProperty -Name "(default)" -PropertyType String -Value "{E8978DA6-047F-4E3D-9C78-CDBE46041603}"
    [System.Environment]::SetEnvironmentVariable("PATH", $Env:Path + ";C:\Program Files\Adobe\Adobe PDF iFilter 9 for 64-bit platforms\bin", "Machine")
    Write-Host -ForegroundColor Yellow "Restarting SharePoint Foundation Search Service..."
    Restart-Service SPSearch4
    Write-Host -ForegroundColor Yellow "Restarting SharePoint Search Service..."
    Restart-Service OSearch14
    Write-Host -ForegroundColor Yellow "Restarting IIS..."
    Write-Host -ForegroundColor Green "Installation completed..."

No comments:

Post a Comment