Конвертируйте docx в pdf с помощью Word Automation Services - PullRequest
1 голос
/ 16 ноября 2010

С помощью этого http://msdn.microsoft.com/en-us/library/ff742315.aspx я попытался сделать преобразование из docx в pdf на sharepoint ... 1) Я создал файл cs на сервере sharepoint ... 2) я скомпилировал файл bat в консоль exe 3) exe запускается, но выдает исключение System.NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта.

Файлы существуют и доступны для редактирования по адресу \ mysrv \ sites \ casedocs \ Documents \ ElfDev \ 10080003 и по адресу https: \ mysrv \ sites \ casedocs \ Documents \ ElfDev \ 10080003, последний без ошибки сертификата.

1) Файл Cs ...

using System ; 
using System.Collections.Generic ; 
using System.Linq ; 
using System.Text ; 
using Microsoft.SharePoint ; 
using Microsoft.Office.Word.Server.Conversions ; 
class Program
{
  static void Main( string[] args )
  {
 string siteUrl = "https://mysrv" ; 
 string wordAutomationServicesName = "Word Automation Services" ; 
 string source = siteUrl + "/sites/casedocs/Documents/ElfDev/10080003/JK1.docx" ; 
 string target = siteUrl + "/sites/casedocs/Documents/ElfDev/10080003/jk1.pdf" ; 
 using( SPSite spSite = new SPSite(siteUrl) ) 
 {
   ConversionJob job = new ConversionJob(wordAutomationServicesName ) ; 
   job.UserToken = spSite.UserToken ; 
   job.Settings.UpdateFields = true ; 
   job.Settings.OutputFormat = SaveFormat.PDF ; 
      // System.Null reference exception on next line ...
   job.AddFile( source ,  target   )  ; 
 }
  }
}

2) Файл bat компилятора ...

csc /out:d2p.exe /target:exe d2pMain.cs /r:"C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.SharePoint.dll" /r:"C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.Office.Word.Server.dll"

3. Полное исключение ...

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.Office.Word.Server.FolderIterator.CheckInputFile(SPListItem item )
   at Microsoft.Office.Word.Server.FolderIterator.CheckSingleItem(SPFile inputFile, SPFile outputFile)
   at Microsoft.Office.Word.Server.Conversions.ConversionJob.AddFileCore(String inputFileName, String outputFileName)
   at Microsoft.Office.Word.Server.Conversions.ConversionJob.AddFile(String inputFile, String outputFile)   at Program.Main(String[] args)

Похоже, он не видит входной файл, но a) \ mysrv \ sites \ casedocs \ Documents \ ElfDev \ 10080003 \ jk1.docx откроет файл в Word 2010 а также б) https://mysrv/sites/casedocs/Documents/ElfDev/10080003/jk1.docx открывает файл в Word 2010

1 Ответ

1 голос
/ 21 января 2012

Проблема заключается в том, что при запуске в консольном приложении у вас нет HTTP-контекста при использовании версии Microsoft.SharePoint.dll для сервера.

Код взрывается, потому что оножидая наличия содержимого HTTP в переменной Microsoft.SharePoint.SPContext.

Чтобы этот код работал, необходимо запустить его на веб-сервере SharePoint IIS.

Преобразовать код вкласса, скомпилируйте его в пакет функций и решений SharePoint (.WSP) и разверните на ферме SharePoint.Тогда код будет работать, потому что объект Microsoft.SharePoint.SPContent будет заполнен и не будет иметь значение null.

...