设为首页 收藏本站
查看: 890|回复: 0

[经验分享] [SharePoint 2010]使用Word Automation Service将Word转换为PDF

[复制链接]

尚未签到

发表于 2015-9-28 12:10:25 | 显示全部楼层 |阅读模式
  最近的一个项目中遇到一个超级恶心的需求,用户要求从列表项自动的生成PDF文件,这个需求可以说是把小弟我折磨的死去活来。其实生成PDF这种需求很常见,个人觉得让用户先创建一份Word文档,然后再从Word转换为PDF是最好也是最方便的方式,因为在Word中用户可以非常方便的调整文档的格式,而用代码生成PDF的话对于格式的控制是很麻烦的,且非常的不灵活,而且Word也是支持直接保存为PDF格式的,只需点击一下就可以了,但往往最终用户不愿意采用这种手动的方式,客户就是希望能够实现一切都是自动化的。好了,废话不多说了,下面为大家介绍一下在SharePoint 2010中如何使用Word Automation Service来实现自动的将Word转换为PDF。
  Word Automation Service是SP 2010中新加入的一个服务应用程序,它的作用就是帮助我们将保存在SharePoint 文档库中的Word文档转换为其它格式的文件。它所支持的文件格式可以在SharePoint管理中心里的管理服务应用程序中点击Word Automation Service服务,进入Word Automation Services设置页面查看。不难看出基本上Word 2010所支持的文件格式Word Automation Service也支持。
DSC0000.png
  Word Automation Service支持的目标文件格式为:.docx, .docm, .dotx, .dotm, .doc, .dot, .rtf, .mht, .mhtml, .xml (Word xml), PDF, XPS
  下面我将通过一个例子来为大家展示如何利用Word Automation Service将一份Word格式的文档转换为PDF格式的文档。
  首先打开VS 2010创建一个空白的SharePoint项目。需要注意的是要使用Word Automation Service的话,我们就不能使用沙箱解决方案,而只能使用场解决方案。
  在Word Automation Service API中微软为我们提供了三种将Word文档转换为PDF 文档的方法,它们分别是:
  AddFile()
  AddFolder()
  AddLibrary()
  下面的例子中我会使用AddLibrary()方法来将一个文档库中所有的文档都转换为PDF文件。
  项目创建好后,首先要做的就是添加Microsoft.Office.Word.Server的引用,这个dll可以在<path>\14\ISAPI\Microsoft.Office.Word.Server.dll中找到。
DSC0001.png
  项目创建好后就可以编写代码了。哦,写代码前别忘了添加下面两个命名空间。
  


using  Microsoft.Office.Word.Server.Service;
using  Microsoft.Office.Word.Server.Conversions;


  
  第一步就是要获得WordServiceApplicationProxy对象,需要注意的是我们可以使用SPServiceContext .Current.GetDefaultProxy()方法动态的获得一个默认的Word Automation Service代理对象,而不需要将该服务代理的对象写死在代码中。
   第二步就是实例化一个ConversionJob对象。
  
  


var m_ wordAutomationProxy = (WordServiceApplicationProxy ) SPServiceContext .Current.GetDefaultProxy(typeof (WordServiceApplicationProxy ));
var m_conversionJob = new ConversionJob (wordAutomationProxy);


  接下来我们要做的 就是为这个 ConversionJob对象指定一个用户 凭据,以及 一个 名称和最终要转换成的格式。



m_conversionJob.UserToken = SPContext.Current.Web.CurrentUser.UserToken;
m_conversionJob.Name = "WordToPdf.ConversionJon";
m_conversionJob.Settings.OutputFormat = SaveFormat.PDF;

  最后就是调用ConversionJob对象的AddLibrary ()方法,这个方法需要两个参数,分别是源文档库对象和目标文档库对象。
  下面是完整的代码:
  


protected void ConvertBtn_Click(object sender, EventArgs e)
{
try
{
//源文档库
SPList m_wordList = SPContext.Current.Web.Lists["Word文档库"];
//目标文档库
SPList m_pdfList = SPContext.Current.Web.Lists["PDF文档库"];
var m_wordAutomationService = (WordServiceApplicationProxy)SPServiceContext.Current.GetDefaultProxy(typeof(WordServiceApplicationProxy));
var m_conversionJob = new ConversionJob(m_wordAutomationService);
m_conversionJob.UserToken = SPContext.Current.Web.CurrentUser.UserToken;
m_conversionJob.Name = "WordToPdf.ConversionJon";
m_conversionJob.Settings.OutputFormat = SaveFormat.PDF;
m_conversionJob.AddLibrary(m_wordList, m_pdfList);
m_conversionJob.Start();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}


  当运行上面这段代码后会创建一个ConvertsionJob,它会附加到Word Conversion Timer Job中,当这个Timer Job运行后,我所指定的文档库中的所有Word文件都将被转换为PDF文件并保存到PDF库中,最后让我们一起来看看最终的效果如何。
DSC0002.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-119969-1-1.html 上篇帖子: 深入浅出SharePoint ——2010 新特性之搜索 下篇帖子: 建立Sharepoint 2010开发环境
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表