将文件转换保存到变量而不是物理位置

Saving File conversion to variable instead of physical location

我正在尝试使用 XML - Mind 转换器 https://www.xmlmind.com/foconverter/ 将一些 xsl-fo 转换为 rtf,效果很好。需要明确的是,这不是转换器或其功能所特有的,只是我想得到的澄清,这就是为什么我在堆栈溢出时提出这个问题。

所以我有以下代码(从一些文档中获得)

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 来做?我只是不确定该怎么做,非常感谢您的帮助。

我知道我总是可以从文件输出路径读回它,但我正在寻找比这更好的东西,因为在我的情况下可能并不总是可以将文件保存到某个位置

编辑:- converter.SetOutput() 方法允许参数中有 3 个重载

  1. 字符串文件名
  2. 流流
  3. TextWriter 编写器

因为你需要输出字符串,你可以尝试做这样的事情

      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() 使用不同的编码,这可能不起作用