【问题标题】:Convert docx to pdf with Word Automation Services使用 Word Automation Services 将 docx 转换为 pdf
【发布时间】:2015-02-25 08:13:00
【问题描述】:

http://msdn.microsoft.com/en-us/library/ff742315.aspx 的帮助下,我尝试在 sharepoint 上进行从 docx 到 pdf 的转换... 1)我在sharepoint服务器上创建了一个cs文件...... 2)我用一个bat文件编译到一个控制台exe 3) exe运行但出现异常 System.NullReferenceException: Object reference not set to an instance of an object.

文件在 \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 中打开文件

【问题讨论】:

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


    【解决方案1】:

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

    代码崩溃了,因为它期望在 Microsoft.SharePoint.SPContext 变量中包含 HTTP 内容。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-06
      • 2016-11-20
      • 2011-07-29
      • 2011-12-02
      • 1970-01-01
      相关资源
      最近更新 更多