如何准确确定SPFile实例是否是转换后的文件?

时间:2009-04-08 20:05:54

标签: sharepoint moss openxml

我一直致力于使用MOSS 2007将docx文件转换为pdf文件的文档转换功能。在ItemAdded事件中调用SPFile.Convert(),并且也可以调用ItemFileConverted事件。事件似乎工作正常,但转换的SPFile实例的IsConvertedFile和SourceLeafName属性并不总是由转换过程设置。这就是我试图用来确定是否应该调用SPFile.Convert。

在深入研究SPFile IsConvertedFile,GeneratingConverterId和SourceLeafName属性的代码时,似乎它们基于SPFile.Properties“vti_dttransformerid”和“vti_dtparentleafname”。问题是,每当我在ISPConversionProcessor.PostProcess()实现中有代码时,我都希望对文件进行一些后期处理,这两个属性都没有设置。如果PostProcess方法中没有代码(只有runDefaultPostProcessing = true;语句),则属性设置得更加一致。

我在这里有一些额外的详细信息in a Wiki page关于发生了什么,但是使用.NET Reflector确定这些字段的更新位置来自OWSTIMER.EXE的砖墙(我可以找到所有的读取内容)属性,但即使是HtmlLauncher和LoadBalancer服务也没有提到这些属性。)

是否有人完成了文档转换,并成功使用了SPFile.IsConvertedFile和SPFile.SourceLeafName属性?

2 个答案:

答案 0 :(得分:0)

我已经为SharePoint创建了一个PDF转换器,但没有使用文档转换器功能,因为它不符合我们的需求,并且不够灵活。

不确定此回复是否会被视为垃圾邮件,因为我现在要将您链接到可以下载免费试用版的地方。 Download PDF Converter for SharePoint.

我现在感觉有点脏,但我可能实际上帮助了你; - )

答案 1 :(得分:0)

如果您不能信任API,请将IsConverted元数据存储在SPListItem的属性包中。或者,如果您希望在UI中显示它,请在列表中添加其他字段。这应该都可以从事件处理程序中正常工作。

做额外的工作很烦人,但我想可能还有其他的元数据,你可以添加哪些SPFile无法提供。