使用Word Automation Services将docx转换为pdf

时间:2010-11-16 11:50:14

标签: sharepoint service ms-word automation office-automation

http://msdn.microsoft.com/en-us/library/ff742315.aspx的帮助下,我尝试在sharepoint上从docx转换为pdf ... 1)我在sharepoint服务器上创建了一个cs文件... 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中打开文件 和 b)https://mysrv/sites/casedocs/Documents/ElfDev/10080003/jk1.docx在Word 2010中打开文件

1 个答案:

答案 0 :(得分:1)

问题是在控制台应用程序中运行时,如果使用的是Microsoft.SharePoint.dll的服务器版本,则没有HTTP上下文。

代码爆炸,因为它希望在Microsoft.SharePoint.SPContext变量中包含HTTP内容。

为了使此代码有效,您必须在SharePoint IIS Web服务器中运行它。

将代码转换为类,将其编译为SharePoint功能和解决方案包(.WSP)并将其部署到SharePoint场。然后代码将起作用,因为Microsoft.SharePoint.SPContent将被填充并且不会为null。