2010-11-16 55 views
1

在此http://msdn.microsoft.com/en-us/library/ff742315.aspx的帮助下,我试着在doc sharepoint上做了从docx到pdf的转换...... 1)我在Sharepoint服务器上创建了一个cs文件... 2)I编译与一个bat文件到一个控制台EXE 3)该exe运行,但给出一个异常System.NullReferenceException:对象引用未设置为对象的实例。将docx转换为pdf与Word自动化服务

这些文件存在且可在\ 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

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

代码因为期望在Microsoft.SharePoint.SPContext变量中具有HTTP内容而爆炸。

为了使此代码正常工作,您必须在SharePoint IIS Web服务器中运行它。

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