1

我一直在研究使用 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; 语句),则属性设置更加一致。

在 Wiki 页面中有一些关于正在发生的事情的其他详细信息,但是使用 .NET Reflector 来确定这些字段的更新位置是在 OWSTIMER.EXE 的一堵墙(我可以找到属性的所有读取,但是甚至 HtmlLauncher 和 LoadBalancer 服务也没有提到这些属性)。

有没有人完成了完整的文档转换实现并成功使用了 SPFile.IsConvertedFile 和 SPFile.SourceLeafName 属性?

4

2 回答 2

0

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

不确定此回复是否会作为垃圾邮件被丢弃,因为我现在要将您链接到可以下载免费试用版的地方。下载适用于 SharePoint 的 PDF 转换器。

我现在觉得有点脏,但我可能真的帮助了你;-)

于 2009-04-13T13:39:15.660 回答
0

如果您不能信任 API,请将 IsConverted 元数据存储在 SPListItem 的属性包中。或者,如果您更喜欢在 UI 中显示它,请将另一个字段添加到您的列表中。这应该从事件处理程序中正常工作。

做额外的工作很烦人,但我想可能会有额外的元数据,你可以添加 SPFile 无论如何都无法提供的元数据。

于 2009-04-17T12:29:23.653 回答