.docx ファイルをバイト配列として取得しています。次に、上記のバイト配列をデータ パラメータとして Doc の read() 関数を呼び出そうとしていますが、認識できないファイル拡張子エラーが発生しています。
次の (c#) コードでバイト配列を取得します。
WebClient testWc = new WebClient();
testWc.Credentials = CredentialCache.DefaultCredentials;
byte[] data = testWc.DownloadData("http://localhost/Lists/incidents/Attachments/1/Testdocnospaces.docx");
この時点で、バイト配列を .docx ファイルとして出力すると、プログラムでファイルを正しく開いたり保存したりできます。このため、バイト配列は正しく取得されていると思います。以下は、.docx ファイルを出力するという意味のサンプルです。
Response.ClearHeaders();
Response.Clear();
Response.AppendHeader("Content-Disposition", "attachment;Filename=test.docx");
Response.BinaryWrite(data);
Response.Flush();
Response.End();
ただし、バイト配列を Doc に読み込もうとすると、次のようになります。
Doc doc = new Doc();
XReadOptions xr = new XReadOptions();
xr.ReadModule = ReadModuleType.MSOffice;
doc.Read(data, xr);
私のプログラムは、上記のコードの最後の行でエラーになり、「FileExtension '' was invalid for ReadModuleType.MSOffice.」がスローされます。</p>
Doc.Read() 関数は、通常はファイルの種類を見つける場所で空の文字列を見つけているようです。また、このマシンには Office 2007 がインストールされています。