Сохранение преобразования файла в переменную вместо физического местоположения - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь использовать XML - Mind converter https://www.xmlmind.com/foconverter/ для преобразования некоторых xsl-fo в rtf, и это хорошо работает. Чтобы прояснить, здесь нет c ничего специфического для конвтера или его функций, а просто пояснение, которое я хотел бы получить, поэтому я спрашиваю об этом при переполнении стека.

Итак, у меня есть следующий код ( это было получено из некоторой документации)

string foFilePath = @"D:\Temp\test.fo";
string ourPutFilePath = @"D:\Temp\test.rtf";


                Converter converter = new Converter();
                converter.OutputFormat = OutputFormat.Rtf;
                converter.OutputEncoding = "windows-1252";
                converter.ImageResolution = 120;


                converter.SetInput(foFilePath);
                converter.SetOutput(ourPutFilePath);
                
                converter.Convert();

То, что происходит здесь, довольно просто Считывает файл из входного пути и сохраняет преобразованный файл в указанном выходе. Вопрос, который я хотел бы уточнить здесь, заключается в том, можно ли сохранить это содержимое, которое сохраняется в пути вывода файла в переменной, чтобы можно было выполнять некоторую обработку во время выполнения приложения?

Может я смогу использовать MemoryStream для этого? Я просто не уверен, как это сделать, и был бы очень признателен за помощь здесь.

Я понимаю, что всегда могу прочитать его обратно из пути вывода файла, но я ищу что-то получше, как сохранение файл в определенное место может не всегда быть возможным в моем случае

EDIT: - Метод convert.SetOutput () допускает 3 перегрузки в параметрах

  1. String fileName
  2. Поток потока
  3. Автор TextWriter

1 Ответ

1 голос
/ 09 июля 2020

Синус, вам нужен вывод в виде строки, вы можете попробовать сделать что-то вроде этого

      string content;
      using (var stream = new MemoryStream())
      {
        using (var writer = new StreamWriter(stream))
        {
          Converter converter = new Converter();
          converter.OutputFormat = OutputFormat.Rtf;
          converter.OutputEncoding = "windows-1252";
          converter.ImageResolution = 120;
          converter.SetInput(foFilePath);
          converter.SetOutput(writer);
          converter.Convert();
          stream.Position = 0;
          content = Encoding.UTF8.GetString(stream.ToArray());
        }
      } 

Я не уверен в кодировке, хотя, если Convert() использует другую кодировку, это может не работа

...