1

このhttp://msdn.microsoft.com/en-us/library/ff742315.aspxの助けを借りて、共有ポイントでdocxからpdfへの変換を試みました... 1)共有ポイントサーバーにcsファイルを作成しました。 .. 2) バット ファイルを使用してコンソール 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)コンパイラバットファイル...

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 でファイルを開きます

4

1 に答える 1

1

問題は、コンソール アプリケーション内で実行しているときに、サーバー バージョンの Microsoft.SharePoint.dll を使用しているときに HTTP コンテキストがないことです。

Microsoft.SharePoint.SPContext 変数に HTTP コンテンツが含まれていることを想定しているため、コードが失敗します。

このコードを機能させるには、SharePoint IIS Web サーバー内で実行する必要があります。

コードをクラスに変換し、それを SharePoint 機能およびソリューション パッケージ (.WSP) にコンパイルして、SharePoint ファームに展開します。Microsoft.SharePoint.SPContent が設定され、null にならないため、コードは機能します。

于 2012-01-20T21:25:59.680 に答える