Я работал над функцией преобразования документов для преобразования файла docx в файл pdf с помощью MOSS 2007. В событии ItemAdded вызывается SPFile.Convert (), и событие ItemFileConverted также запускается нормально. Кажется, что события работают нормально, но свойства IsConvertedFile и SourceLeafName преобразованного экземпляра SPFile не всегда устанавливаются процессом преобразования. Это то, что я пытался использовать, чтобы определить, должен ли быть выполнен вызов SPFile.Convert.
При копании в код свойств SPFile IsConvertedFile, GeneratingConverterId и SourceLeafName кажется, что они основаны на SPFile.Properties "vti_dttransformerid" и "vti_dtparentleafname". Проблема в том, что эти два свойства не устанавливаются согласованно всякий раз, когда у меня есть код в моей реализации ISPConversionProcessor.PostProcess (), в котором я надеялся выполнить некоторую постобработку файла. Если в методе PostProcess нет кода (только runDefaultPostProcessing = true; оператор), свойства устанавливаются более согласованно.
У меня есть некоторые дополнительные подробности здесь на вики-странице о том, что происходит, но использование .NET Reflector, чтобы определить, где обновляются эти поля, попало в кирпичную стену на OWSTIMER.EXE (я мог найти все чтения свойств, но даже службы HtmlLauncher и LoadBalancer не упоминали об этих свойствах).
Кто-нибудь выполнил полную реализацию преобразования документов и успешно использовал свойства SPFile.IsConvertedFile и SPFile.SourceLeafName?