打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[SharePoint 2010]使用Word Automation Service将Word转换为PDF
最近的一个项目中遇到一个超级恶心的需求,用户要求从列表项自动的生成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也支持。
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中找到。
项目创建好后就可以编写代码了。哦,写代码前别忘了添加下面两个命名空间。
1
2
using  Microsoft.Office.Word.Server.Service;
using  Microsoft.Office.Word.Server.Conversions;
第一步就是要获得WordServiceApplicationProxy对象,需要注意的是我们可以使用SPServiceContext .Current.GetDefaultProxy()方法动态的获得一个默认的Word Automation Service代理对象,而不需要将该服务代理的对象写死在代码中。
第二步就是实例化一个ConversionJob对象。
1
2
3
var m_ wordAutomationProxy = (WordServiceApplicationProxy ) SPServiceContext .Current.GetDefaultProxy(typeof (WordServiceApplicationProxy ));
var m_conversionJob = new ConversionJob (wordAutomationProxy);
接下来我们要做的 就是为这个 ConversionJob对象指定一个用户 凭据,以及 一个 名称和最终要转换成的格式。
1
2
3
4
5
m_conversionJob.UserToken = SPContext.Current.Web.CurrentUser.UserToken;
m_conversionJob.Name = "WordToPdf.ConversionJon";
m_conversionJob.Settings.OutputFormat = SaveFormat.PDF;
最后就是调用ConversionJob对象的AddLibrary ()方法,这个方法需要两个参数,分别是源文档库对象和目标文档库对象。
下面是完整的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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库中,最后让我们一起来看看最终的效果如何。
分类: SharePoint 2010
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
将PDF文件转化成为Word文档的神技能,你知道吗
PDF转Word怎么转 多种方法可实现 violet的馨驻客栈
Word与PDF互转,还在用工具?你out了!
对PDF动刀 Word 2013支持PDF文档编辑
微软:PDF是文档的坟墓
如何新建PDF文档
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服