我正在使用 Qt 编写程序。我希望它输出到 .doc 以保留格式,但 Qt 支持的只是纯文本、ODF 和 HTML 格式。ODF 和 HTML 将保留格式,但我必须将其复制并粘贴到 .doc 文件中。
我希望能够保存 .doc 文件而不必担心这样做。我用谷歌搜索了很多次,但我还没有找到解决方案。
创建有效 .doc 文件的唯一方法是使用 Microsoft Office。可以使用 OLE 自动化从您的程序中完成(更多关于该问题的信息 - 为什么 Microsoft Office 文件格式如此复杂?(以及一些解决方法))。
Qt 提供了用于处理 COM 对象的 ActiveQt 框架。因此,您可以使用其 COM 接口加载 Word 并将 .html 转换为 .doc。当然,必须安装 MS Office。
当您说“.doc”格式时,我假设您指的是 Microsoft Word 使用的“Word 97-2003 文档”格式。Microsoft Office 可以很好地打开 .html 文件,所以你可以走这条路。如果在运行程序的某台计算机上安装了 Word,则可以将数据复制到剪贴板并使用自动化让 Word 将其粘贴并以 .doc 格式保存。
您具体使用什么格式?
正如您所说,QTextDocumentWriter
仅支持纯文本、ODF 和 HTML 格式。
如果您只需要在 Windows 上阅读您的文档,您可以生成 PDF 而不是尝试生成 .doc:
QPrinter printer;
QTextDocument document;
//TODO: Put stuff to print in your 'document'
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName("/foobar/nonwritable.pdf");
document.print( printer );
另一种可能的解决方案是,如果您必须在 Word 中修改文档,请尝试使用Word 2003 的 ODF 插件来打开您的 ODF 文件。
还有另一种选择......实际上你可以称之为黑客,但它是一种简单的方法,因为我自己发现它。
瞧;你有你的 .doc 文件。