Как точно определить, является ли экземпляр SPFile преобразованным файлом? - PullRequest
1 голос
/ 09 апреля 2009

Я работал над функцией преобразования документов для преобразования файла 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?

Ответы [ 2 ]

0 голосов
/ 17 апреля 2009

Если вы не можете доверять API, сохраните метаданные IsConverted в пакете свойств для SPListItem. Или, если вы предпочитаете показывать его в пользовательском интерфейсе, добавьте другое поле в свой список. Это все должно работать нормально из обработчика событий.

Досадно выполнять дополнительную работу, но я думаю, что могут быть дополнительные метаданные, которые можно добавить, которые SPFile не смог бы предоставить в любом случае.

0 голосов
/ 13 апреля 2009

Я создал PDF Converter для SharePoint, но не использовал функциональность Document Converter, поскольку он не соответствовал нашим потребностям и был недостаточно гибким.

Не уверен, будет ли этот ответ рассылаться как спам, поскольку сейчас я собираюсь связать вас с местом, где вы можете скачать бесплатную пробную версию. Скачать PDF Converter для SharePoint.

Теперь я чувствую себя немного грязно, но, возможно, я действительно помог вам; -)

...