C# передача byte[] файла pdf из приложения в другое и обратное преобразование
Есть pdf файл, который парсится в массив byte[] в консольном приложении и выводится значение на консоль.
static void Main(string[] args)
{
if (args.Count() < 1)
return;
string fileName = args[0];
string publicAddress = "someaddress";
if (!Directory.Exists(publicAddress))
{
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe ";
startInfo.Arguments = " /C" + @" net use Z: \ *some commands*";
process.StartInfo = startInfo;
Process.Start(startInfo);
}
DirectoryInfo dir = new DirectoryInfo(publicAddress);
var file = dir.GetFiles(fileName).FirstOrDefault();
if (file == null)
{
Console.WriteLine("File not found");
}
else
{
byte[] bytes = System.IO.File.ReadAllBytes(file.FullName);
Console.WriteLine(System.Text.Encoding.UTF8.GetString(bytes));
}
}
С другой стороны приложение считывает поток данных из строки, которое преобразует данную строку обратно в массив байтов с помощью и пытается вернуть заново собранную pdf. Но совпадают только количество страниц - в основном, они пустые.
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"C:\Dist\GetBytesOfFile\GetBytesOfFile.exe";
startInfo.Arguments = fileName;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = false;
Process p = Process.Start(startInfo);
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
int exitCode = p.ExitCode;
byte[] bytes = Encoding.UTF8.GetBytes(output);
using (MemoryStream stream = new MemoryStream())
{
stream.Write(bytes, 0, bytes.Length);
stream.Position = 0;
return new FileStreamResult(stream, "application/pdf") { FileDownloadName = fileName };
}
Что я упускаю при создании FileResultStream?
Источник: Stack Overflow на русском