0

我正在尝试使用 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. 文本作家作家
4

1 回答 1

1

正弦你需要输出作为一个字符串你可以尝试做这样的事情

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

于 2020-07-09T14:49:32.957 回答