使用C#Socket类并丢失Word文件中的格式

时间:2017-05-18 14:56:43

标签: c# sockets network-programming syncfusion

我正在使用该代码,它将使用网络打印机打印文档:

 Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
 socket.NoDelay = true;

 IPAddress ip = IPAddress.Parse(ip);
 IPEndPoint ipEndPoint = new IPEndPoint(ip, someport);
 socket.Connect(ipEndPoint);


 socket.Send(_byteArray);
 socket.Close();

该代码有效,但我丢失了Word文档中的格式。

Byte-Array来自哪里?

我正在使用Syncfusion-library(相关代码段):

... someMethod(){

WordDocument word = new WordDocument();
//... some code
word.Save(myMemoryStream, FormatType.Docx);
_byteArray=myMemoryStream.ToArray(); //Comment on Syncfusion-library: "Writes the stream contents to a byte array, regardless of the System.IO.MemoryStream.Position"

word.Close();
}

我可以在这做什么?

1 个答案:

答案 0 :(得分:1)

我怀疑您可能没有在生产环境中安装字体(在Word文档中使用)。如果是这样,请在生产环境中安装所有使用过的字体以解决报告的问题。

如果您没有修改任何Word文档内容,则可以尝试以下代码。

 // Open Word document using FileStream.
FileStream fileStream = new FileStream("input.docx", FileMode.Open);
// Copy file stream to MemoryStream.
MemoryStream memoryStream = new MemoryStream();
fileStream.CopyTo(memoryStream);
// Gets byte array from memory stream of file.
byte[] temp = memoryStream.ToArray(); 

如果您遇到同样的问题,那么输入文档中使用的字体可能不会安装在您的生产环境中,因此请安装所有使用过的字体来解决问题。

如果您没有遇到此方法中报告的问题,请与您的输入和结果Word文档分享您的代码以进一步验证。