好的,所以我終於解決了我的問題。總結起來,我的問題是:「如何在自動化Word 2003應用程序上處理DOCX文檔」,並且發現比使用Converter SDK更簡單的解決方案。
我必須做什麼來獲得成功的轉化率(從同一個問題,我問在MSDN複製/粘貼):
- 檢測,如果我的文檔是DOCX文檔(擴展名是不相關的 ,我需要檢查文件簽名)
- 獲取對應的Word 2007轉換器(當然, 兼容包是必需的)
- 與FileConverter的OpenFormat打開文件作爲一個參數FileConverter對象 「Documents.O筆「的方法。
下面是代碼的一些摘錄:
OpenDoc(CString inFileName, BOOL tryAgain) {
m_oDoc = NULL;
FileConverter fc = NULL;
// isDocxFile checks the file signature
BOOL isDocX = isDocxFile(inFileName);
FileConverters fcList = m_oWordApp.GetFileConverters();
if (fcList.GetCount() > 1) {
// Beginning the loop on "0" won't work. The fcList starts at 1.
for (long i=1; i < fcList.GetCount() + 1; i++) {
FileConverter fcTemp = fcList.Item(COleVariant((long) i));
if (fcTemp.GetClassName() == "Word12") {
fc = fcTemp;
}
}
}
if (isDocX) {
m_oDoc = m_oDocs.Open( COleVariant(inFileName), //FileName
vFalse, //ConfirmConversions
vTrue, //ReadOnly
vFalse, //AddToRecentFiles
vOpt, //PasswordDocument
vOpt, //PasswordTemplate
vFalse, //Revert
vOpt, //WritePasswordDocument
vOpt, //WritePasswordTemplate
COleVariant(fc.GetOpenFormat()), //Format
vOpt, //Encoding
vOpt); //Visible
}
else
{
m_oDoc = m_oDocs.Open( COleVariant(inFileName), //FileName
vFalse, //ConfirmConversions
vTrue, //ReadOnly
vFalse, //AddToRecentFiles
vOpt, //PasswordDocument
vOpt, //PasswordTemplate
vFalse, //Revert
vOpt, //WritePasswordDocument
vOpt, //WritePasswordTemplate
vOpt, //Format
vOpt, //Encoding
vOpt); //Visible
}
}
有了這一切後,我的文檔可以被正確地呈現,並保存爲RTF,如果需要的話。